一個(gè)漏洞潛伏54年?誰(shuí)才是“潛伏界”最強(qiáng)王者
2021 年,瑞典斯德哥爾摩KTH皇家理工學(xué)院的計(jì)算機(jī)科學(xué)教授Pontus Johnson在通用圖靈機(jī)(UTM)中發(fā)現(xiàn)了可執(zhí)行任意代碼的相關(guān)漏洞。令人震驚的是,易受攻擊的代碼已經(jīng)存在了將近54 年——而且還沒(méi)有可用的補(bǔ)丁,也不指望會(huì)出現(xiàn)補(bǔ)丁。
幸運(yùn)的是,這種通用圖靈機(jī)(UTM)是由已故的人工智能學(xué)家Marvin Minsky在1967年提出的一項(xiàng)概念模擬設(shè)計(jì),盡管它對(duì)計(jì)算機(jī)科學(xué)領(lǐng)域具有重要的理論意義,但實(shí)際上從未真正構(gòu)建到現(xiàn)實(shí)世界的計(jì)算機(jī)中。
但在Minsky提出這種概念模擬設(shè)計(jì)后十年間,早期版本的Unix和DOS系統(tǒng)出現(xiàn),直至今日,這兩大操作系統(tǒng)的“后裔”仍在伴隨我們,其中一些系統(tǒng)中同樣存在著潛伏數(shù)年甚至數(shù)十年的漏洞。
以下是近年來(lái)發(fā)現(xiàn)的10個(gè)值得注意的古老漏洞:
日產(chǎn)(Nissan)遠(yuǎn)程信息處理控制模塊基帶漏洞
- 潛伏期:7年;
- 引入時(shí)間:2010年;
- 修復(fù)時(shí)間:2017年;
早在2011年,安全研究員Ralf-Philipp Weinmann就在手機(jī)使用的基帶處理器中發(fā)現(xiàn)了一個(gè)漏洞。這里為大家介紹一下基帶攻擊,它是一種針對(duì)移動(dòng)設(shè)備的威脅類型。獨(dú)立于移動(dòng)操作處理器的基帶處理器主要負(fù)責(zé)部署GSM或3G堆棧到設(shè)備上。所有電話和數(shù)據(jù)首先通過(guò)該基帶,給與該操作系統(tǒng)處理器必要的處理信息。破壞該基帶的攻擊者能夠獲得巨大的優(yōu)勢(shì),因?yàn)樵搶記](méi)有取證工具。
可以想象這種基帶攻擊的場(chǎng)景:黑客可以建立一個(gè)假的手機(jī)信號(hào)塔,誘使手機(jī)連接到它,然后劫持它的網(wǎng)絡(luò)連接。手機(jī)制造商相對(duì)較快地糾正了該漏洞,然后很快它就被遺忘了。
但是還存在一個(gè)問(wèn)題:手機(jī)并非使用這些芯片的唯一設(shè)備。安全公司Eclypsium的首席網(wǎng)絡(luò)安全研究員Jesse Michael表示,本質(zhì)上說(shuō),日產(chǎn)Leaf和各種其他車(chē)輛的遠(yuǎn)程信息處理單元中也使用了相同的蜂窩基帶芯片組。幾位研究人員通過(guò)試驗(yàn)他們從垃圾場(chǎng)得到的汽車(chē)發(fā)現(xiàn)了該漏洞的存在。
在汽車(chē)領(lǐng)域發(fā)現(xiàn)該漏洞之前,它已經(jīng)在不同的細(xì)分市場(chǎng)中公開(kāi)了將近7年。由于處于截然不同的細(xì)分市場(chǎng),且擁有自己復(fù)雜的供應(yīng)鏈,所以沒(méi)人意識(shí)到汽車(chē)也容易受到與手機(jī)完全相同的攻擊。這是一個(gè)關(guān)于行業(yè)孤島的真實(shí)警示故事。
sudo的Baron Samedit漏洞
- 潛伏期:9年6個(gè)月;
- 引入時(shí)間:2011年7月;
- 修復(fù)時(shí)間:2021年1月;
sudo命令是任何Unix管理員工具包中的一個(gè)重要工具,它為那些具有調(diào)用它的正確權(quán)限的人授予超級(jí)用戶權(quán)限。但是,“能力越大,責(zé)任越大”,重要的是在命令周?chē)O(shè)置對(duì)沖,以免用戶在系統(tǒng)中肆無(wú)忌憚。例如,您可以使用 -c 標(biāo)志在shell模式下調(diào)用sudo,然后您可以執(zhí)行一系列以超級(jí)用戶權(quán)限執(zhí)行的shell命令。這種模式可能容易受到緩沖區(qū)溢出攻擊,其中插入到這些命令中的特殊字符會(huì)誘使系統(tǒng)在分配的內(nèi)存緩沖區(qū)之外編寫(xiě)代碼,從而可能導(dǎo)致攻擊者獲得root權(quán)限。
通常,sudo會(huì)在執(zhí)行前識(shí)別這些特殊字符來(lái)防止此類攻擊。然而,在2011年,一個(gè)漏洞被意外插入到sudo中,使得緩沖區(qū)溢出攻擊成為可能,并且它潛伏了近10年。缺陷不在sudo命令本身,而是在輔助sudoedit命令中,任何本地用戶(普通用戶和系統(tǒng)用戶,sudoers和非sudoers)都可以利用此漏洞,而無(wú)需進(jìn)行身份驗(yàn)證(即攻擊者不需要知道用戶的密碼),利用此漏洞可以用于普通用戶無(wú)差別提權(quán),漏洞對(duì)數(shù)據(jù)機(jī)密性和完整性以及系統(tǒng)可用性帶來(lái)嚴(yán)重威脅。
受影響的系統(tǒng)包括幾乎所有Unix變體,包括Linux、Solaris和macOS。如今,此漏洞已分配為CVE-2021-3156,危險(xiǎn)等級(jí)評(píng)分為7分,因此修復(fù)它至關(guān)重要。
Linux Grub2 BootHole漏洞
- 潛伏期:10年;
- 引入時(shí)間:2010年;
- 修復(fù)時(shí)間:2020年7月;
當(dāng)UEFI作為BIOS的替代品被引入時(shí),曾一度被認(rèn)為是安全的最前沿,其功能旨在對(duì)抗在啟動(dòng)操作系統(tǒng)的引導(dǎo)加載軟件級(jí)別上運(yùn)行的攻擊。其關(guān)鍵是一個(gè)互鎖的簽名加密證書(shū)鏈,用于驗(yàn)證每個(gè)引導(dǎo)加載程序是否合法,這種機(jī)制稱為“安全引導(dǎo)”(Secure Boot)。UEFI的根證書(shū)由Microsoft簽署,Linux 發(fā)行版將自己的引導(dǎo)加載程序放在鏈的更下游,每個(gè)引導(dǎo)加載程序都有自己經(jīng)過(guò)驗(yàn)證的證書(shū)。
近日,安全研究公司Eclypsium 曝光了安全引導(dǎo)(Secure Boot)功能中的一個(gè)新漏洞,并將之命名為“BootHole”。其特別存在于Secure Boot的GRUB2 文件中,攻擊者可借此對(duì)受害者的系統(tǒng)實(shí)現(xiàn)“近乎完全的控制”。一旦遭成功利用,將允許黑客寫(xiě)入任意程序代碼、置換成惡意bootloader程序,弱化UEFI Secure Boo的安全開(kāi)機(jī)驗(yàn)證,而使得惡意程序得以入侵計(jì)算機(jī)。而且無(wú)論是 Linux、還是數(shù)量相當(dāng)龐大的Windows操作系統(tǒng),都會(huì)受到UEFI固件中的這個(gè)漏洞的影響。
LionWiki本地文件包含漏洞
- 潛伏期:11年11個(gè)月;
- 引入日期:2008年11月;
- 修復(fù)日期:2020年10 月;
LionWiki是一個(gè)極簡(jiǎn)的wiki引擎,用PHP編寫(xiě);與許多流行的wiki引擎(如底層Wikipedia引擎)不同,LionWiki不使用數(shù)據(jù)庫(kù),而是完全基于文件。由于其目標(biāo)是簡(jiǎn)潔,完全基于文件是它的優(yōu)勢(shì)之一,但也造成了一個(gè)重大的安全漏洞。
本質(zhì)上,特定LionWiki實(shí)例下的各種文件是通過(guò)相應(yīng)頁(yè)面URL中的文件和路徑名訪問(wèn)的。這意味著,使用正確構(gòu)建的URL,您可以遍歷托管LionWiki實(shí)例服務(wù)器的文件系統(tǒng)。有一些URL過(guò)濾規(guī)定可以阻止此類嘗試,但是繞過(guò)URL過(guò)濾也十分簡(jiǎn)單。
Infosec Institute Cyber Range工程師June Werner指出,盡管進(jìn)行了一些修復(fù)嘗試,但該漏洞仍持續(xù)存在了很久。2009年7月就首次推出了一些緩解措施,然后2012年1月又進(jìn)行了更廣泛的緩解措施。不過(guò),盡管實(shí)施了這些緩解措施,但代碼還是無(wú)法抵御同類型的攻擊。直到2020年10月隨著繞過(guò)這些緩解措施的方法一起被重新發(fā)現(xiàn),該漏洞在代碼中又留存了八年。在此次正式上報(bào)之后,開(kāi)發(fā)人員對(duì)漏洞進(jìn)行了修復(fù)。
Domain Time II man-on-the-side(MOTS)攻擊
- 潛伏期:14年;
- 引入時(shí)間:2007;
- 修復(fù)時(shí)間:2021年4月;
如果同一網(wǎng)絡(luò)上的兩臺(tái)計(jì)算機(jī)無(wú)法就時(shí)間問(wèn)題達(dá)成一致,結(jié)果可能會(huì)很煩人,也可能會(huì)很糟糕。時(shí)間同步是計(jì)算領(lǐng)域長(zhǎng)期存在的問(wèn)題,目前最成熟的企業(yè)解決方案是Domain Time II,這是一款廣泛部署在Windows、Linux和Solaris上的閉源應(yīng)用程序。
Domain Time II幾乎從誕生起就隱藏著一個(gè)非常嚴(yán)重的漏洞。時(shí)不時(shí)地,或者在用戶可以設(shè)置的條件下,這個(gè)軟件會(huì)向其供應(yīng)商Greyware Automation Products運(yùn)行的更新服務(wù)器發(fā)送UDP查詢請(qǐng)求。如果服務(wù)器回復(fù)URL,Domain Time II會(huì)以管理員權(quán)限運(yùn)行程序,從該URL下載和安裝更新。
問(wèn)題出在哪兒?如果惡意行為者設(shè)法在Greyware的更新服務(wù)器之前回復(fù)查詢請(qǐng)求,那該攻擊者就能發(fā)送自己編造的回復(fù),提示Domain Time II下載攻擊者想要其安裝的任何惡意軟件。在真正的中間人(man-in-the-middle)攻擊中,攻擊者會(huì)雙向攔截;相較之下,Domain Time II攻擊是所謂的man-on-the-side攻擊:攻擊者無(wú)法攔截發(fā)往其目標(biāo)的回復(fù),因此必須搶在合法回復(fù)之前發(fā)送自己編造的回復(fù)。在實(shí)踐中,這意味著攻擊者需要已經(jīng)控制目標(biāo)本地網(wǎng)絡(luò)上的計(jì)算機(jī)才能實(shí)現(xiàn)這一目標(biāo),但這種攻擊代表攻擊者可以將其入侵升級(jí)到本地網(wǎng)絡(luò)上其他更有價(jià)值、更安全的機(jī)器。發(fā)現(xiàn)該漏洞的安全公司Grimm指出,該漏洞至少可以追溯到2007年的軟件版本中。
Linux SCSI 子系統(tǒng)漏洞
- 潛伏期:15年;
- 引入時(shí)間:2006年;
- 修復(fù)時(shí)間:2021年3月;
如果你是懷舊派,那你可能會(huì)記得SCSI,這是上世紀(jì)80年代的數(shù)據(jù)傳輸標(biāo)準(zhǔn),可能是你第一塊硬盤(pán)接入IBM PC或經(jīng)典Mac機(jī)的方式。時(shí)至今日,SCSI仍在某些環(huán)境中使用,而一貫追求靈活性和通用性的Linux仍在為有需求的系統(tǒng)提供一套擴(kuò)展SCSI子系統(tǒng)。這些模塊可通過(guò)所謂的自動(dòng)模塊加載功能獲得,操作系統(tǒng)可以在需要時(shí)從中獲取并安裝所需系統(tǒng)代碼——這在你想給Linux機(jī)器掛載SCSI硬盤(pán),但又不想尋找必要的支持代碼時(shí)非常有用,但同樣也有助于攻擊者利用代碼中的漏洞。
2021年3月,網(wǎng)絡(luò)安全咨詢公司Grimm發(fā)布了在Linux SCSI代碼中發(fā)現(xiàn)的幾個(gè)漏洞。其中一個(gè)緩沖區(qū)溢出漏洞,可允許普通用戶獲得root權(quán)限,其他漏洞則可能造成信息從內(nèi)核泄漏到用戶空間,而且全部漏洞都可用于獲取機(jī)密信息或作為對(duì)受影響機(jī)器展開(kāi)DoS攻擊的一部分。Grimm稱這些漏洞可追溯到2006年,是編程實(shí)踐缺乏安全考慮的表現(xiàn),而這種編程實(shí)踐在該代碼開(kāi)發(fā)時(shí)十分普遍。
Windows DNS SIGRed漏洞
- 潛伏期:17年;
- 引入時(shí)間:2003年;
- 修復(fù)時(shí)間:2020年;
DNS是被低估的互聯(lián)網(wǎng)骨干之一,計(jì)算機(jī)就是通過(guò)該系統(tǒng)從給定URL解析出關(guān)聯(lián)IP地址。DNS是分層的,域名解析請(qǐng)求在DNS金字塔各層間上下流轉(zhuǎn),找尋能回答“這臺(tái)計(jì)算機(jī)在哪兒?”這個(gè)問(wèn)題的DNS服務(wù)器。因此,幾乎所有主流操作系統(tǒng)都內(nèi)置了DNS。
2020年,微軟在其自己的DNS版本中披露了一個(gè)嚴(yán)重漏洞,該漏洞已經(jīng)在代碼中潛伏了 17 年,盡管沒(méi)有證據(jù)表明它曾被廣泛利用。發(fā)現(xiàn)此漏洞的Check Point研究人員將其稱為“SIGRed”,是Windows DNS服務(wù)器中的一個(gè)緩沖區(qū)溢出漏洞,可由隱藏在DNS數(shù)據(jù)包簽名中的漏洞利用代碼觸發(fā)。惡意名稱服務(wù)器可向域名解析請(qǐng)求響應(yīng)此類數(shù)據(jù)包,繞過(guò)大多數(shù)安全防護(hù)措施,獲取微軟DNS服務(wù)器的遠(yuǎn)程訪問(wèn)權(quán)限。這種攻擊還可以蠕蟲(chóng)化,這意味著它可以在沒(méi)有用戶干預(yù)的情況下自動(dòng)化和傳播。
PuTTY 堆溢出漏洞
- 潛伏期:20年9個(gè)月;
- 引入時(shí)間:1999年1月;
- 修復(fù)時(shí)間:2019年10月;
PuTTY是一款免費(fèi)的開(kāi)源工具套件,包含串行控制臺(tái)、終端模擬器和各種網(wǎng)絡(luò)文件傳輸應(yīng)用程序,內(nèi)置了SSH和各種其他加密方案。它最初發(fā)布是為了將Unix管理員慣用的系統(tǒng)自帶工具集引入Windows和經(jīng)典Mac OS,但它的范圍已經(jīng)擴(kuò)大,現(xiàn)在也廣泛用于Unix系統(tǒng)。雖然PuTTY旨在保護(hù)網(wǎng)絡(luò)連接,但事實(shí)證明,其核心代碼存在一個(gè)堆溢出漏洞,即另一種形式的緩沖區(qū)溢出問(wèn)題,并且可由過(guò)短SSH密鑰觸發(fā),造成PuTTY運(yùn)行崩潰,甚至遠(yuǎn)程代碼執(zhí)行。
作為歐盟EU-FOSSA項(xiàng)目發(fā)起的漏洞賞金計(jì)劃一部分,該漏洞被提交給了HackerOne;它為提交者賺取了3,645美元的獎(jiǎng)勵(lì),以及來(lái)自PuTTY團(tuán)隊(duì)的感謝。PuTTT團(tuán)隊(duì)指出,早在1999年,該漏洞就存在于他們擁有的PuTTY源代碼早期版本中。
win32k.sys漏洞
- 潛伏期:23年;
- 引入時(shí)間:1996年;
- 修復(fù)時(shí)間:2019年;
2019年在微軟Windows 的Win32 API中檢測(cè)到兩大重要漏洞。第一個(gè)是在4月份發(fā)現(xiàn)的User-After-Free漏洞,程序可利用操作系統(tǒng)編碼錯(cuò)誤訪問(wèn)本應(yīng)受到保護(hù)的系統(tǒng)內(nèi)存;安全研究人員在發(fā)現(xiàn)惡意黑客試圖在野使用它來(lái)控制計(jì)算機(jī)時(shí)發(fā)現(xiàn)了該漏洞。另一個(gè)漏洞是在12月發(fā)現(xiàn)的,是潛伏在操作系統(tǒng)窗口切換功能中的提權(quán)漏洞;與前者類似,該漏洞也是在主動(dòng)攻擊過(guò)程中被發(fā)現(xiàn)的,當(dāng)時(shí)這些攻擊通過(guò)模擬擊鍵以制造內(nèi)存泄漏。
這兩個(gè)漏洞都起源于Windows操作系統(tǒng)的早期階段??ò退够呒?jí)安全研究員Boris Larin解釋稱,
問(wèn)題源于WIN32K在Windows NT 4.0中首次亮相時(shí),當(dāng)時(shí)Win32的大部分圖形引擎都從用戶級(jí)轉(zhuǎn)移到內(nèi)核以提高性能。
雖然這兩個(gè)具體漏洞已被修復(fù),但微軟多年前做出的決策已經(jīng)產(chǎn)生了更廣泛的影響——而且影響可能還會(huì)持續(xù)下去。多年來(lái),在Windows中發(fā)現(xiàn)的內(nèi)核安全漏洞中有一半以上都是由WIN32K組件造成的。
PrintDemon漏洞
- 潛伏期:24年;
- 引入時(shí)間:1996年;
- 修復(fù)時(shí)間:2020年5月;
打印機(jī)是IT行業(yè)常見(jiàn)痛點(diǎn),因?yàn)榇嬖诤芏嗖煌姆N類,而且并非由制造計(jì)算機(jī)和操作系統(tǒng)的同一家供應(yīng)商制造,用戶卻期望能夠“即插即用”。尤其是微軟,在其早期階段就努力想讓用戶能夠相對(duì)容易地安裝打印機(jī)驅(qū)動(dòng)。但近期發(fā)現(xiàn)的一個(gè)稱為“PrintDemon”的漏洞表明,他們可能在上世紀(jì)90年代操之過(guò)急了,以至于直到今天還在為此付出代價(jià)。
漏洞的核心在于三個(gè)事實(shí):非管理員用戶可以向Windows機(jī)器添加打印機(jī);底層機(jī)制使得打印到文件而非物理打印設(shè)備成為可能;Windows上的關(guān)鍵打印服務(wù)以SYSTEM權(quán)限運(yùn)行。這意味著,只要做對(duì)了,就可以構(gòu)造“打印機(jī)”驅(qū)動(dòng)程序,它可以在文件系統(tǒng)(甚至是特權(quán)目錄)的任何位置創(chuàng)建文件(甚至是可執(zhí)行文件)。多年來(lái),黑客設(shè)計(jì)了大量漏洞利用程序利用這些設(shè)計(jì)缺陷——事實(shí)證明,震網(wǎng)(Stuxnet)就是其中之一——但2020年發(fā)現(xiàn)的PrintDemon卻尤為糟糕,其存在原因是由于微軟多年來(lái)的修復(fù)不過(guò)是補(bǔ)丁而非完全重構(gòu)整個(gè)打印子系統(tǒng)。
正如Winsider所言,
通過(guò)對(duì)文件系統(tǒng)進(jìn)行非常細(xì)微地改動(dòng),你就可以實(shí)現(xiàn)不屬于任何進(jìn)程的文件復(fù)制/寫(xiě)入行為,尤其是在重啟后。借助一個(gè)精心設(shè)計(jì)的端口名稱,你就可以讓Spooler進(jìn)程幫你在磁盤(pán)上任意位置放置(便攜式可執(zhí)行)文件。 |
研究漏洞年齡的意義
如果不是面對(duì)這樣一份列表,也許你不會(huì)猛然意識(shí)到,原來(lái)自己的電腦可能會(huì)因?yàn)榭肆诸D時(shí)期的打印機(jī)子系統(tǒng)漏洞而被黑。要知道了解這些漏洞的年齡是具有非常重要的現(xiàn)實(shí)意義的。Grimm首席漏洞研究員Adam Nichols表示,“我們?cè)讵?dú)立研究工作中發(fā)現(xiàn)漏洞時(shí),必須要做的一件事就是嘗試確定該漏洞存在了多長(zhǎng)時(shí)間。遺憾的是,這一點(diǎn)并沒(méi)有成為行業(yè)標(biāo)準(zhǔn),好在據(jù)我了解到,其他研究人員有時(shí)候也會(huì)這么做。付出加倍努力找出漏洞潛伏時(shí)長(zhǎng)算是本職以外的工作,但我覺(jué)得這是研究工作的重要組成部分。”
Sandy Clark的研究顯示,廣泛的代碼重用造成了巨大的已知漏洞攻擊面,并且長(zhǎng)期使用的代碼庫(kù)中潛伏的漏洞可能最終會(huì)演變?yōu)槁┒蠢贸绦?。這與傳統(tǒng)的軟件工程教條背道而馳,傳統(tǒng)的軟件工程教條認(rèn)為,大多數(shù)漏洞將在代碼庫(kù)使用早期遭遇現(xiàn)實(shí)問(wèn)題和攻擊時(shí)即得到修復(fù)。但事實(shí)證明,熟悉會(huì)滋生蔑視!
本文翻譯自:
https://www.csoonline.com/article/3620948/10-old-software-bugs-that-took-way-too-long-to-squash.html