国外大神Kevin Backhouse刚刚放出了一篇博文,对苹果操作系统内核中发现的堆缓冲区溢出漏洞(CVE-2018-4407)进行了一番解构。

微信截图_20181031152439.png

该漏洞使得攻击者只要接入同一Wi-Fi网络,即可向其他毫不知情的用户发送恶意数据包来触发任何Mac或iOS设备的崩溃和重启。由于该漏洞存在于系统网络核心代码,因此任何反病毒软件均无法防御。

运行以下操作系统的设备易受攻击:

Apple iOS 11及更早版本:所有设备(升级到iOS 12的部分设备)

Apple macOS High Sierra(受影响的最高版本为10.13.6):所有设备(通过安全更新2018-001修复)

Apple macOS Sierra(受影响的最高版本为10.12.6):所有设备(通过安全更新2018-005中修复)

Apple OS X El Capitan及更早版本:所有设备

好在Kevin在发现这个漏洞后马上就向苹果报告了,苹果在10月30日推出的iOS 12.1更新包中彻底修复了这个漏洞。

概述

该漏洞是苹果XNU操作系统内核中网络代码的堆缓冲区溢出问题导致的,iOS和macOS都使用XNU,因此iPhone、iPad和的MacBook均受到影响。想要触发该漏洞,攻击者只需要连接到与目标设备相同的网络,发送恶意IP数据到目标设备的IP地址即可,无需诱骗用户进行任何交互操作。

举个例子:

用户在咖啡馆使用免费Wi-Fi时,攻击者可以加入相同的无线网络并向用户的设备发送恶意数据包就可以让设备崩溃和重启。(攻击者只要使用NMAP工具就能很方便地获得设备IP地址。)

由于该漏洞的成因来源于系统的核心代码,反病毒软件也无法防御。 Kevin在运行McAfee ® Endpoint Security for Mac的Mac上成功测试了该漏洞。这和用户在设备上运行的软件也没有关系,即使没有打开任何端口,恶意数据包仍会触发漏洞。

进一步推测的话,由于攻击者可以控制堆缓冲区溢出的大小和内容,因此他们可能利用此漏洞在目标设备执行远程代码。

缓解措施

在未升级到最新版本操作系统的设备上,目前已知的缓解措施只有以下两个:

在macOS防火墙中启用隐藏模式可防止攻击。这个系统设置默认情况下不启用,需要用户手动开启。iOS设备不支持隐藏模式。

不接入公共无线网络。触发该漏洞的唯一必要条件是处于同一Wi-Fi网络,该漏洞不支持通过互联网发送恶意数据包而触发,Kevin测试过了。

解决方案:

0x03 修复建议

Apple iOS 11 及以下 (更新到 iOS 12)

Apple macOS High Sierra, 10.13.6及以下: 全部设备 (安装安全更新 2018-001)

Apple macOS Sierra, 10.12.6及以下: 全部设备 (安装安全更新 2018-005)

Apple OS X El Capitan 全版本: 全部设备 (截至目前Apple尚未发布patch,建议更新至高版本)

0x04 时间线

2018-08-09提交漏洞至apple安全团队

2018-09-17  iOS 12 发布. 漏洞被修复.

2018-09-24  macOS Mojave 发布. 漏洞被修复.

2018-10-30  apple官方发布漏洞声明

2018-10-31  lgtm团队发布部分细节

2018-11-01  360CERT发布预警

0x05 参考链接

lgtm 官方blog

apple 安全更新