还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

简介:

1. 摘要

随着iOS 11的发布,多个BroadCom WiFi 芯片的高危漏洞被公开[1]。这些漏洞对上亿台未来得及更新的iOS设备造成了严重的安全威胁。黑客可对同一WiFi网络下的设备发起攻击,远程控制受害设备的 WiFi 芯片,甚至进一步攻破 iOS 内核。本文对 iOS 设备 WiFI 芯片相关漏洞进行简要技术分析,然后根据 iOS设备的系统版本统计出受影响的规模。

截至9月27日,国内92.3%的iOS用户都受到相关高危漏洞的威胁。我们呼吁用户尽快升级iOS系统到最新版本,并号召手机厂商采用更有效的防护技术,避免用户受到已知高危漏洞的威胁。

2. BroadCom WiFi芯片漏洞技术分析

本文着重分析两个BroadCom WiFi芯片漏洞:CVE-2017-11120和CVE-2017-11121。这两个漏洞都是WiFi 芯片固件代码在处理数据帧时缺乏对特定字段的严格校验。攻击者可以利用它们制造内存破坏,实现任意代码执行,获得对设备的远程控制。

2.1 漏洞CVE-2017-11120

iOS设备搭载的BroadCom WiFi芯片采用了快速基本服务设置转换(Fast BSS Transition)和无线资源管理(Radio Resource Management)标准。在接入无线接入点(Access Point,简称AP)后,iOS设备会发送相邻接入点请求(Neighbor Report Request),AP则返回相邻接入点应答(Neighbor Report Response),包含当前无线局域网内的相邻AP以及各自的BSSID,Operating Class和Channel Number等信息。在处理Neighbor Report Response数据帧时,BroadCom WiFi芯片将每一种Operating Class和Neighbor Report信息保存在一个456字节的内存块中(如图1所示),并且将这些块通过指针串接起来。其中,Neighbor Count Array记录了各个Channel Number的Neighbor数量。Array长度为450字节,每2个字节记录一个Channel Number,所以最大可记录的Channel Number为224(0xE0)。

 还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

▲图1:BroadCom WiFi芯片记录Neighbor Report Response信息的内存块结构 [2]

 还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

▲图2:BroadCom WiFi芯片处理Neighbor Report Response信息的函数 [2]

如图 2 所示,WiFi 芯片固件里位于地址 0xAC0A8 的函数(简称function_AC0A8,下同)首先在串联的内存块中查找Operating Class对应的条目,如果没有找到,则会动态创建一个条目 ,然后从数据帧中读出Channel Number作为数组索引,定位到 Neighbor Count Array 中元素,将其值加一。此过程并没有对Channel Number做出校验,当伪造的数据帧中 Channel Number大于0xE0(如0xFF)时,上述过程将会造成内存越界写。攻击者可以通过内存越界写改变关键指针数据或者控制流元素,一步步接管代码执行。值得一提的是,BroadCom WiFi 芯片里没有 ASLR、DEP 等防护,攻击者可以很容易做代码改写,注入任意代码执行。

此漏洞影响 iOS 11.0 以前的设备。目前此漏洞的利用代码已公开[2],攻击者能直接复用这一利用代码攻击漏洞设备,在WiFi芯片中插入后门,并在用户无感知的情况下实现对设备的远程控制。

2.2 漏洞CVE-2017-11121

根据 Fast BSS Transition 标准,当设备在无线网络环境下进行快速漫游(fast roaming)时,会触发校验和重关联(reassociation)操作。Reassociation操作会对组临时秘钥(Group Temporal Key,简称GTK)进行解密和安装。这两个过程中存在多处 memcpy 调用,调用前都缺少对 copy 长度的校验,可能导致内存破坏。

还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

▲图3:BroadCom WiFi芯片重关联操作时GTK解密和安装的相关函数 [3]

如图3所示,reassociation 由 function_8462C 函数负责,它调用 function_6D8对GTK 解密,然后会继续调用 function_C9C14对GTK 进行安装。相关代码片段如下: 

上述处理过程中,有两处 memcpy 调用存在问题:

