IOSurface中的OS X/iOS内核UAF漏洞分析

###在没有获得引用的情况下,IOSurfaceRootUserClient在+0xf0地址通过IOServiceOpen存储了一个任务结构指针。

###通过kill相应的任务,我们可以释放掉这个指针,从而为用户端留下一个挂起指针。

###通过调用create_surface_fast_path 外部方法我们可以得到这个指针,这个方法将会尝试读取和使用这块已被释放的任务结构的内存映射。

###这个bug可以被用来引发内核内存崩溃,这可以通过一些有趣的沙箱比如safari或者chrome来实现。

###build: clang -o surfaceroot_uaf surfaceroot_uaf.c -framework IOKit

###你要设置gzalloc_min=1024,gzalloc_max=2048 或者类似于UAF的实际错误,否则可能会得到一些奇怪的崩溃。

###已在 MacBookAir5,2 ,OS X 10.11.5(15F34)上测试。

原文链接:831 - project-zero - Project Zero - Monorail
翻译:布兜儿(看雪ID:我有亲友团)

2 个赞