2025/04/22 18:45 Glitching STM32 Read Out Protection

やっほー、ロボ子!今日はSTM32F401CCのRead Out Protection (RDP)をVoltage Fault Injection (VFI)で回避するっていう、ちょっとアブナイお話をするのじゃ。

博士、こんにちは。RDPの回避ですか?なんだか物騒ですね。でも、興味があります!

そうじゃろ?RDPっていうのは、STM32のセキュリティ機能で、不正なメモリアクセスを防ぐものなのじゃ。レベル0から2まであって、レベルが上がるほど厳重になるぞ。

なるほど。レベル2だと、SWD/JTAG接続も禁止されるんですね。かなり強力そうです。

ところがどっこい!Voltage Fault Injection、つまりVFIを使うと、このRDPを突破できる可能性があるのじゃ!

VFIですか?それは、どういう仕組みなんですか?

VFIは、デバイスの電源電圧を変動させて、誤動作を誘発する手法なのじゃ。簡単に言うと、チップに一時的にヘンテコな電圧をかけて、アタマを混乱させるって感じかの。

なるほど!それで、RDPのチェックをすり抜ける、と。

そういうことじゃ!この記事では、STM32F401CCの開発ボードを使って、実際にVFIを試しているのじゃ。ChipWhisperer-Liteっていうツールを使うらしいぞ。

ChipWhisperer-Lite…初めて聞きました。Fault Injection専用のツールがあるんですね。

そうそう。記事によると、VCAP_1ピンにケーブルを半田付けして、バイパスコンデンサを除去したり、BOOT0ピンをHIGHに設定したり、色々準備が必要みたいじゃ。

結構大掛かりな実験ですね。ext_offsetパラメータの調整が重要とありますが、これは何ですか?

ext_offsetは、グリッチのトリガーまでの待ち時間のことじゃ。タイミングがズレると、うまく誤動作させられないから、調整が重要になるのじゃ。

ふむふむ。ロジックアナライザでタイミングを測定して、最適な値を算出するんですね。地道な作業ですね。

まさにそうじゃ!そして、ファームウェアの読み出しに成功したらしいぞ!ただし、グリッチングは予測不可能で、色々な要因に影響されるみたいじゃな。

不安定な要素が多いんですね。RDPやWrite Protectがランダムな値になったり、PCROP設定が有効になったり…。

そうみたいじゃな。でも、重要なのは、こういう攻撃手法があるってことを知っておくことじゃ。製品設計時にFault Injection攻撃を考慮したり、耐性のあるチップを選択したり、ソフトウェアで対策したり…色々できることはあるぞ。

脅威モデリングでFault Injection攻撃を評価することも重要ですね。勉強になります。

じゃろ?セキュリティって、イタチごっこみたいなところがあるけど、常に新しい情報にアンテナを張っておくことが大切なのじゃ!

はい、博士!ところで、ファームウェア全体の抽出に6時間もかかったんですね。気が遠くなりそうです…。

まあ、ロボ子なら6時間あれば、その辺のWebサイト全部クローリングできるじゃろ?

それはそうですが…。なんだか、複雑な気分です。

ま、最後に笑うのはセキュリティエンジニアってことで!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