1)GTK解密函数 function_6D8 中,当构造的畸形数据帧中 gtk_subelem[1]为11时,函数参数input_length为0。在第二处调用 memcpy 时,input_length-8为0xfffffff8,这将导致大量数据被 copy,破坏 stack上的数据;

2)GTK安装函数 function_C9C14,参数 gtk_len 取值为 gtk_subelem[4]。攻击者可以构造畸形数据帧,使 gtk_subelem[4]大于164,函数中 memcpy 调用前没有检查 gtk_len 取值,可能导致堆溢出。

攻击者同样可以攻击此漏洞造成内存破坏,实现远程任意代码执行。此漏洞影响系统版本在11.0以前的iOS设备。

3. 通过WiFi芯片漏洞可进一步攻击iOS内核

攻击者可将WiFi芯片漏洞作为跳板,进一步攻击 iOS 内核。iOS 设备进行 WiFi 通信时,内核的 WiFi 驱动会向 WiFi 芯片发送 ioctl 请求。如果WiFi芯片被攻击者控制,攻击者能够篡改 ioctl 返回的结果数据,触发内核WiFi驱动中结果处理函数的漏洞,从而实现对 iOS 内核的攻击。

 还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

▲表1: 当攻击者控制WiFi芯片后,可用于攻击iOS内核驱动的漏洞

表1中列举了可由WiFi芯片作为跳板攻击内核的漏洞。漏洞原理简要说明如下:

● CVE-2017-7103:驱动AppleBCMWLANBusInterfacePCIe中的函数completeFirmwareTimestampMsg,在Firmware Timestamp消息完成后会被回调。函数内部将Timestamp消息封装为mbuf,交由processFirmwareTimeSyncMessage处理,mbuf pkthdr_len设置为消息中timestamp_length字段的值。processFirmwareTimeSyncMessage函数内部存在一处memmove调用,长度参数为pkthdr_len。程序没有对pkthdr_len进行检查,构造过大的pkthdr_len会使memmove调用产生内存溢出。

● CVE-2017-7105:驱动AppleBCMWLANCore中的函数assembleBGScanResults,在处理WLC_GET_VAR ioctl返回的结果时,会调用IOMalloc分配一块堆内存,内存分配长度根据返回结果中的字段计算得出。代码中缺少对分配长度的溢出校验,在WiFi芯片被控制情况下,攻击者可通过篡改ioctl返回数据,使IOMalloc分配长度在计算时产生整型溢出,进而导致过小的内存分配,后续对分配内存的copy操作可能引起堆溢出。

● CVE-2017-7108:驱动AppleBCMWLANCore中的updateRateSetAsyncCallback函数,在处理WLC_GET_CURR_RATESET ioctl请求结果时,首先将0x14字节的结果数据中读到栈中buffer。rate数目由buffer中前4字节获得,接着函数从buffer+4处循环读出rate数据。由于在循环操作前缺少对rate数目的校验,攻击者可以篡改ioctl返回的rate结果,将rate数目字段改为过大的值,实现对buffer数据的越界读,造成栈上数据信息泄露。

● CVE-2017-7110:设备向WiFi芯片发送获得所有Vendor IE列表信息的ioctl请求,返回结果交由驱动AppleBCMWLANCore中setVendorIE函数处理。setVendorIE内部调用obvcopy时,length参数根据ioctl返回结果中字段的计算得出。然而程序中缺乏对length值的校验,在WiFi芯片受控下,攻击者可以构造畸形请求结果,使得obvcopy的length过大,导致堆溢出。

● CVE-2017-7112:驱动AppleBCMWLANCore中handleTraceEvent函数,在处理WLC_E_TRACE消息时,缺少对消息头中len字段的检查。而后根据len计算得到的数组索引,进而改写数组内容时,可能对数组以外的内存写入NULL byte。

4. 绝大多数iOS用户受到WiFi高危漏洞威胁

