
生のCAN
バス信号CAN(Controller Area Network)バスは、自動車業界の標準になりました。すべての新車はCANをサポートする必要があります(ヨーロッパでは2001年以降、米国では2008年以降)。 CANは、車以外にもさまざまなデバイスで使用されています。 CANの診断機器のメーカーは、さまざまな自動車機器に加えて、オートバイ、フォークリフト、船、鉱山列車、浴場、無人飛行機などでの使用を宣伝しています。CANとは何かを見てみましょう。
車両にはいくつかのCANが使用されています。たとえば、フォードフォーカスには、このようなタイヤが4つあります。エンジン、ブレーキ、ダッシュボードなどを制御するための3つの高速(500 kbps)と、ドア、ヘッドライト、エアバッグ、オーディオシステム、エアコンなどを制御するための1つの低速(125 kbps)です。他のもの。 CANに接続することで、車内の任意のデバイスからの信号をシミュレートできます。たとえば、電話のアプリケーションからエアコンを制御したり、車を動かさずに走行距離計を巻き上げたりできます。 Arduinoバスとリレーに接続することで、ダッシュボードから追加のパーキングカメラを制御できます。Voyageのような自動運転のスタートアップでさえ、通常の量産車でCANに接続し、ペダルとステアリングホイールからの信号をシミュレートする方法を学習して、プロトタイピングを開始します。
車内でCANに接続するには、通常、ステアリングホイールの近くにOBD-II(オンボード診断)コネクタがあります。
コンピューターをCANに接続するためのOBD2-USBアダプターの価格は5ドルからで、車内のすべてのトラフィックを追跡できます。 OBD-IIコネクタは、CANに接続されたデバイスからパケットを受信できるが、パケットをバスに送り返すことを許可しない「ハードウェアファイアウォール」によって保護されている場合があります。この場合、コネクタのネジを外して、代わりにCANワイヤに接続するだけで十分です。

CANバスで送信される各パケットは、送信デバイスID(11ビットまたは29ビット)と最大8バイトの送信データで構成されます。イグニッションがオンのときにバスを通過するトラフィックは、次のようになります。

CANトラフィックを分析するためのツールは、商用とオープンソースの両方で多数あります。Linux用のcan-utilsパッケージには、
cansnifferCAN IDごとに最後に送信されたパケットのみを表示するユーティリティが含まれているため、バス上の各センサーの読み取り値の変化を追跡できます。

CANトラフィックのリバースエンジニアリングについては、このトレースをレポートから取得したシンガポールの研究者が、実験車のダッシュボードをビデオに記録し、ダッシュボードの変更をトラフィックの同時変更と関連付けました。このように速度センサーのCANIDとそれによって送信されるデータの形式を決定した後、彼らはそのパケットを「偽造」し、誤った読み取り値を速度計とタコメーターに送信することを学びました。
「偽の」パケットの送信と並行して、速度センサーからの実際の信号がバスを介して送信され続けることを理解されたい。タコメーターが作成された読み取り値を表示するには、バス上の実際の読み取り値の送信を監視し、何らかの方法でそれらを抑制する必要があります。たとえば、速度センサーのCAN ID送信を検出した直後に、データラインを短絡してバスを物理的に「消音」します。実際の読み取り値を抑制する、より単純で純粋なソフトウェアの方法は、送信直後に「偽の」パケットを送信することですが、タコメーターはまだ反応する時間がありません。たとえば、次の単純なシェルスクリプトは、CAN ID = 0x0C9の送信を監視
cansendし、同じcan-utilsからユーティリティを使用して作成されたパケットを転送した直後に監視します。
candump can0 | grep "0C9" |行を読んでいる間; cansend can0 0C9#8021C0071B101000;
車内のすべてのデバイスがCANに接続されていても、すべての機能がCANを介して制御されるわけではありません。たとえば、ガスペダルとブレーキペダルの踏み込み度に関する信号は、フォードエスケープのCANに送信されますが、これらの信号はABSユニットによってのみ使用され、スロットルとブレーキアクチュエータはCANをバイパスしてペダルに直接接続されています。
「偽の」CANパケットを送信するにはバスへの物理的なアクセスが必要であるため、セキュリティの観点から、シンガポール人のレポートに脆弱性の問題はありません。さらに、パケットはチェックサムで保護できます。たとえば、トヨタの車両では、各パケットの最後のバイトが必要です。以前のすべての合計に等しい(256を法とする)。さらに、トヨタは受信者フィルタリングを使用して不要なパケットから保護します。たとえば、現在の値の5%を超えるステアリングターンを無視します。
それにもかかわらず、セキュリティ研究者は、CANへのリモートアクセスを取得することに成功しました。まず、短い距離で、同じバスに接続されたBluetoothモジュールの脆弱性を介して。そしてその後、Sprintのセルラーネットワークを介して、いくつかのアメリカのメーカーからのSUVがトラフィックデータを受信しました。数マイルの距離からジープチェロキーの制御の傍受を示した研究者は、防衛先端研究プロジェクト庁(DARPA)から80,000ドルの報酬を受け取りました。それ以来、多くの自動車メーカーは、発見された脆弱性ごとに1,500ドル以上の支払いを約束する独自の報奨金プログラムを発表しています。したがって、CANバス上のトラフィックのリバースエンジニアリングは、車に新しい可能性を追加するだけでなく、ウォレットを大幅に補充することもできます。
