【2025/3/23追記】
この記事を書いたND2発売当時から1年経ち、後から見えてきたことを別にまとめました。
思ったより心配しなくて良かったかも!?という話をしています。
1年後の反省:新型ロードスター電装改造(2025/3/23 記事)
https://minkara.carview.co.jp/userid/615186/blog/48327298/
以下本文は2024年頭に書かれた当時のものとして、私の推測・妄想を外した所は話半分でニマニマとお楽しみください。
【追記ここまで】
※ 前回 第三報の続きになります。先にこちらをどうぞ
https://minkara.carview.co.jp/userid/615186/blog/47452255/
【今回のオチ】
マツダ第7世代車のCANバスにデータ流し込むの、絶対やめたほうがいいです。
ツッコミ・アドバイス・感想などコメント大歓迎です!
【概要】
前回は国連法規 UN-R155 をナナメ読みし、berumiya がヤバいと思った所を抜粋しました。
UN Regulations 155 - Cyber security and cyber security management system
https://unece.org/transport/vehicle-regulations-wp29/standards/addenda-1958-agreement-regulations-141-160
今回はCANバスに絞ってハッキング防止手法をもう少し読み解いていきます。
【第四報 本文】
今までの車のCANバスはハッキングに対してノーガードでした。
(マツダは第6世代車両まで。NDロドは2023年式まで)
CANバス配線に割り込めばユニット間通信が平文で行き交う様子が全部見えちゃってたんです。
もちろん全部バイナリデータですが、分析スキルがあれば意味を特定することができます。
また正規の通信内容に似たものを作ってCANバスに流し込むと、通信相手(車両側ユニット)は本物の通信と見分けがつきません。
おかげでROMチューンやら色々な改造が流行ってたんです。
今まで何が出来てたかというと
・ECU書換ができました
正規診断機がECUリプロしているときの通信内容を読み解いて、ECUがリプロモードに移行する先頭部分の命令をそっくりパクります。
その先のリプロデータの内容だけ自前作成の物に差し替えた信号を流し込むと、自前のデータがリプロできた訳です。
・バスをちょん切って、一部の信号を疑似信号に置き換えられました
ナビ手前でCANバスに割り込み、車速データだけゼロに置き換える物が流行ってますね
・車両を意図的に動作(誤動作)させられました
極端な話、安全カメラの緊急ブレーキ要求信号を事前に記録しておき、車両のCANバスに同じデータを流し込むと、その瞬間に本当に緊急ブレーキが作動します。
・CANインベーダで車両盗難される場合がありました
(トヨタの被害が有名。マツダは知りません)
イモビクリア・再登録作業に必要なCANバスデータを生成し、車両に流し込んで不正に解除・始動していたようです。
実際は正規通信の単純なコピペリプレイは通用しないはずですが、それを乗り越える解析側の執念もすごい。
マジかよ?
マジです。
これからの時代、ハンドルもアクセルもブレーキも自動制御が入ってきてます。
そんな自動運転時代にそれでいいの?
それじゃダメでしょ ってんで、法規制が入ってくるわけです!
といったところで、引き続き法規 UN-R155 原文に戻ります。
Annex 5 の Table A1 には対処すべき脅威が列挙されていますが、
CANバスに関係ありそうなものが見つかります。
・5.1 コード挿入、たとえば改変ソフトの挿入 (Code injection)
・6.3 リプレイ攻撃 (Replay attack)
・11.1 悪意のあるメッセージ (Malicious internal messages)
今までハックして遊べたことは「対処すべき脅威」として一通りの対処を求められており、
法規対応で作られた車両では対策済みということになります。
で、どうやって対策してるのよ?
「CANバス リプレイアタック 対策」
などとググると、真っ先にこちらに行き当たります。
そこそこ網羅的でわかりやすいので取っ掛かりにどうぞ。
自動車セキュリティ入門:CANインベーダーの原理と対策 ~車両盗難の被害を防ぐには?~
https://qiita.com/iehira_kazuki/items/e318518d332f2ef089cb
さて、ここで気になるワードを見つけられます。
"CAN通信に対する認証の仕組みのひとつとしてAUTOSARで規定されているSecOC[5]があります。より詳細を知りたい方はSecOCを調べてみてください。"
はい、それでは「AUTOSAR SecOC」でググりましょう。
天下のVECTOR社の資料に行き当たります。
はじめてのAUTOSAR SecOC 車載通信に必要なセキュリティー機能とは
https://cdn.vector.com/cms/content/know-how/VJ/PDF/For_Beginners_AUTOSAR_SecOC.pdf
この SecOC が大オチです。
CANバスハックして色々したかった人は一通り読んでみて下さい。
ざっくり概要としては
・暗号生成されたメッセージ認証子(MAC)が付加され、正規通信か見分ける
・暗号生成のシードにはタイムスタンプ的なもの(FV)も含む
・暗号アルゴリズムにはAES-128などが使える
→野良生成データではMACが再現できない → 不正通信検出!
→過去のバスデータ流し込みではFVが合わない → 不正通信検出!
もうわかりますね。
「バスハック本気で潰しにきてるじゃねーか!無理だろこんなの!!」
ということです!
もう冒頭にあるようなカジュアルCANバスハックは絶対無理です。
※MAC鍵、FV生成ルール、MAC生成アルゴリズムまで全部ハックすれば理論上可能ですが…
そんなことが出来たらUN-R155/156法規違反の重大事案です。
マイコンの耐タンパ性とか開発リポジトリのセキュリティ・ユーザ管理とか、何から何まできっちり法規で縛られてますんで、我々野良愛好家レベルでのハックは絶対無理です。
もちろんマツダ第7世代車のバスセキュリティ実装が SecOC 採用だと決まった訳じゃありませんが…
そもそも第7世代はAUTOSARアーキテクチャを採用してるんで(マツダ技報2019)、そこに SecOC 被せるのが自然で素直な作り方だと思ってます。
https://www.mazda.com/globalassets/ja/assets/innovation/technology/gihou/2019/files/2019_no024.pdf
さて、CANバスの不正検出した後はどうなるのでしょうか?
UN-R155によると
『ハッキングの試みは検出・防止・記録・分析できないといけない』
とあります。
あとはカーメーカーがどう実装するかによります…
berumiya の妄想ですが
おそらく全部ECUに記録され、通信でメーカーサーバに転送されます。法規でフォレンジック結果の報告まで要求してますからそうするべきです。
あとは不正検出カウントを累積させ、閾値を超えたら順次防衛モードに移行していくなどのアクションを取ることも技術的には可能です。ちまたで言う後からセーフモード・闇落ち状態になるやつこれじゃないの?
どっかのYoutubeが言ってる
「OBDに突っ込むな!」「TVキャンセラーはあかん!」
の正体はこれだと思いますよ~。
繰り返しですが berumiya の妄想ですよ!そういうことにしといてください。
というわけで、CANバスにデータ流し込むのは絶対やめたほうがいいです。
SecOC ならメッセージ本文(Authentic-I-PDU内のDLC/Data)は平文実装でも構わないようなので、
厳密にリードオンリーなバスリッスンならばデータ見て楽しむ位は出来るのかもしれません。
攻撃排除が目的であり、覗き見は問題視してないみたい?
法規対応車はCANバスハックを本気で潰しに来てます。
たぶん諦めたほうがいいです。
夢のないオチですんません。
ツッコミ・アドバイス・感想などコメント大歓迎です!
ではでは~。