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