Apple CVE-2018-4407 内核漏洞利用与修复

栏目: 编程工具 · 发布时间: 5年前

内容简介:昨天Kevin Backhouse发布的一条推特火了,他在推特中提到,只要利用CVE-2018-4407的PoC就可以使同一Wifi下的macOS High Sierra与iOS11设备崩溃,同时附带了16秒的小视频演示。实际上这是昨天Apple发布的更新回顾中提到的漏洞,这个漏洞作者已经及时上报给了Apple并在iOS12(9月17日)和macOS Mojave(9月24日)系统更新中已经修复完成。

Apple CVE-2018-4407 内核漏洞利用与修复

写文档没保存啊?来来来,我帮你关电脑

昨天Kevin Backhouse发布的一条推特火了,他在推特中提到,只要利用CVE-2018-4407的PoC就可以使同一Wifi下的macOS High Sierra与iOS11设备崩溃,同时附带了16秒的小视频演示。

实际上这是昨天Apple发布的更新回顾中提到的漏洞,这个漏洞作者已经及时上报给了Apple并在iOS12(9月17日)和macOS Mojave(9月24日)系统更新中已经修复完成。

Kevin Backhouse在博客中简单分析了漏洞

CVE-2018-4407是Kevin发现的XNU系统内核中的堆缓冲区溢出漏洞,Apple把它分为了远程代码执行漏洞,攻击者有可能利用缓冲区溢出进行远程代码执行。不过目前Kevin给出的PoC仅仅是造成系统崩溃重启。

漏洞影响范围

iOS11及早期版本所有设备

MacOS High Sierra 10.13.6及早期版本所有设备

漏洞严重性及防护措施

该漏洞是XNU系统内核中网络部分堆缓冲区溢出,因此会同时影响macOS和iOS。要触发该漏洞,攻击者也只需向目标设备发送特殊数据包即可。(当然,需要和目标设备处在同一网络下)但是处在同一网络下并发现设备对攻击者来说是较为容易做到的,更不用说可能造成的远程代码执行,因此这个漏洞潜在危害还是蛮高的。同时,目前基本所有杀毒软件都没法防御这种攻击。

针对此攻击的防护除了更新外只有一种方法,那就是开启macOS防火墙设置中的拒绝全部连接。

漏洞产生

错误产生于icmp代码模块中(bsd/netinet/ip_icmp.c:339)

m_copydata(n, 0, icmplen, (caddr_t)&icp->icmp_ip);

这段代码处于icmp_error函数中,注释中可以看到它是为了在收到损坏数据包时生成一个报错数据包,并通过ICMP协议返回。上文函数目的是将损坏数据包的报头复制到ICMP消息中,但报头如果过大的话,就会导致缓冲区mbuf出现问题。(mbuf是存储出入站数据包的数据类型)。在这部分代码中,n为入站数据包,m为出站ICMP数据包,而m在294-296行进行内存分配。

if (MHLEN > (sizeof(struct ip) + ICMP_MINLEN + icmplen))
  m = m_gethdr(M_DONTWAIT, MT_HEADER);  /* MAC-OK */
else
  m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);

接着在314行通过mtod得到m数据指针

icp = mtod(m, struct icmp *);

mtod是宏命令,因此不会检查mbuf大小是否合适,数据也并未复制到icp,而是到了&icp->icmp_ip,即icp + 8 bytes。

不过作者没再继续单步调试,基于源码的分析,作者认为m_gethdr创建mbuf可容纳88字节,并通过实验发现触发缓冲区溢出时icmplen大于等于84即可。

参考链接

https://twitter.com/kevin_backhouse/status/1057352656560287746

https://lgtm.com/blog/apple_xnu_icmp_error_CVE-2018-4407


以上所述就是小编给大家介绍的《Apple CVE-2018-4407 内核漏洞利用与修复》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ES6标准入门(第3版)

ES6标准入门(第3版)

阮一峰 / 电子工业出版社 / 2017-9 / 99.00

ES6是下一代JavaScript语言标准的统称,每年6月发布一次修订版,迄今为止已经发布了3个版本,分别是ES2015、ES2016、ES2017。本书根据ES2017标准,详尽介绍了所有新增的语法,对基本概念、设计目的和用法进行了清晰的讲解,给出了大量简单易懂的示例。本书为中级难度,适合那些已经对JavaScript语言有一定了解的读者,可以作为学习这门语言最新进展的工具书,也可以作为参考手册......一起来看看 《ES6标准入门(第3版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试