ラック・セキュリティごった煮ブログ

セキュリティエンジニアがエンジニアの方に向けて、 セキュリティやIT技術に関する情報を発信していくアカウントです。

【お知らせ】2021年5月10日~リニューアルオープン!今後はこちらで新しい記事を公開します。

株式会社ラックのセキュリティエンジニアが、 エンジニアの方向けにセキュリティやIT技術に関する情報を発信するブログです。
(編集:株式会社ラック・デジタルペンテスト部)

Voltage Fault Injectionでセキュリティ機能を回避してみた

デジタルペンテスト部の飯田です。

ひと昔前までは悪意ある攻撃者により市販製品からファームウェアの抽出やデバッグ機能を利用した製品仕様の解析や改変が簡単にできたと聞きますが、最近では安価なチップであっても知的財産の保護等を目的にそのような行為を防止するため、セキュリティ機能がハードウェアに組み込まれることが多くなっているようです。 しかし、デバイスメーカーが提供するセキュリティ機能は決して破られることはないのでしょうか。
今回はとある市販製品に対して Voltage Fault Injection という手法を用いて搭載されているセキュリティ機能を回避することができるか検証してみました。

Voltage Fault Injection とは

聞きなれない方もいるかと思いますので簡単に説明しますと、Voltage Fault Injection は故障注入攻撃 (Fault Injection Attack) の一種で、攻撃対象となるデバイスの電源電圧を変化させることで意図的にタイミング違反を引き起こし、誤りを注入する手法のことです。 これによって、計算結果に誤りを混入させたり、命令をスキップさせるといったことを可能とする攻撃です。

攻撃対象のデバイス

今回攻撃対象となるデバイスです。
誰もが知っている有名なスマートデバイスを某量販店にて買ってきました。

製品の分解

Voltage Fault Injection を行うには、まずデバイスのコア電源を特定する必要があるため製品を分解します。
詳細はお見せできませんが、今回分解した製品では SoC として Nordic Semiconductor 社の nRF52 シリーズ が使用されていました。

公開されている SoC のデータシートを元に調査したところ、基板上にコア電圧やデバッグインタフェースのテストポイントが出ており、これらに UEW 線を配線しデバッガや MOSFET に接続できるようにしました。 なお、通常コア電源ラインにはバイパスコンデンサが載っているため事前に取り外して置かなければ攻撃の成功率は著しく低下します。

nRF52シリーズにおける脆弱性

分解によって使用されている SoC が nRF52 シリーズであることが判明しましたが、この SoC には Voltage Fault Injection に対する脆弱性が存在することが海外の研究者らによって判明しています。
詳細な解説は省きますが、 nRF52 シリーズには下図に示す APPROTECT と呼ばれるデバッグインタフェース (SWD) をロックするセキュリティ機能が搭載されており、これによって市販製品に対するデバッグファームウェア抽出を防ぐことができます。
しかし、Voltage Fault Injection に対して脆弱であるため特定のタイミングで故障を注入することで APPROTECT を一時的に解除することが可能なのです。

攻撃

まず、攻撃対象のデバイスとデバッガを接続し、 nRF52 シリーズに搭載されている CTRL-AP と呼ばれるポートにアクセスできることを確認します。
このポートには APPROTECT が有効であってもアクセスすることができ、リセット、ファームウェアの消去や APPROTECT が有効であるかなどを確認することができます。

確認ができたら、以下のようにそれぞれを接続し Voltage Fault Injection による攻撃を行います。

攻撃では下図のようにデバイスへ電源投入後、特定のタイミングで一瞬だけコア電圧を GND レベルに落とし、 CTRL-AP 経由で APPROTECT が有効であるか確認することを繰り返します。

どのくらいの試行回数で成功するかは環境によって様々ですが、今回は数十回ほどの試行で 以下のように APPROTECT が一時的に解除されたことを確認しました。

この状態であれば、デバッグインタフェースを通して自由に製品のデバッグできるだけでなく、本来保護されているはずのファームウェアの抽出まで行えてしまいます。市販製品においてこれらを行えることは攻撃者が製品を解析することを容易にするだけではなく、製品の改変や攻撃に繋がる可能性もあります。 このような手法を低減する方法としては様々なレベルでの対策がありますが、例えば電圧異常を検知する回路を追加するようなハードウェアレベルでの対策や命令がスキップされても故障が注入されることを防ぐようなプログラムを書くなどのソフトウェアレベルでの対策が考えられているようです。

終わりに

今回はとある市販製品に対して Voltage Fault Injection を行ってみました。 製品によって要求される保護レベルは異なりますが、製品開発の際にはソフトウェアレベルでの脆弱性が存在しないか確認するのは勿論のこと、ハードウェアレベルでの脆弱性が存在する可能性についても検討を行う必要があると考えます。 特に、ハードウェアレベルでの脆弱性は一度出荷してしまうと対策が困難であるため、開発段階で入念な調査が必要と考えます。高い保護レベルが必要とされる機器を開発する際には故障注入攻撃に対する耐性についても考慮することをお勧めします。

参考リンク

・ ハードウェア脆弱性評価の最新技術動向に関するセミナー ーCHES/FDTC参加報告ー https://www.ipa.go.jp/security/jisec/seminar/documents/hw_semi_20151203.pdf

・ nRF52 Debug Resurrection (APPROTECT Bypass) Part 1
https://limitedresults.com/2020/06/nrf52-debug-resurrection-approtect-bypass/

・Nordic Semiconductor Informational Notice IN-133 v1.0 https://infocenter.nordicsemi.com/pdf/in_133_v1.0.pdf

・nRF52832 Product Specification v1.4 https://infocenter.nordicsemi.com/pdf/nRF52832_PS_v1.4.pdf