安全動態(tài)

【漏洞預(yù)警】潛伏11年的Linux內(nèi)核提權(quán)漏洞曝光

來源:聚銘網(wǎng)絡(luò)    發(fā)布時間:2017-02-24    瀏覽次數(shù):
 

信息來源:FreeBuf 


漏洞編號

CVE-2017-6074

漏洞概述

Linux內(nèi)核近日又曝出權(quán)限提升漏洞,該漏洞可追溯至2005年,漏洞影響Linux操作系統(tǒng)主要發(fā)行版本,包括Redhat、Debian、OpenSUSE和Ubuntu。利用該漏洞,攻擊者可以從低權(quán)限進程中進行內(nèi)核代碼執(zhí)行。目前已知受影響的最老版本是2.6.18(2006年9月),不過該漏洞可能在先前的版本中已經(jīng)存在,或許從支持DCCP開始(2005年10月的2.6.14)就已經(jīng)存在問題了。

Seclists.org發(fā)布該漏洞的作者Andrey Konovalov表示,很快就會放出PoC,在此期間給予修復(fù)時間。

安全研究員Andrey Konovalov最近用Syzkaller fuzzing工具,發(fā)現(xiàn)了DCCP協(xié)議實現(xiàn)中的Linux內(nèi)核漏洞,漏洞潛伏時間超過10年。

DCCP協(xié)議

DCCP協(xié)議是面向消息的傳輸層協(xié)議,可最小化數(shù)據(jù)包報頭帶來的開銷和終端處理的工程量。該協(xié)議可建立、維護和拆卸不可靠連接的數(shù)據(jù)流以及對不可靠數(shù)據(jù)流進行擁塞控制。

該DCCP雙重釋放漏洞可允許本地低權(quán)限用戶修改Linux內(nèi)核內(nèi)存,導(dǎo)致拒絕服務(wù)(系統(tǒng)崩潰),或者提升權(quán)限,獲得系統(tǒng)的管理訪問權(quán)限。

漏洞詳情

這是個UAF漏洞:在IPV6_RECVPKTINFO開啟的情況下,內(nèi)核解析DCCP協(xié)議的流程中判斷已經(jīng)收到了DCCP_PKT_REQUEST返回包,就會釋放解析過程使用的SKB地址。(“DCCP protocol implementation freed SKB (socket buffer) resources for a DCCP_PKT_REQUEST packet when the IPV6_RECVPKTINFO option is set on the socket.”)

按現(xiàn)在的實現(xiàn),解析DCCP協(xié)議的流程中如果dccp_v6_conn_request有返回值,就會通過dccp_rcv_state_process中的__kfree_skb釋放掉解析過程中收到了DCCP_PKT_REQUEST返回包的SKB地址。但是,如果IPV6_RECVPKTINFO開啟的情況下編譯內(nèi)核,skb地址就會被存儲在ireq->pktopts,而dccp_v6_conn_request中的引用計數(shù)會增加,這樣skb就仍然會被使用。直到dccp_rcv_state_process進程中才會被釋放。

攻擊者使用某些內(nèi)核堆噴射技術(shù)就能控制任意對象,并用任意數(shù)據(jù)重寫其內(nèi)容。如果重寫過的對象中包含任何可觸發(fā)的函數(shù)指針,攻擊者便可在該內(nèi)核中執(zhí)行任意代碼。

這個漏洞并不是遠程代碼執(zhí)行漏洞,所以攻擊者必須擁有系統(tǒng)本地賬戶,才能利用該漏洞。

兩個月前,Linux內(nèi)核也曝出了類似的提權(quán)漏洞CVE-2016-8655,該漏洞可以追溯到2011年,低權(quán)限本地用戶利用Linux內(nèi)核af_packet實現(xiàn)中的競爭條件,可獲得root權(quán)限(漏洞詳情:http://www.freebuf.com/vuls/122152.html)。

修復(fù)方案

手動修復(fù):調(diào)用consume_skb,而非跳轉(zhuǎn)discard并調(diào)用__kfree_skb。

snip_20170223110907.png

更詳細的修復(fù)方案請點擊這里。如果你是高級Linux用戶,那么可以應(yīng)用補丁,重新構(gòu)建內(nèi)核,或者等待發(fā)行商發(fā)布更新。


 
 

上一篇:360齊向東:安全必須成為工業(yè)互聯(lián)網(wǎng)的頂層設(shè)計

下一篇:2017年02月24日 聚銘安全速遞