CANインジェクションが明らかにするCANバスの脆弱性

2025年10月29日
VicOne
CANインジェクションが明らかにするCANバスの脆弱性

By Reuel Magistrado, Automotive Threat Researcher   
 
現代のコネクテッドカーにおいて、車両盗難の手口はもはやバールやキー複製機だけに限定されません。攻撃者は現在、ノートパソコンやコードを用いて車両ネットワークの脆弱性を悪用しています。その手法のひとつであるコントローラエリアネットワーク(CAN)インジェクションは、電子制御ユニット(ECU)間で送受信される正当なコマンドを模倣することを可能にし、ドアのロック解除、窓の開閉、場合によっては車両の運転といった不正な操作を実行できます。

この手法を安全かつ制御された環境で検証するため、VicOneの脅威リサーチャーチームは、シンガポール国際サイバーウィーク(SICW)2025で開催されたSPIRITCYBER Automotive Capture the Flag(CTF)競技会に参加しました。 本イベントでは、仮想化された自動車システムに対する現実世界の攻撃をシミュレートする課題が参加者に与えられました。VicOneの目的は単に車両を「ハッキング」することではなく、こうした脆弱性がなぜ根絶されないのか、そして自動車エンジニアがそれらを防ぐためにより堅牢なシステムを設計する方法に焦点を当てることにあります。


CANインジェクションの概要

現代の車両は、車載ネットワークを介して通信する数十から数百ものECUに依存しています。その中でもCANバスは、高速で信頼性が高く、コスト効率に優れることから、最も広く使用されているインビークル通信方式の一つです。

しかしながら、CANバスは1980年代に設計されたもので、これはサイバーセキュリティが設計上の優先事項となるはるか以前の時代です。このためメッセージ認証、暗号化、送信元アドレス指定といった機能が欠如しています。この欠如により、バスへのアクセス権を得た者(物理的には車載診断ポート(OBD-II)経由で、論理的には侵害されたECU経由で)が誰であれ、正当なメッセージを装って細工されたメッセージを注入できることを意味します。

この脆弱性は「CANインジェクション」と呼ばれる技法の基盤となっており、実際の自動車盗難事件でも確認されています。犯罪者は診断アクセスポイントや露出配線を利用し、車両のロック解除や重要システムの制御さえ可能にする偽の信号を送信します。

この手法の実証として、VicOneのチームはSPIRITCYBER主催の自動車向けCTF「Time to Drive」チャレンジに取り組みました。これは安全なシミュレーション環境で同様の脆弱性を可視化し理解するためのものです。


CTFチャレンジにおけるCANインジェクションの実演

環境設定

本課題では、実機ハードウェアとソフトウェアを用いて車載ネットワークを再現しました。

  • Resistant Automotive Miniature Network (RAMN) ボード:ステアリング、ペダル、ギア選択を制御する複数のECUを備えた実証検証プラットフォーム
  • CARLAシミュレーター:オープンソースの自動運転シミュレーター
  • peakCANアダプター:CANバスコネクテッド用ハードウェアインターフェース
  • CANHとCANLへの直接アクセス:実際の配線をエミュレートするための物理的接続

シミュレートされた車両は、自動運転で走行しながら継続的にCANメッセージを送信し、実車における典型的なECUトラフィックを再現しました。


フェーズ1:CANトラフィックの観察

まずKali Linux上でCANインターフェースを確立しました:

# 標準の500kbpsビットレートでCANインターフェースを設定

sudo ip link set can0 up type can bitrate 500000 && sudo ip link set can0 up 

# ライブトラフィックをキャプチャして接続を確認

candump can0 

トラフィックの出力を観察し、RAMNボードの物理入力と照合することで、特定のCAN IDとペイロードを各車両機能にマッピングしました。

                                                   
制御CAN IDペイロード
エンジン始動1B80600000000000000
エンジンオン1B80400000000000000
ドライブにシフト0770100000000000000
アクセル50%03907EF000000000000
ブレーキ 100%0240F10000000000000
ステアリング中央0620808000000000000
ステアリング左方向0620304000000000000
ステアリング右方向0620C0B000000000000

表1. CANメッセージIDとシミュレート車両機能のマッピング


フェーズ2:メッセージコリジョン発生

cansendツールを使用してコマンドを注入しようとした際、車両は応答しませんでした。自動運転システムが定期的に自身のCANメッセージを継続的に送信しているため、我々のメッセージが効果を発揮する前に上書きされてしまったのです。これはメッセージコリジョンとして知られており、正当なトラフィックがバスを支配するCAN攻撃においてよく見られる現象です。

正当なECUを無効化する手段がないため、注入したメッセージはトラフィックに埋もれてしまいました。こちらが意図したコマンドを有効化するためには、アクティブなECUを「ミュート」する回避策が必要でした。


フェーズ3:診断サービスの活用

回避策として、車両診断用の標準化プロトコルである統一診断サービス(UDS)を利用する必要がありました。UDSは外部テスターがECU上でカスタムルーチンを実行することを可能にします。

ルーチン制御(0x31)サービスを利用し、ルーチンID 0x0200を実行することで、以下のECUが定期的なメッセージ送信を停止することを発見しました。これにより、我々が求めていた突破口が得られました:

  • ECU B - ステアリング、ブレーキ、照明;受信ポート 0x7e1、送信ポート 0x7e9
  • ECU C - アクセル、ギア、ホーン;受信ポート 0x7e2、送信ポート 0x7ea

