articles
articles copied to clipboard
ReadDaily-2023
2023
一年多没有更新每日阅读了,一方面因为入职新公司换了两次工作方向,做了很多不同的研究,阅读了很多相关的文章,觉得记录麻烦就索性不写了,再加上加班也多了,所以自己就慢慢懈怠了,可能今后会每个月更新几篇自己阅读的,并且觉得还不错的文章,更新频率不会是每天,驱动自己跟上技术进步吧
20231219
-
R大很多关于编译原理/IR等的知乎回答: https://www.cnblogs.com/WCFGROUP/p/6511485.html
很多内容,从来没有接触过,可以尝试着看看,并且可以通过询问chatgpt的方式看看
-
https://retr0.zip/blog/abusing-Liftoff-assembly-and-efficiently-escaping-from-sbx.html
使用v8的liftoff编译器来绕过v8的沙盒操作,其中会用到了两种方式来触发漏洞
- memory corruption APIs来触发异常访问addrOf,v8_read64,v8_write64
- CVE-2023-3079
没有找到完整的利用代码,以后可能这部分技术还需要再补充
20231221
-
分析了19号liftoff编译器构造shellcode绕过沙盒中利用的cve
https://github.com/mistymntncop/CVE-2023-3079
主要更改代码涉及到
diff --git a/src/ic/ic.cc b/src/ic/ic.cc index 05ee161..3bc8653 100644 --- a/src/ic/ic.cc +++ b/src/ic/ic.cc @@ -2303,10 +2303,18 @@ receiver_map->has_sealed_elements() || receiver_map->has_nonextensible_elements() || receiver_map->has_typed_array_or_rab_gsab_typed_array_elements()) { + // TODO(jgruber): Update counter name. TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreFastElementStub); - code = StoreHandler::StoreFastElementBuiltin(isolate(), store_mode); - if (receiver_map->has_typed_array_or_rab_gsab_typed_array_elements()) { - return code; + if (receiver_map->IsJSArgumentsObjectMap() && + receiver_map->has_fast_packed_elements()) { + // Allow fast behaviour for in-bounds stores while making it miss and + // properly handle the out of bounds store case. + code = StoreHandler::StoreFastElementBuiltin(isolate(), STANDARD_STORE); + } else { + code = StoreHandler::StoreFastElementBuiltin(isolate(), store_mode); + if (receiver_map->has_typed_array_or_rab_gsab_typed_array_elements()) { + return code; + } } } else if (IsStoreInArrayLiteralIC()) { // TODO(jgruber): Update counter name. @@ -2317,7 +2325,7 @@ TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_StoreElementStub); DCHECK(DICTIONARY_ELEMENTS == receiver_map->elements_kind() || receiver_map->has_frozen_elements()); - code = StoreHandler::StoreSlow(isolate(), store_mode); + return StoreHandler::StoreSlow(isolate(), store_mode); } if (IsAnyDefineOwn() || IsStoreInArrayLiteralIC()) return code;
看了其部分的分析文章:https://gist.github.com/MaxBWMinRTT/bd47b17cac9eef20efe3040b5a50e043
如果需要构造poc的话,有几点需要注意
下面两个条件需要满足
- IsJSArgumentsObject
- fast packed elements
并且根据上一个的条件判断
- NOT has_sloppy_arguments_elements, so it MUST be strict arguments
结论:
- strict arguments object
- non STANDARD_STORE store mode
20231225
文章: https://www.thezdi.com/blog/2021/11/17/mindshare-using-io-ninja-to-analyze-npfs https://org.anize.rs/HITCON-2022/pwn/fourchain-hole
20231226
阅读wtf相关文档: https://blog.talosintelligence.com/snapshot-fuzzing-direct-composition-with-wtf/ 文章介绍了使用wtf开发了一个自定义模糊器,通过实施测试案例生成和变异、序列化和反序列化测试案例、修补Bochscpu后端和将dcpreter注入到dwm.exe中等策略,并且使用到了protobuf来编译输入的指令
文中有两处需要注意
- 通过注入dll的方式来fuzz测试目标,这种以前听过但是没有详细研究过
- 通过protobuf如何来实现fuzz指令,这个也没有看到具体的实现
20231227
阅读文章: https://www.fortinet.com/blog/threat-research/microsoft-message-queuing-service-vulnerabilities 文章是使用了fuzz的方式来测试windows的mqs服务
文章主要有两点需要注意
- 注入一个custom dll,hook ResumeThread,把这个dll当做一个监控debugger,这个方式,以前没用过,只是听过,跟上一个文章提到应该是一个方法需要详细研究一下
- 文章不使用protobuf来做格式的变异,直接自己定义了结构,根据结构来进行变异
延伸:windows gui fuzz: https://www.ndss-symposium.org/wp-content/uploads/ndss2021_6A-3_24334_paper.pdf