いろんな技術にふれたい

いろんな技術に触れたい

日頃色々触れた技術を自分なりにまとめておきたいと思ってます。難しいものほどブログ書く時間がかかるのが問題・・・

バスオフ攻撃(bus-off attack)について解説します

f:id:Tokina:20180119033302p:plain

こんにちは。

どうも、(バーチャル)論文読みおじさんです(適当)。

突然ですが、今回は自動車への攻撃手法の一つであるバスオフ攻撃(bus-off attack)についての解説をします。


といっても、バスオフ攻撃を初めて発表した論文についてまとめたので、そちらのスライドとその補足といった形になります。

この論文についてまとめている人がいないようでしたので、もしかしたら誰かの参考になると期待して・・・



早速ですが、バスオフ攻撃についてまとめたスライドを貼っておきます。


バスオフ攻撃の論文について / Where does it available?

バスオフ攻撃についての論文ですが、(ACM) CCSというセキュリティに関するカンファレンスの2016年にて発表されたError handling of in-vehicle networks makes them vulnerableがそれになります。


下記リンクのAgendaより参照できます。
ACM CCS 2016 | ACM CCS 2016 Website

Cho, Kyong-Tak, and Kang G. Shin, "Error handling of in-vehicle networks makes them vulnerable," Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, ACM, 2016.


また、以下でその論文のPDFを入手することが可能です。
Error Handling of In-vehicle Networks Makes Them Vulnerable


アブスト / Abstract

Contemporary vehicles are getting equipped with an increasing number of Electronic Control Units (ECUs) and wireless connectivities. Although these have enhanced vehicle safety and efficiency, they are accompanied with new vulnerabilities. In this paper, we unveil a new important vulnerability applicable to several in-vehicle networks including Control Area Network (CAN), the de facto standard in-vehicle network protocol. Specifically, we propose a new type of Denial-of-Service (DoS), called the bus-off attack, which exploits the error-handling scheme of in-vehicle networks to disconnect or shut down good/uncompromised ECUs. This is an important attack that must be thwarted, since the attack, once an ECU is compromised, is easy to be mounted on safety-critical ECUs while its prevention is very difficult. In addition to the discovery of this new vulnerability, we analyze its feasibility using actual in-vehicle network traffic, and demonstrate the attack on a CAN bus prototype as well as on two real vehicles. Based on our analysis and experimental results, we also propose and evaluate a mechanism to detect and prevent the bus-off attack.

つまり、私達は新しい攻撃可能性であるバスオフ攻撃を発見したよ、実際に実験してその防御の手法を考えてみたよ、ということです。

バスオフ攻撃ってなんですか? / What's the bus-off attack on vehicle?

バスオフ攻撃を理解する前に、CAN(Controller Area Network)とそのエラー処理について理解をしなければなりません。

ここではその理解を助けるための補足のリンクを紹介しておきます。

monoist.atmarkit.co.jp


上記記事にて、バスオフについての記載があります。(以下、引用です)

送信エラーカウンタの値
•0~96:警告リミット以下の『アクティブ』。エラーカウンタ値が「96」を超えるとCANコントローラは警告(エラーフラグのセット、割り込み)を発する。
•97~127:ノードは『アクティブ』。エラーカウンタ値がこのエリアにある場合、バスは重度の障害を持っていることになる。
•128~255:ノードは『パッシブ』(ほとんどのCANコントローラはこの領域への変化についてマイコンに報告しない)。また、送信待機を行う。
•255:エラーカウンタがこの値への到達後、ノードは『バスオフ』となりバスから切り離される(バスへの送信アクセスが不可となる)。マイコンはこの領域への移行を知ることができる。


これが大事です。
ECUは通常Active Error modeにいるのですが、送信エラーカウンタ(TEC)が127を超えるとPassive Error modeになります。
さらにエラーカウンタが255を超えるとバスオフ状態になってしまうのです。

f:id:Tokina:20180119032900p:plain
ECUの送信エラーカウンタによる状態遷移

このバスオフ状態になると、ネットワークから切断され、ECUのシャットダウンなどにつながってしまいます。

これを強制的に引き起こすのがバスオフ攻撃です。

この論文の攻撃手法 / The new method to bus-off attack


実際、このバスオフ攻撃の実現の可能性はもともと考えられていました。

この論文の”新規性”はバスオフ攻撃を実現するための新しい手法を提案していることにあります。

それはバスオフ攻撃を行う際のメッセージ衝突のタイミングです。
私のスライドの34ページ目(4.3 Tx Synchronization)からがそれに該当します。


簡単に言うと、強制的にノードのメッセージ送信をバッファさせ、アイドル状態になるのを待たせます。
バスがアイドルになると同時に攻撃者もメッセージを送信することでエラーを起こします。

これにより、攻撃対象のノードの送信エラーカウンタ(TEC)を増加させ、バスオフ状態にします。

実車での評価について / Evaluation using Actually Car

こちらの論文ではOBDポートから実際にバスオフ攻撃を行った評価まで行っています。

実車は以下の2台です。

  • 2013 Honda Accord
  • 2016 Hyundai Sonata

実車トラフィックは流れているメッセージの周期などが複雑であるため、プロトタイプほどうまくはいっていません。

しかしそれでもかなり実用性(?)のある結果となっています。



おまけ(その他バスオフ攻撃に関する論文について)

  • SCIS 2016 1E2-2