診断サービス用のトランスポートプロトコルであるISO-TP(ISO 15765-2)経由でUDSコマンドを送信するため、isotpsendツールを使用しました:

# ECU Bの送信を停止する

echo "31 01 02 00" | isotpsend -s 7e1 -d 7e9 -l can0 

# ECU Cの送信を停止します

echo "31 01 02 00" | isotpsend -s 7e2 -d 7ea -l can0 

これらのコマンド送信後、両ECUからの定期的なCANトラフィックは停止しました。自動運転機能は無効化され、車両の完全な制御が可能となりました。


フェーズ4:手動での車両制御

自動運転機能を無効化した後、エンジン制御、ギア選択、加速、制動、ステアリングのためのカスタムCANコマンドを送信するbashスクリプトを作成しました。これにより、CARLA環境で完全なシミュレーション周回を達成し、キャプチャー・ザ・フラグ「SICW_CAR {drive_by_two_wires}」を無事、獲得しました。このフラグの名称は、CAN差動信号システムを構成する2本の配線、CANHとCANLに敬意を表したものです。

画像1. SPIRITCYBER Automotive CTF「Time to Drive」にチャレンジ中の著者

画像1. SPIRITCYBER Automotive CTF「Time to Drive」にチャレンジ中の著者


現実世界のサイバーセキュリティへの示唆

このAutomotive CTFチャレンジは、市販車両に存在する実際の攻撃ベクトルを反映しています:

  • 診断サービスの悪用 攻撃には必ずしも自動車のゼロデイ脆弱性が突かれるわけではありません。OBD-IIポートやその他の診断インターフェースへのアクセス権を持つ攻撃者は、正当なUDSコマンドを利用してECUの動作を変更することが可能です。
  • メッセージ・インジェクション 正規のECU通信が妨害されると、偽造CANメッセージにより車両の重要機能を制御できるようになる場合があります。これは、リサーチャーが制御環境下で実証したステアリングやブレーキの操作手法と類似しています。
  • CAN自体には認証機能が組み込まれていない CANは本質的に、バス上の全メッセージを信頼できるものと想定しています。特定のECUからの信号であることを検証するメッセージレベルの認証機能は提供されていません。ネットワーク上のあらゆるデバイスが、組み込みの検証メカニズムなしに他のデバイスを偽装することが可能です。


自動車業界へのセキュリティ上の教訓

SPIRITCYBER Automotive CTFは、実際の攻撃者が達成し得る行為を小規模で再現したものです。ここから得られる自動車メーカー(OEM)、Tier-1サプライヤー向けの重要な教訓は以下の通りです。

  1. メッセージ認証を追加すべき メッセージレベルの署名または暗号化を組み込むことが推奨されます。CAN with Flexible Data-Rate Security(CAN FD-SEC)や、今後導入予定のAutomotive Ethernet向けMACsecなど、軽量な暗号化チェックであっても、不正なCANトラフィックの受け入れを防ぐのに役立ちます。
  2. ネットワークセグメンテーションを徹底すること ブレーキ、ステアリング、パワートレインなどの安全機能に直結する重要ECUを、インフォテインメントやテレマティクス領域から分離する必要があります。単一の診断ポートから全車両サブシステムへのアクセスを許可すべきではありません。ゲートウェイECUも、ネットワーク境界を越えるメッセージを厳格にフィルタリングするルールを適用する必要があります。
  3. リアルタイム異常検知の導入 CANトラフィックパターンを監視する侵入検知システム(IDS)は、不審なメッセージレート、予期せぬID、異常なペイロード構造を検知できます。こうした異常は、攻撃者が目的を達成する前に、改ざんを早期に発見する手がかりとなります。

これらのベストプラクティスを組み合わせることで、CANインジェクション攻撃は攻撃者にとって各段に難しくなります。


まとめ:セキュリティは設計上の判断

CANインジェクションは、ソフトウェア・デファインド・ビークル(SDV)がますます高度になるにつれて、その攻撃対象領域も拡大するという単純な真実を浮き彫りにします。SPIRITCYBER Automotive CTF、Vehicle Cybersecurity CompetitionPwn2Own Automotiveなどさまざまな自動車サイバーセキュリティ関連コンテストは、取り組みを通じて検証・発見された攻撃対象領域や脆弱性などセキュリティ上のギャップが保護されないまま放置された場合、車両の機能が容易に脆弱なものとなり得ることを示しています。これらのコンテストはセキュリティリサーチャーが脆弱性がどのように発生するかを理解するための安全な場を提供し、さらに重要なことに、最初からそれらを設計段階で排除する方法を学ぶ場となっています。

結論として、自動車サイバーセキュリティはもはや後付けの対策や追加機能として扱うことはできません。自動車サイバーセキュリティは設計上の判断事項であり、車両の開発ライフサイクル全体を通じて実装すべきものといえるでしょう。

リソースからもっと知る

自動車サイバーセキュリティの理解を深める

ブログを読む

自動車業界のお客さまのサイバーセキュリティを加速させるために

デモの依頼