内容简介:昨天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的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
以上所述就是小编给大家介绍的《Apple CVE-2018-4407 内核漏洞利用与修复》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java程序设计
宋中山 严千钧 等编 / 清华大学出版社 / 2005-8 / 27.00元
本书全面、系统地介绍了Java语言的基本概念、基本语法和编程方法。主要内容包括:Java语言概述、数据类型与运算符、流程控制语句、类与对象、继承与多态、异常处理、工具类和算法、Applet小应用程序、图形用户界面、输入和输出、Java多线程以及Java高级编程。每章后面附有习题,读者可参考使用。 本书内容丰富,结构合理,语言简洁,深入浅出,通俗易懂。基础知识与程序实例相结合,示例典型......一起来看看 《Java程序设计》 这本书的介绍吧!