「SPI Vulnerability Check」について

黒林檎です。

 

最近、JTAG/SPIダンプ系のハードウェアハッキングを勉強してます。

近々IoTSecJP関西でSPIフラッシュチップに関する勉強会をしたいと思ってるので、興味がある方は是非ご参加ください。

 

今回は、SPIフラッシュダンプの勉強の過程で、少し面白いアイディアがあったので、それのお話をします。

 SPI(シリアル・ペリフェラル・インタフェース)って何?といった方もおられると思いますので、wikiから引用してみます。

シリアル・ペリフェラル・インタフェース(Serial Peripheral Interface, SPI)は、コンピュータ内部で使われるデバイス同士を接続するバスである。パラレルバスに比べて接続端子数が少なくて済むシリアルバスの一種で、比較的低速なデータ転送を行うデバイスに利用される。

 (引用元)シリアル・ペリフェラル・インタフェース - Wikipedia

 

そしてSPIフラッシュダンプは、チップ内にあるデータ(ファームウェアなど)を抽出する目的でしばし用いられます。

詳細な技術に興味がある方は、youtubeに良い動画があったので、参考にしてみてください。

 

www.youtube.com

 

SPIフラッシュダンプの流れは、簡単です。

データシートを見て「SCK/MOSI/MISO/CS」を確認しダンプに用いるディバイスと接続し、flashromなどのダンプツールを実行するだけですね。

f:id:r00tapple:20171005101501p:plain

(図)SPIフラッシュダンプの流れ

 

SPIフラッシュダンプの概要を説明したところで、本題に戻ります。

最近、総務省が「IoT セキュリティ総合対策」というPDFを出しました。

国内のIoTセキュリティ事情を追ってる人であれば、目にしたと思いますが、そこにこんなことが記述されていました。

 

簡易な脆弱性チェックソフトの開発等
利用している IoT 機器に脆弱性が有するか確認したい利用者に対して、簡
易に脆弱性をチェックできるソフトを開発して配布する取組や、脆弱性を調査する民間サービスの実施を促進する取組を検討する必要がある。

③ ハードウェア脆弱性への対応
集積回路の設計工程において、ハードウェア脆弱性が存在する可能性が指摘されており、平成 29 年度から、戦略的情報通信研究開発推進事業(SCOPE)において、ハードウェア脆弱性の検知技術の研究開発が行われている。具体的には、膨大な数の回路設計図をビッグデータとして収集・蓄積し、これを元に脆弱性が存在する可能性のあるチップを、AI を活用して類型化し、ハードウェア脆弱性を発見することを目指すものである。
今後、IoT 端末はさらなる増加が見込まれており、ソフトウェアやファームウェアに対する対策と合わせて、引き続き、ハードウェアに組み込まれるおそれのあるハードウェア脆弱性を検出する技術の研究開発について、ビッグデータや AI を活用しつつ推進していく必要がある。

(引用元)http://www.soumu.go.jp/main_content/000510701.pdf

 

それでは、SPIフラッシュダンプに対するセキュリティ評価をビッグデータとAIを活用しない一例を少し、やってみようと思います。 

 

flashromでは、SPIをダンプできるであろうチップセットの一覧が取得できます。

Hack The World · Juan Carlos Jimenez などでSPIフラッシュダンプでファームウェアの抽出をしているブログは数多くあります。

これらのブログのダンプ対象の多くは、flashromの一覧にあり、flashromなどのツールが対応していないチップセットからファームウェアをダンプしようとするのは難しくなると考えられます。

 

f:id:r00tapple:20171005102821p:plain

(図)flashromのダンプできるチップ一覧

 

そこで、このリストを抽出し、SPIフラッシュダンプが簡易にされてしまうか評価するウェブサイトを作成します。

f:id:r00tapple:20171005103613p:plain

(図)SPI Vulnerability Checkの流れ

 

ウケたら頑張って作ろうというノリで、データベースも用いていないウェブサイトです。

チップの評価も完全一致でなく部分一致で評価してしまいます。(49LF002A/Bを49LF00と同等にしてしまう。)

一応脆弱性チェックしましたが、バグとかあると思います。

 

 

「SPI Vulnerability Check」の趣旨としては、プログラマが開発段階で使用するモジュールなどを吟味するように、IoT機器の設計段階では、使用するチップセットなど選ぶと思います。

その際に、既にハックされているチップか手軽に調べられるサイトがあればと考えました。

 

f:id:r00tapple:20171005100448p:plain

http://ruffnex.net/kuroringo/SPI/

 

最後に、

IoTの脆弱性診断はしんどいのと、IoTを作成するのはセキュリティエンジニアではなく開発者なので開発サイドでできる一定のセキュリティ評価方法があればと思います。

 

 

IoTSecJPに参加お待ちしております。 

f:id:r00tapple:20171005105334j:plain

https://www.facebook.com/groups/115145965852825/

 

IoTSecJPは、IoTセキュリティに関する啓発や診断技術に関する意見を交換するコミュニティです、
不定期で有志で『IoTSecJP』という名前でイベントをすることもあります。 IoTセキュリティにご興味がある方は是非ご参加下さい。

https://www.facebook.com/IoTSecJP/

IoTSecJPのコミュニティはこちら(IoTセキュリティに関する議論が一番しやすい)

https://www.facebook.com/groups/115145965852825/

 

※私の不手際で、IoTSecJPのページが2つあります。(slackにしとけばよかった、誰か運営になってslackページ作ってくれ)

グループでないと、上手くディスカッションができないと思うので、コミュニティからグループへの移行お願い致します。

@r00tapple