在OpenWrt 專案開發的ASU(有人參與的SysUpgrade)工具包中,已發現嚴重漏洞(CVE-2024-54143),這些漏洞允許破壞透過sysupgrade.openwrt.org 服務或第三方ASU 伺服器分發的組件,工件,並實現使用「有人參與升級」模式透過 Web 介面更新韌體,在用戶系統上安裝攻擊者修改的韌體映像selector.openwrt.org 或 attend.sysupgrade 命令列工具。
要成功實施攻擊,攻擊者只需向 ASU 伺服器發送生成組件的請求(任何使用者都可以發送此類請求,無需身份驗證)。透過操縱專門設計的套件列表,攻擊者可以安排發送先前生成的惡意圖像,以回應其他用戶的合法建置請求。
ASU 服務在 OpenWrt 中用於產生和安裝韌體更新,而不會遺失現有設定和使用者安裝的軟體包。透過 Web 介面或命令列工具,使用者傳送請求以產生更新的韌體映像,指示其係統上安裝的軟體包。一段時間後,ASU 伺服器會產生與訂購內容相對應的圖像,之後用戶下載該圖像並將其刷新到他的裝置上。此外,還提供了一個選項,可讓您在更新的韌體中儲存現有設定。
ASU 伺服器負責處理使用者請求,使用 ImageBuilder 工具啟動自動韌體鏡像構建,並維護先前構建的鏡像快取。如果使用者要求的鏡像已在 ASU 伺服器中建置過,則 ASU 伺服器會嘗試使用 ImageBuilder 工具自動建立韌體映像。 服務器 如果仍然有效,系統會立即從快取中傳回現有映像,而無需啟動建置流程。
此攻擊行為是由於兩個漏洞而成為可能的:
- Imagebuilder 工具包的 build_reques.py 請求處理程序中存在漏洞,允許使用者透過傳遞特殊格式的包名稱將自己的命令替換到建置過程中。此漏洞是由於在將套件名稱用作 make 實用程式的參數之前未對套件名稱中的特殊字元進行正確檢查而導致的。利用此漏洞,攻擊者可以在使用正確的組件金鑰簽署的伺服器上建立惡意韌體映像。
- util.py 庫中存在一個漏洞,該漏洞是由於用於檢查緩存中是否存在現成固件映像的 SHA-256 哈希值被削減為 12 個字符,從而顯著降低了熵級別並使其成為可能,透過碰撞選擇,形成與合法雜湊值一致的惡意鏡像。結合 Imagebuilder 中的漏洞,攻擊者可能會利用雜湊問題來「污染」ASU 伺服器緩存,並將惡意圖像放入其中,並傳回給普通用戶的請求。
導致此次攻擊發生的變更發生在7月8日。該問題已於12月4日修復。我們採取了其他安全措施來確保ASU服務的正常運作。 服務這些系統與專案的主要建置系統沒有交集,與 OpenWrt Buildbot 分離,並且無法存取 SSH 金鑰和用於產生數位簽章的憑證等機密資源。
據稱,OpenWrt 開發人員沒有發現該專案基礎設施受到任何損害的痕跡,但為了安全起見,他們從頭開始重新安裝了運行易受攻擊組件的系統。該問題並未影響透過 downloads.openwrt.org 網站分發的官方鏡像,並且在分析程序集日誌時,沒有發現惡意請求的痕跡。同時,由於 ASU 伺服器會自動清理超過 7 天的組件,因此無法審核舊組件。
OpenWrt 代表評估,在實踐中利用已識別的漏洞透過 OpenWrt 基礎設施傳播惡意影像的可能性接近零,但是,建議 ASU 用戶將其裝置上的 OpenWrt 韌體替換為相同版本。
來源: opennet.ru
