聯(lián)系人:李女士
座機:010-59433750
手機:15313878231
郵 箱:angelals@secspace.com
地 址:北京市海淀區(qū)金碼大廈B座2328
Linux kernel drivers/tty/n_hdlc.c拒絕服務(wù)漏洞(CVE-2017-2636)
1 漏洞描述
漏洞編號:CVE-2017-2636
漏洞發(fā)現(xiàn)者:Alexander Popov
漏洞危害:高危!低權(quán)限用戶利用該漏洞可以在Linux系統(tǒng)上實現(xiàn)本地提權(quán)。
受影響系統(tǒng):Linux kernel < 4.10.1
影響范圍:這個bug最早引入在2009年6月22號。在該日期發(fā)布后的內(nèi)核版本均可能受該漏洞影響。詳情請參看
漏洞簡述:該漏洞是Linux內(nèi)核驅(qū)動 n_hdlc 模塊(drivers/tty/n_hdlc.c)發(fā)生條件競爭導致的,利用該漏洞可以進行權(quán)限提升。該驅(qū)動模塊提供HDLC串行線路規(guī)則,在大多Linux發(fā)行版的內(nèi)核配置為CONFIG_N_HDLC = m,n_hdlc被編譯成模塊并啟用。
2 漏洞細節(jié)
N_HDLC線路規(guī)則使用自制的單鏈表來獲取緩沖區(qū)數(shù)據(jù),當發(fā)生錯誤的時,n_hdlc.tbuf 指針用于重新傳輸緩沖區(qū)數(shù)據(jù)。如果發(fā)送緩沖區(qū)數(shù)據(jù)不成功,它的地址就被保存在 n_hdlc.tbuf 指針中,下次函數(shù)n_hdlc_send_frames()將嘗試首先重新發(fā)送它。
在 commit be10eb7589337e5defbe214dae038a53dd21add8(“tty:n_hdlc 增加了 buffer flushing“)引入了對n_hdlc.tbuf 的競爭訪問。
在傳輸錯誤后并發(fā)執(zhí)行flush_tx_queue()和n_hdlc_send_frames()函數(shù)將由n_hdlc.tbuf指向的緩沖區(qū)放入tx_free_buf_list兩次。因此在n_hdlc_release()中造成可利用的double free 漏洞。
詳細相關(guān)代碼請參看:
3 Linux各發(fā)行版本對于該漏洞相關(guān)信息
Red Hat Enterprise Linux/CentOS
https://access.redhat.com/security/cve/CVE-2017-2636
Debian
https://security-tracker.debian.org/tracker/CVE-2017-2636
ubuntu
https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2017-2636.html
SUSE/openSUSE
4 修復建議
建議用戶通過系統(tǒng)更新到最新發(fā)行版修復此漏洞
廠商補丁:Linux
5 參考