韌體映像是檔案和文件系統的集合,其中包含運作硬體的軟體。 它通常包含壓縮的檔案、可執行文件和系統檔案。 這些檔案系統可能或可能不會在每個檔案中包含其他文件系統。 例如,.zip檔案的韌體映射可能包含個別檔案,例如其中可執行檔,但也可能包含其他壓縮文件系統,例如 SquashFS 檔案。 您可以將它視覺化如下:
每個圓形都代表一個檔案,該檔案中可能或可能沒有更多文件系統。 擷取器會重複擷取每個圓形,直到擷取其中沒有更多圓形(檔案)。
如果大型的包覆橢圓形代表固件映像,那麼橢圓形內的三個圓形可能代表此固件映像內的各個檔案系統。 圓形甚至可能代表內嵌文件系統的可執行檔。
由於韌體映像的結構複雜——任何一層可能是可執行文件或具有內嵌可執行文件或檔案系統的文件系統——因此我們需要一種全面的方法來呈現擷取結果,以準確反映韌體映像的結構。
擷取器的運作方式
韌體分析擷取器會識別和解壓縮韌體映射內找到的數據。 有多個類型的擷取器,每個檔類型各有一種。 如需韌體分析支援的完整檔案格式清單,請參閱 韌體分析常見問題。
例如,ZipArchive 擷取器會提取 ZipArchive 檔案。 擷取器會依據映像在您系統磁碟上的狀態加以擷取,而您需要將檔案路徑與建置環境中的檔案結構建立關聯。 當您將韌體映射上傳至韌體分析服務時,擷取器會以遞歸方式擷取影像,直到無法進一步擷取為止。 這表示原始韌體映像會解壓縮到個別檔案中,而每個個別檔案都會再次傳送至擷取器,以查看是否可以進一步解壓縮。 這會重複,直到擷取器無法進一步解壓縮為止。
有時候,可能會有許多檔案串連成一個檔案。 擷取器會識別該檔案中有許多檔案,並使用適當的擷取器來擷取每個檔案,然後將每個檔案放入自己的個別目錄。 這表示,如果有四個使用 GZip 編譯的檔案,而且它們被串接成一個檔案,擷取器會在該提取層級識別出有四個 GZip 檔案。 擷取器會將第一 GZip 個檔案放入名為 GZipExtractor/1的目錄中,第二個檔案放入名為 GZipExtractor/2的目錄中,依此推移。
解譯擷取器所建立的檔案路徑
在韌體分析服務中,分析結果的SBOM檢視包含檔案路徑:
以下是可能會在分析結果中看到的檔案路徑範例,以及如何將文件系統結構中的路徑可視化:
下列文件系統結構是 SBOM 檔案路徑的視覺表示法:
在此範例檔案路徑中,從 ZipArchiveExtractor 中提取 ZipArchive,並將內容放入名為 ZipArchiveExtractor/1 的目錄中。 同樣地,'1' 表示這是第一個,並且可能是唯一的 ZipArchive 位於這個擷取層級的檔案。 擷取器會將名為 zip-root 的預設名稱指派給 ZipArchive 檔案。
注意
通常,您可以假設擷取器會建立後綴 -root 的子目錄,而且實際上不存在於您的環境中。 它只是擷取器所建立的子目錄,可保存該文件類型的內容。
在 zip-root 內有 adhoc 檔案:
在adhoc檔案內有lede-17.01.4-arc770-generic-nsim-initramfs.elf檔案。
由於檔案結尾為 lede….extracted,這表示此 .elf 檔案中有需要進一步擷取的內容。 下一個使用的擷取器是 CPIOArchiveExtractor,這表示在 CPIOArchive 檔案中嵌入了一個 .elf 檔案系統。 檔案 CPIOArchive 的內容已被放置在 cpio-root 子目錄中。
檔案 CPIOArchive 中有檔案 bin,在檔案 bin 中有一個名為 busybox 的檔案。
在您的環境中找出路徑
由於使用的第一個擷取器是ZipArchiveExtractor,這表示所有內容都存在於Zip檔案中。 找出檔案 Zip ,在該檔案中,您環境的完整路徑會是 /adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf.extracted/bin/busybox。 不過,假設您只能看到第一層的擷取 – .elf 檔案。 若要進一步查看,您需要自己的擷取器,才能擷取超過第一層。 這表示,實際上,要移至的檔案路徑會是: /adhoc/lede-17.01.4-arc770-generic-nsim-initramfs.elf。
多個擷取器路徑
在某些情況下,您可能會注意到檔案路徑旁的 (+1) 或 (+2) :
當您將滑鼠停留在數位上方時,您會看到如下所示的彈出視窗:
這表示您可以在這兩個可執行路徑中找到 SBOM。
UEFI 分析能力如何影響擷取器路徑
UEFI(統一可擴展韌體介面)韌體在結構和內容上與其他韌體類型不同。 單一 UEFI 韌體映像可包含:
- UEFI 專用模組
- 韌體中嵌入的其他可執行檔格式(例如 Linux ELF 二進位檔)
因此,韌體分析結果——以及 SBOM 檢視中顯示的擷取路徑——可能在同一分析中包含多種執行型別的混合。
對於 UEFI 韌體,目前以 預覽 功能提供擷取路徑增強功能。 若有,抽取路徑可能包括:
- UEFI 模組名稱
- UEFI 韌體內部使用的基於 GUID 的識別碼
這些改進旨在提升 SBOM 條目與 UEFI 模組關聯時的清晰度。 不過,這些問題可能不會出現在所有韌體映像檔或所有模組中。
注意
由於 UEFI 擷取器路徑增強仍在預覽階段,涵蓋範圍可能不完整。 缺少模組名稱或路徑應視為 未知,而非元件缺失的證據。
UEFI 分析覆蓋率與擷取器路徑之間的關係
UEFI 分析能力會依功能成熟度而異:
- 偵測嵌入於 UEFI 韌體中的加密憑證與金鑰功能已全面開放使用(GA)
- UEFI 韌體的 SBOM 擷取、弱點偵測、二進位強化屬性及擷取路徑增強目前處於預覽階段
因為 UEFI 韌體的 SBOM 與弱點資料是從偵測到的元件中取得:
- CVE 僅會出現在可被確定辨識版本的元件上
- 部分 SBOM 列可能缺少或部分資料
- 部分解壓路徑可能僅適用於韌體中嵌入的非 UEFI 執行檔
UEFI 相關列中缺少或空值應解讀為 未知,而非確認安全功能缺失或漏洞不存在。