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