広く利用されているブートローダー「U-Boot」に、6件の重大な脆弱性が発見されました。悪意のあるFlattened Image Tree(FIT)イメージを介して悪用すると、攻撃者は認証前の任意コード実行や、起動処理の早い段階でのデバイスクラッシュを引き起こすことが可能になります。
U-Bootは、コンシューマー向けルーターやIoTデバイス、データセンターでのリモートサーバー管理に使われるBaseboard Management Controller(BMC)など、幅広い組み込みプラットフォームの基盤となっています。そのため、この段階における脆弱性は重大な影響を及ぼしかねません。
U-BootはOSよりも先に実行され、多くの設計において検証済みブート(Verified Boot)を強制する役割を担っているため、これが侵害されると、下流のファームウェアやソフトウェアコンポーネント全体の信頼の連鎖が崩壊してしまいます。
Binarlyの調査はU-BootのVerified Boot実装、特にFIT署名検証機能に焦点を当てています。この機能は、バンドルされたファームウェアコンポーネントを実行する前に、その完全性と真正性を確認するものです。
複数のU-Bootの脆弱性
最新の安定版U-Boot、バージョン2026.04を分析した結果、FITの解析および検証ロジックに未知の脆弱性が6件発見されました。
これらの脆弱性の一部は、バージョン2013.07まで遡るコードに起因しています。つまり、これまでにリリースされた50を超えるアップストリームバージョンや、数多くのベンダーによるフォーク版が、必要な修正を未適用のままであれば影響を受ける可能性があるということです。
6件の脆弱性はいずれも、信頼できないFITイメージを署名検証が完了する前に処理する過程で発生するもので、攻撃者は不正な形式のイメージを侵入の足がかりとして悪用できます。
これらの脆弱性による影響は、大きく2つのカテゴリーに分類されます。任意コード実行とサービス拒否(DoS)です。このうち2件は連鎖的に悪用することが可能で、U-Bootの検証処理中にスタック状態を破損させ、リターンアドレスを上書きすることで、確実な認証前コード実行を実現できます。
残る4件の脆弱性は主にサービス拒否状態を引き起こすもので、細工されたイメージによってNULLポインタ参照、範囲外読み取り、あるいはFIT処理中のスタック枯渇が発生します。
これにより、SPIフラッシュの再書き込みなど手動での復旧作業なしにはデバイスが起動できなくなるおそれがあります。セキュリティ上重要な環境では、ブートローダーレベルでのサービス拒否攻撃であっても、特にリモートや無人で運用されているシステムにおいては深刻な運用上の影響をもたらしかねません。
これら6件の脆弱性はBinarlyのアドバイザリでBRLY-2026-037からBRLY-2026-042として追跡されており、それぞれの概要は以下の通りです。
- BRLY-2026-037: FITイメージの署名検証中に発生する、`fdt_find_regions`におけるNULLポインタ参照、およびスタックベースのバッファオーバーフローの可能性。
- BRLY-2026-038: `fdt_get_name`呼び出し失敗時に伝播する負の長さの値に起因する、`fdt_find_regions`におけるスタックバッファアンダーフロー。
- BRLY-2026-039: hashed-stringsプロパティのサイズ値が検証されないことによるサービス拒否。文字列領域からの範囲外読み取りにつながる。
- BRLY-2026-040: 古いFDTバージョンにおいて`fdt_get_property_by_offset`がNULLを返した際に発生する、NULLポインタ参照によるサービス拒否。
- BRLY-2026-041: 有効なイメージ範囲外を指す外部データプロパティ(data-position/data-offset/data-size)が検証されないことによるサービス拒否。
- BRLY-2026-042: FIT形式の検証中、`fdt_check_no_at`における無制限の再帰処理。深くネストされたツリーによりスタック枯渇を引き起こす。
ブートローダーへの攻撃には物理的なアクセスが必要だと考えられがちですが、Binarlyによれば、実際の攻撃シナリオでは、攻撃者がBMCや管理インターフェースを通じて公開された正規のファームウェア更新機構を経由して、間接的にU-Bootに到達できるケースがあるとのことです。
Supermicro BMCプラットフォームに関する過去の調査で、同チームは、管理コンソールにアクセスできるリモートの攻撃者が更新ロジックを悪用して悪意のあるイメージを送り込み、既存のチェックを回避してSPIを攻撃者が制御するファームウェアで再書き込みできることを実証しています。
これと同様の手口によって、今回のU-Bootの脆弱性を悪用する武器化されたFITイメージを送り込むことが可能になる恐れがあり、特にアウトオブバンド管理機能が外部に公開されているデータセンターやクラウド環境では注意が必要です。
Binarlyはこれらの脆弱性について、U-Bootのメンテナーと協調して開示を行い、6件すべての問題に対するパッチを提供しました。これらのパッチはすでにプロジェクトのメインブランチにマージされています。
今回の修正では、堅牢なNULLチェックの実装、オフセットとサイズに対する範囲検証の強制、そして既存の`FDT_MAX_DEPTH`パラメータを用いた再帰の深さ制限によるスタック枯渇の防止が行われています。
U-Bootをベースに製品を構築しているベンダーやインテグレーターには、最新の変更を速やかに取り入れ、該当するコミットを自社のブランチにバックポートするとともに、信頼できない、あるいはリモートから供給されるFITイメージを取り込む可能性のあるデバイスについては、優先的にアップデートを行うことが強く推奨されます。
今回の調査結果は、ブート処理を担う低レベルのコンポーネントであっても、スタック上位のソフトウェアと同等の厳格なセキュアコーディング、堅牢化、そして継続的な監査が必要であることを改めて示すものです。
Interact with Cyber Threats in Windows, Linux, macOS VMs to Trigger Full Attack Chain - Analyse Malware & Phishing with ANY RUN
翻訳元: https://gbhackers.com/multiple-u-boot-vulnerabilities/