Linux 啟動漏洞可繞過現(xiàn)代 Linux 系統(tǒng)的安全啟動保護
現(xiàn)代Linux發(fā)行版存在一個重大漏洞,攻擊者通過短暫物理接觸即可利用initramfs(初始內(nèi)存文件系統(tǒng))操控繞過安全啟動(Secure Boot)保護機制。
該攻擊利用系統(tǒng)啟動失敗時可訪問的調(diào)試shell,注入持久性惡意軟件,這些惡意軟件可在系統(tǒng)重啟后繼續(xù)存活,即使用戶輸入了加密分區(qū)的正確密碼仍能維持訪問權限。
核心要點
- 攻擊者通過物理接觸可利用initramfs在啟動失敗時的調(diào)試shell繞過安全啟動保護
- 多次輸入錯誤密碼會觸發(fā)調(diào)試訪問,允許向未簽名的initramfs組件注入持久性惡意軟件
- Ubuntu 25.04、Debian 12、Fedora 42和AlmaLinux 10存在漏洞;OpenSUSE Tumbleweed不受影響
- 添加內(nèi)核參數(shù)可禁用調(diào)試shell(Ubuntu系統(tǒng)使用panic=0,Red Hat系使用rd.shell=0 rd.emergency=halt)
Linux initramfs漏洞分析
據(jù)Alexander Moch指出,該漏洞的核心在于初始內(nèi)存文件系統(tǒng)(initramfs)——這是Linux啟動過程中用于解密根分區(qū)的關鍵組件。
與內(nèi)核鏡像和模塊不同,initramfs本身通常未經(jīng)簽名,在安全鏈中形成了可被利用的缺口。當用戶多次輸入加密根分區(qū)的錯誤密碼后,多數(shù)發(fā)行版會在超時后自動進入調(diào)試shell。
攻擊者可通過該調(diào)試shell掛載包含專用工具和腳本的外部USB驅(qū)動器。攻擊流程包括:使用unmkinitramfs命令解包initramfs,將惡意鉤子注入scripts/local-bottom/目錄,然后重新打包修改后的initramfs。
Moch研究中展示的關鍵腳本如下:
該惡意鉤子會在根分區(qū)解密后執(zhí)行,將文件系統(tǒng)重新掛載為可寫狀態(tài)并建立持久性訪問。由于攻擊遵循常規(guī)啟動流程且未修改已簽名的內(nèi)核組件,因此能規(guī)避傳統(tǒng)防護機制。
各發(fā)行版受影響情況
多發(fā)行版測試顯示不同程度的易受攻擊性:
- Ubuntu 25.04僅需三次錯誤密碼嘗試即可獲得調(diào)試shell訪問
- Debian 12可通過長按RETURN鍵約一分鐘觸發(fā)
- Fedora 42和AlmaLinux 10的默認initramfs缺少usb_storage內(nèi)核模塊,但攻擊者可通過Ctrl+Alt+Delete觸發(fā)重啟并選擇救援條目繞過限制
值得注意的是,OpenSUSE Tumbleweed因其默認啟動分區(qū)加密實現(xiàn)方式而對此攻擊免疫。安全專家將該漏洞歸類為"邪惡女仆"攻擊場景,需要短暫物理接觸目標系統(tǒng)。
緩解措施
有效防護方案包括:
(1) 修改內(nèi)核命令行參數(shù):
- Ubuntu系添加panic=0
- Red Hat系添加rd.shell=0 rd.emergency=halt 這些參數(shù)強制系統(tǒng)在啟動失敗時直接停止而非提供調(diào)試shell
(2) 其他防護措施:
- 配置引導加載程序密碼要求
- 啟用SSD原生加密
- 對啟動分區(qū)實施LUKS加密
(3) 高級解決方案:
- 統(tǒng)一內(nèi)核鏡像(UKI):將內(nèi)核與initramfs合并為單一簽名二進制文件
- 可信平臺模塊(TPM):將initramfs完整性度量值存入平臺配置寄存器(PCR)