FFRIエンジニアブログ

株式会社FFRIセキュリティのエンジニアが執筆する技術者向けブログです

組み込みセキュリティとテスト技術動向

はじめに

数ある中でも最大規模のセキュリティカンファレンスであるBlack Hat USAとDEFCONが今年の夏も開催され、続いて日本ではescar Asia(10/3-4)、CODE BLUE(10/29-11/2)、AVTokyo(11/3)、BSides Tokyo(11/10)と多くのセキュリティ関連イベントが開催されました。 本稿ではBlack Hat/DEFCONの一部のセッションの紹介を通じて組み込みセキュリティとテスト技術の動向について解説したいとおもいます。

自動車セキュリティ

自動車セキュリティは組み込みセキュリティ領域の中でも比較的最近になって注目された領域といえますが、利用者が多い事に加え、サイバー攻撃による車両制御ののっとりなどの脅威が現実的に発生した場合における影響(人命)から非常に高い関心を集めています。その他の理由として自動運転技術をはじめとして、自動車が多くの情報を取扱う必要があることからインターネット接続する機会、その為のインターフェイスを持つケースが増えてきている事もあげられるでしょう。

2018年のBlack Hat USAでは、自動車を取り扱ったセッションは2件ありました。いずれのセッションもこれまでにBlack Hatをはじめとした様々なカンファレンスでの発表経験のあるエンジニアによるもので、いわゆる「注目発表」でした。

本節ではその中でもよりテクニカルな内容を含んでいた「Over-the-Air: How we Remotely Compromised the Gateway BCM and Autopilot ECUs of Tesla Cars」について紹介します。

今回発表されたテスラ車両へのハッキングは2017年のBlack Hatで発表された方法と基本的な流れは同様ですが、すでに昨年発表された脆弱性は対策済みのため、新たな脆弱性を発見する事で侵入に成功しています。「新たな脆弱性発見」に関して、彼らのホワイトペーパーによるともっとも時間をかけたのは、”Kernel Exploit”の部分だったようです。

タイトルにもある”Over-the-Air”ですが、クラウド側との通信を含めたアップデートプロセス全体(たとえばテスラのサーバーから更新パッケージを入手する方法など)についてはまだ解析できていないとのことです。そのため、基本的にはあくまでCIDへの侵入が前提となり、CIDを起点として配下のECUにアップデートを行うことになります。

以下は今回発表されたアタックチェインの概要を示したフローです。

図1 アタックチェインの概要

上記図の中で、ブラウザについては2017年に続き2018年の発表でも新たに指摘されていることから、まだ脆弱性が残存している可能性があります。また、コード署名検証バイパスが行われたソフトウェア(FatFS)は古いバージョンが利用されていました。このことから、公知の(あるいは独自に得た既知の)脆弱性の調査および検査は非常に重要であるという事がいえます。また最後の自動運転ECUに対するハッキングについては、おそらく開発向けの機能がそのまま残されていたものと考えられることから(現在は利用出来ないようになっているとの事)、テストだけではなく、開発環境とリリース環境を分けるなどのセキュリティを意識した開発プロセスの構築も重要といえます。

なお本発表を行なったTencentのKeen Security Labのチームは2018年5月にBMWに対する脆弱性についても公表しており、技術詳細の公表は2019年との事です。

無線セキュリティ (Bluetooth)

IoTデバイスと呼ばれる機器の中でも多くの機器が備えているインターフェイスの1つとしてBluetoothがあげられます。Bluetoothはいくつかのバージョンが存在しており、IoTデバイスはその中でも消費電力が少ないBluetooth Low Energy(BLE)を採用している事が多いですが、その一方でセキュリティが考慮されていないことも多く、このようなデバイスが発表の対象になっています。この背景には単にコストの問題という理由の他にBLEの最大のメリットである電力消費とのトレードオフも影響しているものと考えられます。

Bluetoothは元々持っている仕様として周波数ホッピングと呼ばれる方式を利用して無線通信を行っています。その為、一般的には無線空間における盗聴などの攻撃は難しいとされています(不可能ではありませんが専用の機材など、コストがかかる)。その一方で、ペアリング時に使用するPINなどの脆弱な設定によって不正なデバイスが勝手に接続出来てしまうというリスクが以前より注意喚起されています。加えて、Bluetoothプロトコルスタックそのものの脆弱性を突かれるという可能性もあります(CVE-2017-0781など)。

本節ではDEFCONで発表された BLEデバイスの乗っ取りに関するテクニックについて紹介(「You'd better secure your BLE devices or we'll kick your butts !」)します。この発表では、先述とは異なるBLEに対する新たな脅威モデルの実証ツール(BtleJack)の紹介とデモが行われました。なお、この発表を行ったエンジニアは、過去にBtleJuiceというBLE MITMプロジェクトを立ち上げています。

