web-dev-qa-db-ja.com

CANバス上の悪意のあるデバイスに対する保護はありますか?

CAN(コントローラーエリアネットワーク)は、すべての現代の車で使用されているバスです。あなたはこのバスを介して多くの車の情報を読むことができ、いくつかの重要な制御信号(例えば、ESPのためのブレーク?)がそのバスを乗り越えると思います(しかし、これについてはあまり確信がありません)。

CANについてはほとんど知りません。

CANバスを介して通信するデバイスは、他の送信を開始する前に識別子を送信する必要があります。このプロトコルでは、識別子の小さいデバイスが優先されることを定義しています。プロトコルには「ドミナント0」があります。つまり、1つのデバイスがバスに0を置き、別のデバイスがバスに1を置く場合、0はバス上にあります。デバイスは、いつ送信するかを含め、常にリッスンします。これは、ある位置に1があるバスに識別子を配置するデバイスを意味しますが、0を読み取ると、優先順位の高いデバイスもバスを使用する必要があり、停止する必要があることがわかります。

攻撃者がバス上で常に「0」を送信するとどうなりますか?たとえば、カーラジオのソフトウェアをアップグレードして、常にバスに「0」を配置することは可能でしょうか(より高度な攻撃については 自動車の攻撃面の包括的な実験的分析 を参照)。そのような攻撃が起こらないように、更新できない方法(ハードウェアやROMなど)で実装されたそのような低レベルのプロトコル?悪意のあるデバイス/この種のサービス拒否攻撃からバスを保護することは可能ですか?

10
Martin Thoma

CANは比較的単純になるように設計されており、処理能力が非常に小さい(タイミングが重要な場合に忙しい)マイクロコントローラー間に実装されることが多く、メッセージをリアルタイムで中継するために使用されます。暗号化とDoS保護を追加すると、複雑さが増しすぎ、すべてのコントローラーで共有されるワイヤーが2つしかないため、この場合でもDoS保護は不可能だと思います(悪意のあるデバイスがフラッディングを決定した場合、どうしますか?ガベージ付きのバス、または継続的にデータラインを「ハイ」に保持しますか?)。

部分的な解決策は、ネットワークを複数のバスに分離することです。ほとんどの(すべての?)自動車で行われているように、個別のバスが重要な要素に使用され、ゲートウェイがそれらの間の特定のメッセージを中継するために使用されます。単一バスのDoSは他のバスに影響を与えません。

コントローラーのファームウェアを再プログラムすることは確かに可能です:

evil software

そのための使いやすいソフトウェアとハ​​ードウェアさえあります。この特定のスクリーンショットは、エンジンコントローラーとインストルメントクラスターのファームウェアを更新できるプログラムを示していますが、すべてのコントローラーに同じことが当てはまることは確かです。それは、エンジン/計器クラスターを改ざんできるソフトウェアの需要が高いことです(理由)エアバッグやABSとの相互作用が可能なものよりも。犯罪者がこれらの欠陥を悪用していると私は確信しています。また、あいまいさによるセキュリティが機能しないこともまた証明しています。

元のファームウェアをリバースエンジニアリングする時間がある場合は、独自の悪意のあるバージョンを簡単に作成できます。必要なのは、新しいファームウェアをインストールするために(診断ポート経由で)車のCANバスに30秒間アクセスすることだけです。もちろん、ラジオをエントリポイントとして使用して(たとえば、MP3デコード機能の脆弱性を悪用して)、CANバスにアクセスし、悪意のあるファームウェアを他のコントローラーにインストールすることができます。唯一のセキュリティは、時間の経過とともに減衰するプロトコルの不明瞭さです。

最後に、CANバスをセキュリティで保護する効率的な方法はないと思います-暗号化と認証はあまり効果がありません-それは確かにバス(診断ポートに接続されている不正なデバイスなど)への侵入を防ぎますが、攻撃者のメインエントリポイントとなるバス(ラジオなど)へのアクセスが想定されているデバイスのセキュリティを侵害しないようにします。

ファームウェアのインストールについては、ファームウェアをインストールする前に車のドキュメントに印刷された一意のパスフレーズを要求することが適切な解決策です。これにより、車の正当な所有者が改ざんすることを許可しながら、バス上の侵害されたデバイスが他のデバイスを侵害するのを防ぎます。必要に応じてファームウェア(失われたキーを交換したり、使用済みのコントローラーを再プログラムしたりするために300ユーロを支払う必要があり、多くの場合ディーラーに支払う必要があるため)。

4
user42178

「0」を送信し、バスをドミナント状態にすることは、可用性への攻撃です。その結果、別のデバイスが送信しようとするたびに、バスアービトレーションアルゴリズムがバックオフするように指示します。バスにメッセージは届きません。

車両の影響は何ですか?イグニッションをオンにするときは、セキュリティモジュールとエンジンコントロールユニット(ECU)が通信する必要があります。彼らが話すことができない場合、何も起こりません。攻撃者が運転中のある時点でバスを強制的にフラッディングした場合、それは障害のあるバスのように扱われます。フォールトトレランスは、サブシステムが正しくシャットダウンされ、乗客に危険が及ばないようにします。

0
user2969932