車の遠隔操作の件

課題というか調べて欲しいことがあるというご依頼が先日届きまして、それは車の遠隔操作ハッキングについて、実際に出来るのか?またそのコマンドは?とのことです。

正直な話しこのあたりは疎い分野なのですが、最近のトレンドであるIoTだったりについて徐々に興味を持ってきている段階だし何より車のハッキングについてはセキュリティの観点で将来関わる可能性があることから、少し調べてみました。

ゴール

車をハッキングする際のコマンドを10行くらいに纏める。

解決までのアプローチ

セキュリティエンジニアだとかハッカーだとか自称してるものの、Linuxを触ることもほぼ無い(今月仕事で1年半ぶりくらいに触った!)ですし、世の中の技術トレンドは毎日とてつもない速さで進化していてとても追いつかない状況です。

折角なので、纏める過程で何かよくわからないことを調べる時の最近のSTEPについて纏めてみました。

STEP1. ポイントにフォーカスして全体像を手っ取り早く理解する

こういうよくわからない分野について調べる時は、まず全体像を手っ取り早く理解することです。 全体像を手っ取り早く理解するってのは意外と難しくて、正社員とかやってるとのんびりじっくり時間をかけて調べる為にまず本を買ってとかってことになるんですが、結構毎日忙しいので何時間かで纏めないといけない訳でそういう時間も無いのでそうも言ってられないのです。

コツは、ポイントのみに絞った資料「だけ」を読むことで、その資料を探すのが一つセンスになります。ポイントのみに絞った資料だけを読むということは、言い換えればポイントに絞られていない資料は読まないということです。

実例として今回のポイントは「実際にハッキングされたケースと具体的な脆弱性を解説した資料」です。

脆弱性と言えばCVEの資料。脆弱性情報データベースです。

https://nvd.nist.gov/vuln/detail/CVE-2020-5551

ストーリーとしては、トヨタの車に脆弱性があったよ!ってセキュリティ会社のkeenlabが知らせてくれて、これをトヨタは受け入れて対応したって流れがありました。

https://keenlab.tencent.com/en/2020/03/30/Tencent-Keen-Security-Lab-Experimental-Security-Assessment-on-Lexus-Cars/

keenlabが詳細解説してくれている図が役に立ちます。ざっくり理解したことを纏めると、Toyota2017ModelYearDCU(DisplayControlUnit)を使用すると、Bluetooth範囲内の攻撃者が任意のコマンドを実行出来るということ。

脆弱性は2つあり、1つ目は範囲外のヒープメモリの読み取り、2つ目はヒープバッファオーバーフローの脆弱性。どちらもペアリング前にBluetooth接続を作成するプロセスにある、と。

ここが、図のPhase1とPhase2にあたって、これを成功するとまずDCUのLinuxをbluetooth経由でroot権限を奪取出来コマンド入力可能な状態になる。

ここからPhase3として、uCOMのファームウェアを書き変えて、CANメッセージSYSuCom・CANuCOMを介してinfotainmentCANに送信する。

最後にPhase4として、DiagnoticsCANメッセージで、診断機能を実行して物理的に車を操作する。

みたいな、URLで紹介されている内容数行をほぼコピペで語るだけであたかも元からめっちゃ車のハッキングに詳しい人みたいに話せる資料を見つけるのが一番のポイントです。

STEP2. 単語を掘り下げる

全体像を掴んだら、単語を掘り下げます。時間がかかるので、流れとしてどういうことをするかが分かってないと無駄なことを掘り下げてしまいがちです。

コツとしては検索する時出来るだけニッチそうな単語で調べる方が欲しい情報が出てきますね。

上のリンクで貼ったページからだと、Blueborneとかflashcomとかcanmessageだったり、そういうニッチな単語で掘り下げます。出てくるページとしては既に日本語じゃ出ないですね。逆に、出てくるページに日本語が出てくる場合、まだまだ掘り下げれてない。と言えます。で、出て来たページはchromeのgoogle翻訳拡張で一瞬で翻訳して日本語化。いい時代になったものです。

STEP3. Youtube動画で机上の検証

何かについて調べる時これを最近結構やるようにしてます。

google検索に加えて、Youtubeで同じwordを検索する。すると、それをやってる同じ人の動画が沢山出てきます。〇〇をやってみた!みたいな動画を見て、実際にやった気になる。これで人に話す時には散々検証した時の失敗談として話せます。

最後に

書けなかったのですが、時間を調べて取り掛かるというのも大事ですね。特に、休日に時間を使うとなるとダラダラやって1日潰したりしたら勿体ないですかかね。

ちなみに、実際に頑張って調べたコマンドはこちらです!

車ハッキングコマンド