CODE BLUE『Practical CAN bus hacking』にて弊社チームが1位を獲得
2017年11月7日(金)からの4日間、弊社オフィスからも程近い新宿区西新宿にて、国際会議『CODE BLUE(コードブルー)』が開かれました。
情報セキュリティ分野では数少ない日本発の会議ということで、この業界を代表する数々の大手企業が協賛企業として名を連ねるなど、我が国でも屈指のセキュリティ関連イベントとして注目を集めました。
開催期間中の11月9日(日)午前10時から翌10日(月)午後4時にかけて、自動車のセキュリティを専門分野とするエンジニア達によるCTF『Practical CAN bus hacking』が開催。
激しい争いの中、弊社エンジニア(チーム名:ier43)は見事1位を獲得することができました。
当エントリーでは、その模様をご紹介します。
──まず、CTFの規模について聞かせてください。参加チームはどのくらいでしたか?
全部で15チームでした。
解答に用いる機材が会場には用意されていましたが、エントリーした全チームの分はなく、他チームとシェアしながら使っていました。
──問題のジャンルは?
エンジンやブレーキなど、電子制御されるあらゆる車載機器のセキュリティ面に関するものです。
数々の車載機器は、CANバス(CAN:Controller Area Network)というバスを介して制御信号のやり取りが行われています。今回のCTFでは、そのCANバスを経由して車載機器にアクセスし、脆弱性を突くなどしてフラグの獲得を目指します。
会場には、擬似的なECU(Electronic Control Unit)を搭載したラジコンカーが用意されています。ECUのCANバスへのアタックには、同じく会場にあるRaspberry PiやTeensyなどのボードを使います。ラズパイのボードは6台しかないので、他のチームが使っていない時を見計らって使うようにしました。
──実際、どのように解き進めていったんですか?
機材の他にドキュメントが用意されていて、それをチュートリアルとして参照しながら進めていくとある程度は解けるようになっています。
最初はチュートリアルでの指示に従いCANバスからECUへのアクセスを試みたんですが、通信がなかなか思うようにいかなかったんです。おそらくバッファの問題だと思うんですが、パケットの送信にどうしても遅延が生じて、再起動したら正常に戻るという繰り返し。いろいろ試行錯誤をした挙げ句、ようやく通信がうまくいくようになりました。
本物のECUではなく、あくまで実際の自動車を擬似的に再現したものということで、そういうことが起きても仕方ないのかもしれませんね。
認証の突破ですが、こんなこともありました。
過去の通信からシードとキーの組がいくつか分かっているECUに対して、我々がシード(seed)をECU側にリクエストし続けていると、そのうち既知のシードが生成されて返送されてきます。本来、正当なキーを計算するにはECU特有の秘密の計算アルゴリズムによってシードからキーを計算する必要があるわけですが、過去の通信から、そのシードに対応するキーが分かっているので、アルゴリズムを知らなくても認証を突破できます。
その他にも、キーの先頭から正解しているバイト数に応じてエラーメッセージが返ってくるのにかかる時間が変わるので、そのエラーメッセージが返ってくる時間を利用してキー全体を推測できるということもありました。どういう時間差で返ってくるのか、我々が提示したキーと正解のキー全体との比較処理をわかっていることが大前提ですが。もしかしたら、比較処理の問題ではなく単なる通信の遅延で時間差が生じているのかも知れないですしね。
他にも、ハッシュ関数で生成したハッシュ値の衝突を利用するなど、いろいろ知恵の絞り甲斐はありました。
認証の突破に無事成功したら、擬似ECUのメモリへ自由に読み書きができるようになります。まずファームウェアをダンプして、適当なメモリアドレスをパラメーターとして指定します。いくつものアドレスを根気よく指定し続けていれば、いつかはフラグが降ってきます。
ただし、毎回そんな調子でいくとは限らず、せっかく認証を突破してもその後にどうすればフラグが降ってくるかわからないことも何度かありました。
ちなみに、問題は全部で8問。初日に5問、2日目に3問挑戦しました。
最後の問題で「全部のECUをシャットダウンせよ」というのがあったんですが、結局いろんな制約があってシャットダウン自体が無理でした。
他に、韓国や台湾から参加したチームもありましたが、彼らも自動車セキュリティのプロ達ということで、本気度という意味では全く同じでしたね。
いずれにせよ、決して生易しい問題ではなかったですし、どのチームも苦労しながらよく頑張っていたと思いますよ。今回は我々が1位でしたが、来年以降またこういう機会があればその時はどうなるかわかりません。そのくらい、各チームの力は拮抗していたと思います。
──改めて、今回のCTFを振り返って。
1位になれたのは、我々にとって収穫でした。並み居る強豪より上の順位に行けたというのもそうですが、我々の技術力をCTFの戦績という形で公にアピールできるのが何よりも大きいです。先ほどもお話ししましたが、日本のものづくりを代表する大手企業でCODE BLUEの協賛企業にもなっているメーカーも今回のCTFに参加しています。そういう会社や自動車のセキュリティ技術の専門家達と同レベル以上のエンジニアがイエラエセキュリティにはいますよ、と対外的にアピールできた訳ですから。
これをきっかけに、「自動車のセキュリティ対策に関してはイエラエセキュリティに頼んでみようか」という流れができることを期待しています。最終的には、国内の自動車メーカーのどこかから直接お声掛けいただけるようになると嬉しいですね。