前段時間,sudo被曝不要密碼就可進行root提權的漏洞引起一片嘩然,眾多公司紛紛連夜打補丁來避免損失。FreeBuf也對此進行了相應的報道《不用密碼就能獲取root權限?sudo被曝新漏洞》。
該風波還沒過去多久,近期,Linux再一次被曝root提權漏洞,并且這一次的漏洞已經潛伏了長達15年!
近日,研究人員在Linux內核的iSCSI(小型計算機系統接口)子系統中發現了三個漏洞,這些漏洞可以允許具有基本用戶權限的本地攻擊者在未打補丁的Linux系統上獲得root權限。
iSCSI(小型計算機系統接口)定義了并行I/O總線和數據協議,用于將各種外圍設備(磁盤驅動器、磁帶驅動器、調制解調器、打印機、掃描儀、光驅、測試設備和醫療設備)連接到主機。
不過,這些安全漏洞只能在本地被利用。也就是說,攻擊者必須先利用別的漏洞或者使用其他攻擊載體來訪問易受攻擊的設備,才能進行后續攻擊。
潛伏長達15年的漏洞
研究人員表示在2006年iSCSI內核子系統的初始開發階段該漏洞就已經存在,但直到現在才被發現,當中相隔15年。
根據研究人員的說法,這些漏洞影響了Linux的所有發行版本。但是幸運的是,易受攻擊的scsi_transport_iscsi內核模塊在默認條件下不會被加載。
但是,當攻擊者將某個版本視為目標時,該模塊就可以被加載并且被利用來進行root提權。
兩種情況下Linux內核模塊會進行加載:檢測到新硬件或者內核函數檢測到某個模塊丟失。而后一種隱式自動加載情況更容易被濫用,并且很容易被攻擊者觸發,使他們能夠增加內核的攻擊面。
研究人員補充表示,在CentOS 8、RHEL 8和Fedora系統上,如果安裝了rdma-core包,非特權用戶可以自動加載所需模塊。
但在Debian和Ubuntu系統上,只有在RDMA硬件可用的情況下,rdma-core包才會自動加載所需的兩個內核模塊。因此,該漏洞的范圍較為有限。
漏洞會導致本地權限提升、信息泄露和拒絕服務
此次的漏洞可以被利用來繞過一些組織漏洞的安全功能,如內核地址空間布局隨機化(KASLR)、主管模式執行保護(SMEP)、主管模式訪問防止(SMAP)和內核頁表隔離(KPTI)。
同時,這三個漏洞可能導致本地權限提升:
CVE-2021-27365:堆緩沖區溢出(本地權限提升、信息泄露、拒絕服務)。
該漏洞是通過將iSCSI字符串屬性設置為大于一頁的值,然后試圖讀取它從而觸發的。
更具體地說,一個無權限的用戶可以向iSCSI子系統(在drivers/scsi/scsi_transport_iscsi.c中)發送netlink消息,該子系統通過drivers/scsi/libiscsi.c中的helper函數設置與iSCSI連接相關的屬性,如主機名、用戶名等,這些屬性的大小僅受netlink消息的最大長度限制(根據處理消息的具體代碼,可以是232或216)。
CVE-2021-27363:內核指針泄露(信息泄露)。
該漏洞可以用來確定iscsi_transport結構的地址。
CVE-2021-27364:越界讀取(信息泄露,拒絕服務)。
與第一個漏洞類似,一個無權限的用戶可以制作指定緩沖區大小的網鏈消息,而驅動程序無法驗證,導致可控的越界讀取。
此外,這三個漏洞還可能導致數據泄露,并可能被利用來觸發拒絕服務條件。
由于堆溢出的非確定性,第一個漏洞可以作為一個不可靠的本地DoS。
然而,當與信息泄露相結合時,該漏洞可以進一步被利用為LPE,允許攻擊者從非特權用戶帳戶升級到root。并且這個漏洞也可以用來泄露內核內存。
第二個漏洞(內核指針泄露)影響較小,只能作為潛在的信息泄露。
第三個漏洞(越界讀取)的功能也僅限于作為潛在的信息泄露,甚至是不可靠的本地DoS。
以上三個漏洞都在5.11.4、5.10.21、5.4.103、4.19.179、4.14.224、4.9.260和4.4.260更新中進行了修補,修補程序在3月7日開始在主線Linux內核中提供。對于EOL不支持的內核版本,如3.x和2.6.23,將不會發布補丁。
如果用戶已經安裝了其中一個Linux內核版本,則其設備不會被利用這些漏洞進行攻擊。