デモでは、BtleJackを利用してBLEの監視タイマーを悪用する事で乗っ取り行うという脅威モデルを示しています。例としてスマホとBLE通信を行う小型ドローン(実際にデモ動画で示された構成)をあげます。スマホを”Central”、小型ドローンを”Peripheral”とした場合に、CentralからPeripheralに送られる生存確認パケット(キープアライブ)通信に対してジャミング攻撃を行ないます。その際Centralではタイムアウトタイマーが開始され、最終的に接続を失いますがその時に攻撃者がCentralになりすまして通信を乗っ取るという仕組みとなっています。

画像2

この攻撃のポイントとして、任意の通信に対して精密にジャミング攻撃を仕掛ける必要があるという事があげられます。その為には通信を正確に観測する必要がありますが先述の通りBLEは周波数ホッピング方式によって盗聴が難しくなる設計となっています。これを解決する為に、通信に利用されているチャネルマップとホップインターバルを推定するアルゴリズムが用いられています。これらの技術詳細はPoC||GTFO 0x17に記載されています。

テスト技術動向

脆弱性を検査する上で、未知の脆弱性を発見するテスト手法の1つとしてファジングはセキュリティ技術者だけでなく多くの技術者に浸透しているアプローチ方法です。無償・商用を含めて様々なファジングツールが知られていますが、そのほとんどはすでにバイナリ化され、動作しているアプリケーションに対するものです。今回紹介するファジングはCoverage Guided Fuzzingと呼ばれるもので、ビルド時にカバレッジをモニタリングする為のコードを挿入してできたバイナリで検査を行う手法になります。この手法はAmerican Fuzzy Lop(AFL)と呼ばれており、様々な脆弱性を発見した実績を持っています。また、AFLをベースとした様々なFuzzerがセキュリティ技術者によって開発・活用されています。代表的なユースケースとしては、米DARPA(Defense Advance Research Projects Agency)が主催した脆弱性を発見し、エクスプロイトの生成や修正パッチを適用するといった一連の流れを全自動で行うコンテスト(Cyber Grand Challenge, CGC)で多くのチームがAFLを活用したシステムを構築していたようです。

なお、上述の大会を始め、多くの場合はAFLだけではなくシンボリック実行と呼ばれるテクニックも併用しているようです。これは、対象の実装(コード)によってはファジングよりもシンボリック実行の方が適しているケースがある為です。たとえば、ファジングとシンボリック実行の両方の要素を取り入れているDrillerを開発した研究チームによる発表論文を例にあげると、以下のコードはファジングよりもシンボリック実行が適していると言われています。

int main(void) { 
  int x;
  read(0, &x, sizeof(x)); 
  if (x == 0x0123ABCD) vulnerable(); 
} 

上記は”0x0123ABCD”という数値をファジングでは合理的な時間内に生成する事が困難な為です。一方で、以下のような再帰的な処理を行うような実装の場合、シンボリック実行ではパスの組み合わせ爆発問題を解決する事が困難な為、ファジングの方が適しているケースといえます。

int check(char *x, int depth) {
    if (depth >= 100) {
        return 0;
    } else {
        int count = (*x == 'B') ? 1 : 0;
        count += check(x+1, depth+1);
        retuen count;
    }
}

int main(void) {
    char x[100];
    read(0, x, 100);

    if (check(x, 0) == 25)
        vulnerable();
}

AFLは現在のセキュリティ研究には無くてはならないと言っても過言ではないほど多くの研究者によって利用されているファジング技術です。なお現在のAFLにはQEMUを利用する事でソースコードがないバイナリのみのアプリケーションに対しても実行するQEMU modeが追加されています(ソースコードベースよりもパフォーマンスは落ちるようです)。この他、Windows向けプロジェクトであるwinAFLなどがあります。さらにAIと組み合わせた試みも行われており、MicrosoftがLSTMモデルによるニューラルネットワークを利用したNeural Fuzzingという研究結果を2017年に発表しています。この研究結果によると、いくつかのファイル形式では従来のAFLよりも多くのクラッシュの報告があったとの事です。この報告で重要なのはクラッシュの報告が多いということは結果としてより多くのコードパスを通る効率的なFuzzデータを生成できているという点です(クラッシュ自体は可用性に影響を与える点からアプリケーションによっては脆弱性と捉える場合もありますが、任意のコード実行などのより高度なエクスプロイトができる脆弱性であるかどうかはクラッシュ原因の解析が必要になります)。

まとめ