截至2017年9月27日,通过对国内上亿台iOS设备的系统版本进行的统计,排除虚假设备干扰结果后,详细系统版本比例分布如图4所示。从左半部分开始,逆时针方向按新旧版本次序依次为最新的iOS 11.x到iOS 7.x。其中,最新的iOS 11.x设备占比为7.7%,iOS 10.3.3系统占比50.8%,此版本之外的iOS 10.x版本(10.0.0至10.3.2)占比23.8%。早期的iOS 9.x设备占比11.2%,iOS 8.x 占比 5.8%,更早期的iOS 7占比 0.7%。

从图中可以看到,目前国内升级到最新的iOS 11.x系统的设备仅占7.7%,有近半的iOS设备系统版本为10.3.3。其余设备停留在10.3.2到更早的7.x等不同的版本。这些旧版iOS系统的设备(高达92.3%)面临着文中列举的WiFi芯片高危漏洞带来的安全威胁。 

还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户!

▲图4:国内iOS设备系统版本分布(2017年9月27日)

此外,我们统计了从2017年9月11日到2017年9月27日(iOS 11的升级推出于9月19日)iOS各个系统版本的升级情况。结果如图5所示。可以看到,从9月19日开始推送iOS 11.0升级至9月27日期间,iOS 11.x用户占比缓慢递增至7.7%,升级主要来源于iOS 10.3.3。整个统计期间iOS 7.x至10.x的用户占比基本不变,也就是说,仍然有近41.5%的用户选择停留在iOS 10.3.2及以下系统不升级。

还没升级 iOS11?这个高危漏洞威胁近9成 iPhone 用户! 

▲图5:国内iOS设备系统升级趋势(2017年9月11日-2017年9月27日) 

5. 结语

本文分析了近期曝出的iOS设备WiFi芯片高危漏洞以及影响范围。文中提及的漏洞虽然已在iOS 11得到修复,但通过实际统计发现,绝大多数用户由于各种原因没有升级上来,仍面临严重的安全威胁。雷锋网(公众号:雷锋网)建议用户及时升级系统到最新版本,避免受到高危漏洞影响。同时,我们也呼吁手机以及硬件厂商采取更积极的防护技术,避免用户受到已知的高危漏洞威胁。



本文作者:郭佳
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
14天前
|
人工智能 自然语言处理 云计算
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
iOS迎来AI升级:揭秘Apple全新“智能”系统
|
9天前
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
25 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
1天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享安卓与iOS开发中的线程管理比较
【8月更文挑战第30天】本文将探讨网络安全与信息安全的重要性,并分享关于网络安全漏洞、加密技术和安全意识的知识。我们将了解常见的网络攻击类型和防御策略,以及如何通过加密技术和提高安全意识来保护个人和组织的信息安全。
|
15天前
|
运维 网络安全 iOS开发
厉害!外国网络工程师用Ansible给思科IOS设备升级!
厉害!外国网络工程师用Ansible给思科IOS设备升级!
|
20天前
|
BI Linux 数据安全/隐私保护
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
忘了 iOS(iPad、IPhone) 设备上的「屏幕使用时间」密码怎么办?找回屏幕密码
30 0
|
2月前
|
人工智能 搜索推荐 vr&ar
苹果手机iOS18最新升级:植入AI人工智能,国内百度文心一言,国外GPT4o来辅助
iOS 18亮点速览:AI强化的Siri、RCS安卓消息兼容、自定义主屏、辅助功能增强,VR进步,新隐私工具,包括锁定APP和眼动追踪。Passwords app保障安全,Apple Intelligence提升个性化体验。
107 1
|
4月前
|
存储 Web App开发 Android开发
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
302 1
iOS不支持WebP格式图片解决方案和iPhone 7及其后硬件拍照的HEIC格式图片
|
4月前
|
移动开发 网络协议 Linux
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
We discovered one or more bugs in your app when reviewed on iPhone and iPad running iOS 14.1
48 0
|
4月前
|
存储 定位技术 iOS开发
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
XCode8升级到Xcode9(操作系统为iOS11)后原来的工程中遇到的问题
47 0
|
4月前
|
移动开发 开发工具 数据安全/隐私保护
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?
iOS APP 版本更新升级教程:如何打包上架新的 APP 版本?