ラズベリーパイからのスタッフエラー注入によるCAN ECUへのバスオフ攻撃
◎亀岡 良太(立命館大学)、久保田 貴也(立命館大学)、汐崎 充(立命館大学)、白畑 正芳(立命館大学)、倉地 亮(名古屋大学)、藤野 毅(立命館大学)

プログラム|SCIS2017 暗号と情報セキュリティシンポジウム

  • マルチメディア,分散,協調とモバイル(DICOMO2017)シンポジウム 2017 pp. 1163-1168

特定のCANメッセージを送信するECUに対するバスオフ攻撃を利用したなりすまし攻撃
◎家平 和輝 (広島市立大学情報科学部), 井上 博之 (広島市立大学大学院情報科学研究科/CCDS), 石田 賢治 (広島市立大学大学院情報科学研究科)

DICOMO2017 プログラム





以上が自動車の攻撃手法の一つであるバスオフ攻撃についての紹介になります。

スライドが長いですが、興味のある方は目を通して見てください。

参考になれば幸いです。

自動車ってどうやってハッキングするんですか? [IoTSecJP #2 振り返り]

f:id:Tokina:20180108153711p:plain

こんにちは。

本記事は主にIoTSecJP #2でお話させて頂いたスライドを補足したいと思います。

まずは、今回の機会を頂いた黒林檎氏に感謝します!ありがとうございました。


さて、早速ですが、私のスライドを貼っておきます。 ※表示がちょっと崩れてしまっています



公開用に一部秘匿しています。

補足

Jeepのハッキング例について

2015年にJeepがハッキングされ、自動車のハッキング事例が脚光を浴びたのが記憶に新しいと思います。
ハッキングを成功させたのはチャーリー・ミラー(Charlie Miller)氏とクリス・ヴァラセク(Chris Valasek)氏です。
Jeepに搭載されているインフォテインメントシステム(ナビ)には3G回線と接続する機能が搭載されていました。しかし、最初からSSH可能なポートが開いていたそうです。
そこで、その脆弱性をついて遠隔操作を可能にしました。

彼らをレビューした動画がYoutubeにありました。


Hackers Remotely Kill a Jeep on the Highway—With Me in It

実際に遠隔から、実際に走行している自動車のホーンを鳴らすなど、遠隔操作を実現しています。

ジョージ・ホッツ (george Hotz)氏のCODE BLUEでの登壇内容について

今回、攻撃にターゲットを据えた話をするにあたって、折角の機会なのでジョージ氏が公開しているopenpilotについて調べてみました。
openpilotは実際にGithubに公開されています。

GitHub - commaai/openpilot: open source driving agent

彼の開発したシステムの内容をまとめますと、以下のようになると思います。
これから分かるように、各社のCANIDの解析結果がopendbcとして公開されてしまっているので、これは結構やばいのでは・・・?

f:id:Tokina:20180111031118p:plain
Geoge Hotz氏のopenpilot関係性まとめ

openpilotはオートクルーズを模擬するようなものなのですが、そのためには実際にCANメッセージなりすますことで、実際のECUをなりすまします。
しかし、各社搭載しているECUが異なる、乃ちCAN IDが異なるため、その各社同士の違いを吸収するのがopendbcになります。
openpilotは変換されたメッセージを解釈することで、自動運転を実現します。

※追記


@yubedrumsさんより、OBDドングルとの接続方法について補足頂きました。ありがとうございます!

実践!自動車ミニハックについて

例の脆弱そうなOBDドングルを実際に使ってみた例です。
コマンドを実行して、実際にCANメッセージをモニタできている様子の動画を添付しておきます。

http://himitu23-blog.tumblr.com/post/169458387666/obdドングルで自動車のcanメッセージを覗いたりする様子です

シミュレータとアナライザについて

最後に少し質問を頂いたので、メモとして残しておきます。

実際の自動車でなくても、CANの応答を確認するためのツールとしてECUシミュレータというものがあります。
少しお高いですが、、、

www.opsoc.co.jp


また、アナライザ(OBDからCANをモニタするツールとして)は下から上まで様々あります。
送信/受信バッファがある程度あるものですと、なかなか高価なものになると思います。

恐らくRasperry Pi + PiCANのセットが一番安く上がるのではないのかと思います。
ソフトウェアとしてはcan-utilsが利用できます。

skpang.co.uk

github.com

最後に

今回はBus PiratesやBluetoothハックなど、今アツイところの話をたくさん聞けたので大満足です

秋葉原にいっていろいろとあさりたいと思います!笑

自動車セキュリティの今について自分なりにまとめてみる

f:id:Tokina:20171208133818j:plain
東京モーターショー2017より

こんにちわ。
メリークリスマスまであと2週間とちょっとですね。(この記事は2017年12月8日のものです)

この記事は私の研究室のアドベントカレンダーの第三回目の記事にあたります。


皆さんはお車をお持ちでしょうか?
運転免許はお持ちでしょうか?
運転経験はいかほどでしょうか?

「自動車のセキュリティって聞いてどう感じますか?」

たぶんそんなのずっと先のことだよ、とか
そんなの実際に起こるわけないよ、など感じる方がほとんどだと思います。

そこで、自分の経験から自動車セキュリティについて、それが一体どんなものかまとめてみたいと思います。

今回はとても長いので「続きから読む」機能をつけておきます!

続きを読む