今回は自動車とIoTデバイス、そしてFuzzing手法をキーワードにBlack Hat/DEFCONで発表されたほんの一部について紹介しましたが、組み込みセキュリティに対する関心は年々高まっているように感じます。CODE BLUE 2018でもBluetoothや4Gなどの無線インターフェイスに関する発表が3件、自動車に関する発表が1件採択されています。この他にもFAXなどの一般的にはレガシーと考えられているデバイスに関する発表行われています。ファジングに関してはMac/iPhoneのシステムに対する手法や4G基地局からスマーフォンに対して試みているものなど、非常に興味深いものが発表されました。

自動車セキュリティは、大きな技術的差異がない他のIoTデバイスに関する脆弱性報告について、「自動車」というワードがなかったとしても影響範囲内である可能性があります。そのためセキュリティ課題になりえる情報の取りこぼしを少しでも減らすためには、システムでどのような技術が利用されているのか把握しておく必要があります。

無線セキュリティは今後さらに関心が高まっていくことが予想されます。特にBluetoothはスマホなどの身近なデバイスに多く搭載されていることに加えて最近になって比較的インパクトのある脆弱性が複数報告されていますので、今後も狙われやすいインターフェイスであり続ける可能性が高いといえます。

AFLやシンボリック実行は研究などの領域において多くの実績がある一方で、効率的に実行するためにはソースコードからのビルドが必要など、開発現場によってはあまり汎用的では無い場合があります。このことから利用にあたってはある程度以上のノウハウが必要な状況のため、特にIoTデバイスを製造しているメーカーやその上で動作するソフトウェアを開発しているベンダーはそれぞれが自身の開発環境に適したテスト環境を構築する必要があります。

参考文献

[1] Black Hat USA 2018, https://www.blackhat.com/us-18/

[2] DEF CON® 26 Hacking Conference, https://www.defcon.org/html/defcon-26/dc-26-index.html

[3] escar Asia 2018, https://tech.nikkeibp.co.jp/cp/2018/escar2018/

[4] CODE BLUE 2018 @TOKYO, https://codeblue.jp/2018/

[5] AVTOKYO JP, http://ja.avtokyo.org/avtokyo2018

[6] BSides Tokyo, https://bsides.tokyo

[7] OVER-THE-AIR: TESLA HACKING 2017 How we Remotely Compromised the Gateway, BCM, and Autopilot ECUs of Tesla Cars, Keen Security Lab of Tencent, https://i.blackhat.com/us-18/Thu-August-9/us-18-Liu-Over-The-Air-How-We-Remotely-Compromised-The-Gateway-Bcm-And-Autopilot-Ecus-Of-Tesla-Cars.pdf

[8] Experimentl Security Assessment of BMW Cars: A Summary Report, Keen Security Lab of Tencent, https://keenlab.tencent.com/en/Experimental_Security_Assessment_of_BMW_Cars_by_KeenLab.pdf

[9] Bluetoothのはなし(5), サイレックス・テクノロジー株式会社, http://www.silex.jp/blog/wireless/2013/02/bluetooth5.html

[10] BlueBorne Information from the Research Team – Armis Labs, https://www.armis.com/blueborne/

[11] DEF CON Media Server, https://media.defcon.org/DEF%20CON%2026/DEF%20CON%2026%20presentations/Damien%20Cauquil%20-%20Updated/

[12] GitHub – virtuallabs/btlejack, https://github.com/virtualabs/btlejack

[13] GitHub – DigitalSecurity/btlejuice, https://github.com/DigitalSecurity/btlejuice

[14] PoC || GTFO, http://pocorgtfo.foi.hr

[15] american fuzzy lop, Lcamtuf, http://lcamtuf.coredump.cx/afl/

[16] Cyber Grand Challenge (CGC), Mr. Dustin Fraze, https://www.darpa.mil/program/cyber-grand-challenge

[17] Driller: Augmenting Fuzzing through Symbolic Execution, Nick Stephens, etc…, https://www.ndss-symposium.org/wp-content/uploads/sites/25/2017/09/07_3-ndss2016-slides.pdf

[18] Neural fuzzing: applying DNN to software security testing, William Blum, https://www.microsoft.com/en-us/research/blog/neural-fuzzing/

[19] Not all bytes are equal: Neural byte sieve for fuzzing. William Blum, etc…, https://www.microsoft.com/en-us/research/wp-content/uploads/2017/11/neural-fuzzing-mcr.pdf

[20] Survey of Automated Vulnerability Detection and Exploit Generation Techniques in Cyber Reasoning Systems, Teresa Nicole Brooks, etc…, https://arxiv.org/pdf/1702.06162.pdf