トレンドマイクロのZero Day Initiative (ZDI)の研究者らは、MAZDAの車載インフォテインメントシステム(IVI)、具体的にはJohnson Controls Inc.が当初開発した最新ソフトウェアバージョン74.00.324Aを搭載したVisteon製のマツダコネクト接続マスターユニット(CMU)に、複数のゼロデイ脆弱性を発見しました。
特定された脆弱性の概要は次のとおりです。
- CVE-2024-8355:不適切な入力検証によって発生するSQLインジェクションの脆弱性。攻撃者が任意のSQLクエリを実行できる可能性があります。
- CVE-2024-8359、CVE-2024-8360、CVE-2024-8358:ユーザーが指定したパスとファイル名の不十分なサニタイズ処理によって発生するコマンド インジェクションの脆弱性により、不正なオペレーティング システム(OS)コマンドの実行が可能になります。
- CVE-2024-8357:ブートトラストチェーンの欠落により、アプリケーション システム オン チップ (SoC) がブート プロセスの整合性を検証できず、システムが改ざんに対して脆弱な状態になります。
- CVE-2024-8356:検証IPマイクロコントローラ ユニット(VIP MCU)のファームウェアが更新時のコード署名を強制しないため、署名されていないファームウェアのインストールが可能になるという、更新パッケージの検証不足です。
以上6つの脆弱性はすべて未修正のまま残っており、そのほとんどはUSB接続を介して悪用される可能性があり、攻撃者はデバイスへのルート レベルのアクセスが可能になります。このシナリオは、車両のIVIシステムに物理的にアクセスできる人物であれば、これらの脆弱性を悪用できる可能性があるため、重大なリスクをもたらします。
これらの脆弱性がどのように発見されたかについての詳細は、ZDIの関連ブログ記事をお読みください。
DeviceManager iAPにおけるSQLインジェクションの脆弱性
ZDIの調査で発見された最初の脆弱性であるCVE-2024-8355は、Appleデバイスのシリアル番号を処理する際のデータのサニタイズが不十分であることに起因します。AppleデバイスがIVIシステムに接続されると、そのシリアル番号はインターフェイス アクセサリ プロトコル (iAP) 経由で取得され、適切なサニタイズ処理なしにSQLクエリで直接使用されるため、インジェクション ポイントが作成されます。攻撃者はこの脆弱性を利用してAppleデバイスを偽装し、iAPシリアル番号を通じて任意のSQLコマンドをインジェクトし、ルート権限でデータベース操作やコード実行が可能になります。
緩和策:
- ユーザー入力を直接連結するのではなく、パラメータ化されたクエリを使用します。
- 悪意のある入力の実行を防ぐために適切な入力検証を実装します。
コマンドインジェクションの脆弱性
コマンドインジェクションの脆弱性(CVE-2024-8359、CVE-2024-8360、CVE-2024-8358)は、ソフトウェア更新プロセス内の複数の処理プロセスにおいてユーザーが渡した値が適切に処理されないことに起因します。
- CVE-2024-8359 (ZDI-24-1191): REFLASH_DDU_FindFile Command Injection
- CVE-2024-8360 (ZDI-24-1192): REFLASH_DDU_ExtractFile Command Injection
- CVE-2024-8358 (ZDI-24-1190): UPDATES_ExtractFile Command Injection
これら 3つの脆弱性には共通の根本原因があります。影響を受ける処理プロセスは、ファイル パスやファイル名などの入力を適切に無害化せずにコマンドライン ツールに直接渡しているのです。入力を検証せずにsystem()やsnprintf()などのシステム コールを使用するこのプロセスにより、攻撃者は任意のOSコマンドを注入できてしまい、その結果、システム全体が侵害される可能性があります。
緩和策:
- サニタイズされていない入力値をシステム コールに使用することを避けてください。代わりに、安全なAPI関数を使用してコマンド実行のセキュリティを確保してください。
- 厳密な入力検証を実施して、ユーザーが指定したパスとファイル名が想定される形式に準拠していることを確認し、特殊文字やシェル コマンドをブロックします。
- ソフトウェア更新に関連するすべてのコードパス、特にファイル操作に関連するコードパスの包括的なセキュリティ レビューを実施してください。
ブートトラストチェーンの欠落
CVE-2024-8357は、アプリケーションSoCがブート プロセス中にブートストラップ コードの整合性を検証できなかったことを示しています。この見落としにより、コード実行権限を持つ攻撃者がブート プロセスを操作し、永続的な制御権を取得し、システム構成を改ざんできるようになります。
緩和策:
- 暗号化による検証を使用してブートストラップ コードとブート プロセスにおける後続のすべての段階を検証するセキュア ブート メカニズムを実装します。
- ブート シーケンス全体を通じて、不正なコードの実行を防止するために、ハードウェアベースのルートオブトラスト(信頼の基点)を利用します。
更新パッケージの検証不足
CVE-2024-8356 は、VIP MCU がファームウェア更新のコード署名を強制できないことを指します。これにより、攻撃者は改変されたファームウェアをアップロードすることが可能となり、CANバスネットワークに対する不正な制御を許可することで車両の安全性が損なわれる可能性があります。
緩和策:
- VIP MCUのすべてのファームウェア更新にコード署名を必須とします。
- 認証された更新のみが適用されるように、更新プロセスに暗号署名の検証を組み込みます。
セキュリティのベストプラクティス
ZDIはこれらの脆弱性をVisteonに報告し、指定された期間内に応答がない場合には開示を認めるZDIの開示ポリシーに従って、ゼロデイ脆弱性として公開する予定であることをベンダーに通知しました。
以下に推奨されるベストプラクティスは、脆弱性への対処のみを目的としたものではなく、Tier-1サプライヤーと自動車メーカー (OEM)の両社がサイバーセキュリティの体制を強化するために、ソフトウェア開発プロセスに統合することが望ましいものです。
- 安全なコーディング手法の慣行:入力のサニタイズとパラメータ化されたクエリを使用してインジェクション攻撃を防ぎ、ユーザーが入力した値でシステム コールを直接呼び出すことを回避します。
- ソフトウェア更新プロセスの強化:すべての更新パッケージに対して暗号化検証を実施し、ファームウェア コンポーネントにコード署名を要求して、不正な変更を防止します。
- ブート セキュリティの強化:信頼の基点を備えたセキュアブート プロセスを導入し、すべてのブート ステージの整合性を検証し、認証されたコードのみがロードされるようにします。
- 定期的なセキュリティ監査の実施:コードレビューや侵入テストを含むハードウェアとソフトウェアの両方のコンポーネントの包括的なセキュリティ評価を実行し、脆弱性を特定して軽減します。
- マニアックなコミュニティからの情報収集:自動車の改造に関するフォーラムやコミュニティを監視して、一般的な脆弱性や潜在的な悪用を検出します。積極的に情報を収集することで、新たな脅威への対処や緩和策の改善に役立ちます。
- バグ報奨金プログラムの確立:独立したセキュリティリサーチャーに脆弱性の報告を促す、正式なバグ報奨金プログラムを策定します。このプロアクティブなアプローチにより、セキュリティ問題が実環境で悪用される前に、その特定と解決が可能になります。
まとめ
これらの脆弱性は、定評のある自動車製品であっても、プログラミング エラーや基本設計の見落としが原因で重大な欠陥が発生する可能性があることを示しています。安全な開発手法を優先し、堅牢な入力検証の実装、包括的な更新検証の実施は、IVIシステムの完全性とセキュリティを維持するために不可欠です。これらの問題は、よりレジリエントで安全な自動車エコシステムを構築するために、ソフトウェアとハードウェアの両方のコンポーネントに対応する総合的な自動車サイバーセキュリティの必要性を強調しています。