作者:啟明星辰ADLab
一、前言
近日,啟明星辰ADLab在對 Linux 內核進行源碼審計時發現,Linux 內核的音頻子系統存在一個條件競爭漏洞 CVE-2017-15265(CNVD-2017-30251、CNNVD-201710-230),條件競爭導致了 use-after-free 漏洞,可以用來進行本地提權。由于絕大部分 Linux 發行版采用了這個子系統,所以內核版本低于4.14-rc5的系統均會受到此漏洞影響,其影響范圍十分廣泛。啟明星辰ADLab發現此漏洞后,第一時間報告給了 Linux 官方,Linux 內核創始人 Linus Torvalds 親自進行了回復。目前,Linux 官方已給出修復方案,提醒廣大用戶及時采取修復措施。本文我們將詳細分析此漏洞的細節及發現過程。
二、攻擊面和攻擊向量
Linux 整體的框架圖如下:

普通用戶運行在用戶空間,用戶空間的權限有限,如果需要其他操作就需要通過一些接口進入內核空間。內核空間權限比較大,如果內核空間的代碼有漏洞可進行代碼執行的話,就會造成普通用戶以內核權限執行代碼進行提權。用戶空間進入內核空間的接口有很多,如 syscall、proc、sysfs、netlink、mmap、信號、驅動文件等等,這里音頻子系統是通過驅動文件的方式與用戶空間進行交互的。
Linux 驅動程序一般會在/dev目錄下創建一些文件,用戶可以打開這些文件,通過 ioctl 函數與內核進行交互。其中,音頻子系統創建的文件在/dev/snd目錄下,如下圖:

Seq 文件是此漏洞關注的目標。進入內核源碼中,查看 seq 文件的 ioctl 函數,發現其有很多操作:

可以看出,這里有很多相反的操作,例如創建端口(snd_seq_ioctl_create_port)和刪除端口(snd_seq_ioctl_delete_port),創建隊列(snd_seq_ioctl_create_queue)和刪除隊列(snd_seq_ioctl_delete_queue)等。熟悉瀏覽器漏洞的研究人員應該知道,相反的操作可能會引發 UAF 漏洞,所以我們重點從此處入手展開分析。
三、漏洞分析
通過對攻擊面和攻擊向量的分析,我們針對這幾個相反的操作寫了一個 fuzz,讓其中一個線程不停地創建端口,另一個線程不停地刪除端口。fuzz 后發現果然存在有漏洞,漏洞出現在snd_seq_ioctl_create_port函數中,下圖是 Linux 捕獲到的 crash 信息:

對 crash 信息進行詳細的分析后發現,這是一個 UAF 漏洞。漏洞函數snd_seq_ioctl_create_port如下:

crash信息報告的是snd_seq_ioctl_create_port()函數底部的這一句:snd_seq_set_port_info(port,&info); 。
漏洞觸發的具體過程如下:
- 在第一個線程中,
snd_seq_ioctl_create_port()調用snd_seq_create_port()創建了 port 這個結構體,然后切換到第二個線程; - 第二個線程調用
snd_seq_ioctl_delete_port()釋放了第一個線程創建的 port 后,再切換回第一個線程; - 由于 port 沒有鎖也沒有引用計數,所以第一個線程中的
snd_seq_ioctl_create_port()繼續使用了第二個線程中已釋放的 port,這樣就造成了 use-after-free 漏洞。
四、漏洞修復
分析清楚漏洞的成因之后,漏洞的修復方案也就比較清晰,其可行的修復方案有:
- 為port結構體增加引用計數。
- 正確使用鎖。
目前,Linux 官方已給出修復方案,該方案采用了為 port 結構體增加引用計數的方式,參考鏈接為:http://mailman.alsa-project.org/pipermail/alsa-devel/2017-October/126292.html
五、總結
Linux 內核漏洞的影響范圍十分廣泛,幾乎所有的 Linux 發行版都會受到影響。另外,條件競爭的漏洞也比較難通過傳統的 fuzz 去發現,而且程序員也很難注意到這樣的細節,所以條件競爭漏洞仍大量存在,大家應引起足夠的重視。最后,啟明星辰ADLab再次提醒廣大用戶及時進行漏洞修復,以免造成不必要的損失。
啟明星辰積極防御實驗室(ADLab)
ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。

本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/426/
暫無評論