【原创缝隙】Linux内核Marvell WI-FI芯片驱动缝隙(CVE-2019-3846/CVE-2019-10126)

颁布功夫 2019-06-10

缝隙概述



Marvell Avastar802.11ac低功耗无线芯片系列重要利用于笔记本电脑、智能手机、游戏设备、路由器和物联网设备等 ,, ,, ,, ,,如Surface Pro、Surface laptop、Samsung Chromebook、Galaxy J1、Sony PlayStation 4、Xbox One。。。。。。


Linux内核Marvell Avastar系列芯片(88W8766/88W8797/88W8897/88W8997)驱动存在远程溢露马脚CVE-2019-3846和本地溢露马脚CVE-2019-10126 ,, ,, ,, ,,可导致回绝服务(系统崩溃)或肆意代码执行 ,, ,, ,, ,,8827太阳集团ADLab已第一功夫提交厂商进行建复。。。。。。


缝隙影响领域



Linux kernel 3.2~Linux kernel 5.1


缝隙分析



信息元素(Information Element ,, ,, ,, ,,IE)是IEEE 802.11治理帧的组成部门。。。。。。AP和STA通过IE互换信路 ,, ,, ,, ,,速度以及加密算法等信息。。。。。。除Vendor Specific表 ,, ,, ,, ,,其他IE均使用TLV数据结构暗示。。。。。。


8827太阳集团(Macau)股份有限公司-Official website


其中 ,, ,, ,, ,,Type字段长度为1个字节 ,, ,, ,, ,,常见的IE类型以及取值如下:

8827太阳集团(Macau)股份有限公司-Official website


CVE-2019-3846远程堆溢露马脚


该缝隙位于drivers/net/wireless/marvell/mwifiex/scan.c中的mwifiex_update_bss_desc_with_ie函数中。。。。。。补丁代码增长对WLAN_EID_SSID和WLAN_EID_SUPP_RATES的长度校验。。。。。。


8827太阳集团(Macau)股份有限公司-Official website


缝隙触发的函数挪用链:


->mwifiex_cfg80211_connect [mwifiex]
->mwifiex_cfg80211_assoc [mwifiex]
->mwifiex_bss_start [mwifiex]
->mwifiex_fill_new_bss_desc [mwifiex]

->mwifiex_update_bss_desc_with_ie [mwifiex]


能够看出 ,, ,, ,, ,,缝隙产生在Association阶段 ,, ,, ,, ,,无需经过四次握手认证。。。。。。


8827太阳集团(Macau)股份有限公司-Official website


攻击者无需真实AP密码 ,, ,, ,, ,,只需使victim STA断开原有衔接 ,, ,, ,, ,,尝试衔接FakeAP时 ,, ,, ,, ,,即可触发该缝隙。。。。。。

8827太阳集团(Macau)股份有限公司-Official website


CVE-2019-10126本地堆溢露马脚


该缝隙位于drivers/net/wireless/marvell/mwifiex/ie.c中的mwifiex_uap_parse_tail_ies函数 ,, ,, ,, ,,该函数用于解析用户层传递的beacon数据并将其传递给固件。。。。。。在while循环的switch default分支中 ,, ,, ,, ,,当处置WLAN_EID_SSID和WLAN_EID_SUPP_RATES等之表的信息元素IE ,, ,, ,, ,,则会挪用拷贝函数。。。。。。补丁在拷贝函数前增长了对TLV的长度校验代码。。。。。。


8827太阳集团(Macau)股份有限公司-Official website


用户态利用法式(如wpa_suppliant,hostapd)通过netlink接口与内核模�???? ?榻型ㄑ�。。。。。。在初始化过程中注册新闻号令和回调函数。。。。。。


8827太阳集团(Macau)股份有限公司-Official website


内核收到NL80211_CMD_START_AP新闻时 ,, ,, ,, ,,函数挪用链:


->nl80211_start_ap [cfg80211]
->rdev_start_ap [cfg80211]
->mwifiex_cfg80211_start_ap  [mwifiex]
->mwifiex_set_mgmt_ies [mwifiex]

->mwifiex_uap_parse_tail_ies [mwifiex]


若是机关特殊的beacon数据蕴含多个特殊类型的IE(例如WLAN_EID_SUPPORTED_OPERATING_CLASSES) ,, ,, ,, ,,将使得mwifiex_uap_parse_tail_ies循环挪用memcpy ,, ,, ,, ,,导致本地溢出。。。。。。


安全建议



Linux各刊行版缝隙布告:


https://security-tracker.debian.org/tracker/CVE-2019-3846
https://access.redhat.com/security/cve/cve-2019-3846

https://security-tracker.debian.org/tracker/CVE-2019-10126


补丁链接:


https://patchwork.kernel.org/patch/10967049/
https://patchwork.kernel.org/patch/10970141/