LogoFAIL:利用圖像檔案攻擊電腦

當啟動電腦時,生產商的商標會在操作系統啟動前展示在螢光幕上(尤其筆記本型電腦),其實該商標可以轉換,而且不會造成使用上的分別,該圖像儲存在UEFI (Unified Extensible Firmware Interface)韌體內,但轉換圖像的功能卻帶來嚴重的安全漏洞。

UEFI bootkit:惡意程式在操作系統啟動前已載入

以前的電腦在啟動時會運行名為BIOS的程式,雖然功能極之有限,但其工作只是啟動電腦的硬件,然後便會把控制轉移到操作系統上,不過自2000年後,BIOS逐漸被UEFI所取代,後者是基本程式的進階版並加入新功能,包括防範執行惡意編碼。UEFI更具備名為Secure Boot的功能,採用加密演算法去檢查電腦啟動時每個階段的編碼(自啟動至讀取操作系統),令惡意編碼更難偽裝真OS編碼,不過道高一尺魔高一丈,只要攻擊者能夠把惡意程式(或bootkit)偷放入UEFI,其後果極度嚴重。

UEFI bootkit的問題是它們在操作系統中極難被偵測,但bootkit能修改系統檔案和在OS以最高權限執行惡意編碼,而且即使重裝操作系統甚至是更換硬盤仍能「生存」,因為它並非倚靠儲存在系統上的資料,因此經常被用作複雜的針對攻擊。

與圖像的關係

由於UEFI有頗為頑強的防護對付執行惡意編碼,所以加入木馬程式到開機程序並不簡單,但只要利用UEFI內的安全漏洞,就能在早期執行任意代碼,而顯示商標時會啟動一個程式去讀取圖像檔的數據,然後展示到螢光幕,如果該程式行為不當又會怎樣?現時有三家主要UEFI軟件開發商,AMI、Insyde和Phoenix,每家的商標處理都各有不同,例如Insyde對不同格式圖像(JPEG和BMP)有不同的處理程式,AMI和Phoenix則使用單一程式處理不同格式,可惜每個都被發現安全漏洞,總共24個嚴重錯誤。

攻擊者可以故意透過更改新商標,把解析度的大小超過上限,令運算錯誤最終導致把資料由原本圖像檔安,變成寫入到執行資料區域,該資料能以最高權限執行,從而令攻擊者可採取接近任何行動,而部份廠機(部份Apple和Dell裝置)的產品並不受影響,原因十分簡單,因為在UEFI更換商標的功能被封鎖。

對企業的危險影響

理論上這種攻擊可以透過遙距操作,某些情況可以把特別準備的圖像放入UEFI系統,等待下次重啟時執行,不過要做到此動作其實已需要完全存取系統,所以電腦上的任何資料應該已被攻擊者予取予攜,但利用LogoFAIL的話,就能確保即使操作系統被重新安裝,惡意編碼依然能夠存活,通常被APT攻擊者所採用。

幸好只要透過更新UEFI版本就能夠解決有關問題,但並非所有公司都願意保持韌體更新,所以依然會有大量不受人呆護的裝置存在,而且受影響並不局限於電腦,部份伺服器底板也同樣受影響。

資料來源:Kaspersky Blog