articles icon indicating copy to clipboard operation
articles copied to clipboard

ReadDaily-2023

Open xinali opened this issue 1 year ago • 0 comments

2023

一年多没有更新每日阅读了,一方面因为入职新公司换了两次工作方向,做了很多不同的研究,阅读了很多相关的文章,觉得记录麻烦就索性不写了,再加上加班也多了,所以自己就慢慢懈怠了,可能今后会每个月更新几篇自己阅读的,并且觉得还不错的文章,更新频率不会是每天,驱动自己跟上技术进步吧

20231219

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

    结论:

    1. strict arguments object
    2. 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来编译输入的指令

文中有两处需要注意

  1. 通过注入dll的方式来fuzz测试目标,这种以前听过但是没有详细研究过
  2. 通过protobuf如何来实现fuzz指令,这个也没有看到具体的实现

20231227

阅读文章: https://www.fortinet.com/blog/threat-research/microsoft-message-queuing-service-vulnerabilities 文章是使用了fuzz的方式来测试windows的mqs服务

文章主要有两点需要注意

  1. 注入一个custom dll,hook ResumeThread,把这个dll当做一个监控debugger,这个方式,以前没用过,只是听过,跟上一个文章提到应该是一个方法需要详细研究一下
  2. 文章不使用protobuf来做格式的变异,直接自己定义了结构,根据结构来进行变异

延伸:windows gui fuzz: https://www.ndss-symposium.org/wp-content/uploads/ndss2021_6A-3_24334_paper.pdf

xinali avatar Jan 15 '24 08:01 xinali