XNU内核漏洞分析与利用_蒸米.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一発入魂 - XNU内核漏洞分析与利用 蒸米@阿里移动安全 Outline • XNU introduction • iOS 9.3.4/macOS 10.11.6 OSUnserializeBinary() info leak UAF • XNU kernel ROP • iOS 10.2/macOS 10.12.2 mach_voucher() heap overflow • iOS 10 port feng shui • Conclusion XNU简介 • XNU ,由苹果电脑发展的操作系统内核,被使用于macOS和iOS中。它是Darwin操作系统的一部 份,跟随着Darwin一同作为自由及开放源代码软件被发布。XNU是X is Not Unix的缩写。 • XNU for macOS是开源并且可以编译的:/source/xnu/ • XNU for iOS是闭源的并做了部分修改,但绝大多数实现和macOS是一样的。 iOS 9.3.4/macOS 10.11.6 内核漏洞: OSUnserializeBinary() • 漏洞位置:xnu-source/libkern/c++/OSSerializeBinary.cpp • 信息泄露:没有检查len的大小,导 • Use-after-free :OSString key转换为OSSymbol 致可以8 ,从而泄露内核栈上的信 的过程中OSString已经被free掉了,但这个 息。 OSString却被加入了对象列表里。 iOS 9.3.4/macOS 10.11.6 内核漏洞: OSUnserializeBinary() • 如果攻击者将number的长度设置的非常长,并用io_registry_entry_get_property_bytes()去获取 number数据的话,就会造成内核的信息泄露。 • 因为OS number的长度被修改了,所以返回的数据不光有攻击者发送给内核的number ,还有栈上数 据,比如函数return时候的返回地址: 0xFFFFFF+kslide。 iOS 9.3.4/macOS 10.11.6 内核漏洞: OSUnserializeBinary() • OSString key转换为OSSymbol的过程中OSString已经被free掉了,但这个OSString却被加入了对象 列表里。因此当一个OSObject类型去引用一个已经被释放了的OSString的时候,就会产生UAF。 • 因此,如果攻击者能够在OSString被free的时候,立刻申请一段和OSString一样大小的内存并且构造 好对应的vtable数据,当内核调用o-retain()的时候 ,内核的pc指针就能被攻击者控制。 XNU kernel ROP • 在macOS上有一种取巧的方法,如果exp的bin是32位的程序的话,可以使用NULL page。因此 ,攻击 者可以使用vm_allocate()申请到NULL Page ,然后将vtable和ROP chain都保存在NULL page里。 • 随后利用ROP获得当前进程的ucred ,然后将cr_svuid设置为0 ,最后用thread_exception_return退出 进程,即可拿到root。 iOS jailbreak • 在iOS上利用OSUnserializeBinary()漏洞会麻烦一些,因为不能利用NULL page (32位上和iPhone 7上kernel 不能执行用户态的代码, SMAP )。

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档