
U-Bootブートローダーの脆弱性に対する概念実証エクスプロイトスイート。安全でない更新メカニズム、ハードコードされた認証情報、デバッグインターフェースへのアクセス、アンチロールバック保護の欠如を含み、認可されたIoTセキュリティテストを目的としています。
この概念実証 (PoC) は、2019年8月27日にコンパイルされたU-Bootブートローダーバージョン1.1.3の脆弱性を検証するために作成されました。このコードは、OWASP IoTセキュリティテストガイド (ISTG) カテゴリに関連する5つの異なる脆弱性を実装しています。
警告: このPoCは、テストの許可を得たデバイスでのみ使用してください。許可なくシステムで使用すると、適用法令に違反する可能性があります。
# Install required libraries
pip install pyserial cryptography
このPoCを使用するには、ターゲットデバイスのシリアルインターフェースに接続する必要があります:
/dev/ttyUSB0、WindowsではCOM3)このスクリプトは、各脆弱性を個別に、またはすべて同時にテストするためのいくつかの操作モードを提供します。
python3 uboot_exploit_poc.py --port /dev/ttyUSB0
--exploitパラメータを使用して特定のエクスプロイトを実行できます:
# 「安全でない更新メカニズム」の脆弱性をテスト
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 1
# 「ハードコードされた機密値」の脆弱性をテスト
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 2
# 「デバッグインターフェースアクセス」の脆弱性をテスト
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 3
# 「ファームウェアダウングレードに対する保護の欠如」の脆弱性をテスト
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 4
# 「更新のための安全なチャネルの欠如」の脆弱性をテスト
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --exploit 5
# ボーレートを変更(デフォルト:115200)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --baudrate 57600
# シリアルタイムアウトを変更(デフォルト:1秒)
python3 uboot_exploit_poc.py --port /dev/ttyUSB0 --timeout 2
スクリプトはuboot_extractedというディレクトリを作成し、以下を含みます:
ファイルfull_exploitation_summary.txtには、すべての脆弱性テストの完全な概要が提供されます。
ブートローダーはファームウェア更新のための適切な署名検証を欠いており、許可されていないファームウェアのインストールを可能にします。
資格情報やキーなどの機密値がブートローダーバイナリにハードコードされており、機密情報の抽出が可能です。
デバッグインターフェースの保護が不十分で、認証なしに低レベルのシステム制御へのアクセスを許可します。
ブートローダーはアンチロールバックメカニズムを欠いており、既知の脆弱性を持つバージョンへのダウングレードを可能にします。
ファームウェア更新は、暗号化や認証なしに安全でないチャネルを介して送信され、傍受や改ざんが可能です。
このPoCによって収集された証拠は、CVE提出をサポートするために使用できます。CVE提出のためには:
uboot_extractedディレクトリからすべてのログと証拠を収集しますこのツールは教育および専門的なセキュリティテスト目的でのみ提供されます。作成者は、このツールの誤用またはそれによって生じたいかなる損害についても責任を負いません。システムまたはデバイスをテストする前に、必ず適切な許可を取得してください。