自動車の高度化に伴い、サイバーセキュリティは喫緊の課題となっています。特に、国連法規UN-R155では物理的な攻撃への対策も求められており、ECU(電子制御ユニット)のセキュリティ確保は不可欠です。本稿では、従来の対策を回避する新たな脅威として注目される「VFI(電圧フォルトインジェクション)」攻撃に焦点を当てます。VFIがなぜ深刻な脅威なのか、その攻撃原理と手法、実際の攻撃実験例、そして開発者が実装すべき防御策を体系的に解説します。
なぜ今、VFI(電圧フォルトインジェクション)が脅威なのか?
自動車業界では、システムのネットワーク接続化や自動運転技術の普及に伴い、サイバーセキュリティの重要性がかつてないほど高まっています。特に、国連欧州経済委員会(UNECE)の傘下にある自動車基準調和世界フォーラム(WP.29)で採択されたUN-R155[i]は、自動車メーカーに対し、「サイバーセキュリティマネジメントシステム(CSMS)」を構築し、それに基づいて網羅的なリスクアセスメント(脅威分析とリスク評価)を行うことを義務付けました。その対象には、UN-R155の附属書5で例示されている通り、外部からの通信だけでなく、ECU(電子制御ユニット)等への物理的な操作(Physical manipulation)も含まれています。 これにより、ハードウェアを介したデータやソフトウェアの改ざんといった物理的な攻撃が、法規レベルで対策必須の脅威として定義されたことになります。
これまでの主要対策:デバッグポートの無効化
従来、MCU(マイクロコントローラーユニット)に対する物理攻撃の中でも、特にMCUに直接アクセスできる開発用のデバッグポート(JTAG/SWDなど)の保護が、基本的な対策として重視されてきました。これは、デバッグポートを悪用されると、内部のファームウェアの読み出しや改ざんといった、極めて深刻な被害に直結するためです。
このデバッグポートの保護策は、主に2つのレベルで講じられています。一つは、パスワード認証などを用いてアクセスを論理的に制限する方法です。そして、より強固な対策として、MCU内部のヒューズを物理的に溶断し、デバッグ機能そのものを恒久的に無効化する方法が広く採用されています。
これらの対策により、デバッグポート経由での不正な操作は防げるため、物理攻撃への基本的な防御は達成できていると考えられてきました。
新たな脅威「VFI」の台頭と深刻な攻撃事例
しかし、攻撃手法はさらに高度化し、従来の対策の前提そのものを覆す脅威が台頭しています。それが、半導体の物理的な脆弱性を直接悪用する「電圧フォルトインジェクション(VFI)」です。
VFIは、ICチップの電源系統を意図的に操作し、CPUに演算エラーや命令スキップといった『誤動作』を誘発させる物理的な攻撃手法です。攻撃者は、この誤動作をセキュリティ機能の突破に応用します。
VFIの最も代表的な標的は、デバッグポートなどの認証機能です。理論上の脅威と思われがちですが、実際には、高度なセキュリティを備えた車載グレードのMCUですら、その対象となっています。
世界中のセキュリティ研究者により、以下のような攻撃成功事例が報告・公開されています:
製品 |
概要 |
Renesas社製 車載MCU(RH850/P1M-E) |
プログラミングインターフェースに対し、 VFIを用いて読み取り保護機能をバイパスし、ファームウェアの完全な抽出に成功した事例。 |
STMicroelectronics社製 車載MCU(SPC5ファミリ) |
冗長なチェック機構を持つ高度なJTAG認証機能に対し、VFIを用いてパスワード認証を突破し、デバッグ機能を不正に有効化した事例。 |
Tesla社製 インフォテインメント(IVI)システム |
システムの完全性を保証するセキュアブート機能を提供するプロセッサに対し、VFIを用いてセキュアブートを無効化した事例。 |
VFI攻撃がもたらす最悪のシナリオ
VFIによって一度デバッグアクセス権が奪取されることは、単なる情報漏洩に留まらない、極めて深刻な事態の始まりを意味します。
ECUが攻撃された場合、ECUの制御ロジックを内包するファームウェア全体や、CAN通信のメッセージ認証に用いられるSecOCの暗号鍵といった、機密情報が窃取される危険性があります。これらの情報が悪用されれば、制御ロジックの不正書き換えや正規ECUへのなりすましといった、車両の安全性を根底から脅かす二次的攻撃が現実になり得ます。
このように、VFIはECUのセキュリティを根底から覆す可能性のある、現実的かつ深刻な脅威です。では、この攻撃は具体的にどのような技術で実現されるのでしょうか。次章では、その攻撃手法と技術的背景について詳しく解説します。
VFI攻撃はどのように行われるのか?~攻撃の原理と手法~
VFI攻撃には電圧グリッチ、クロックグリッチ、電磁波注入など複数の手法が存在しますが、本章では最も代表的で実用性の高い「電圧グリッチ攻撃」 について説明します。
攻撃の原理:電圧グリッチによるCPUの意図的な誤動作
電圧グリッチ攻撃は、電源電圧を瞬間的に低下させる(グリッチを発生させる)ことでCPUを誤動作させる攻撃手法です。
通常、CPU内の回路は、定められたクロックサイクル内に処理を完了できるよう、十分な動作電圧が供給されることを前提に設計されています。しかし、電圧グリッチによって電源電圧が瞬間的に規定値を下回ると、回路の動作速度が低下します。
その結果、クロック信号が次の処理を指示するタイミングまでに演算やデータ転送が終わらず、「タイミング違反」が発生します。
このタイミング違反は、 CPUの命令パイプラインの各段階で異なる問題が発生します。命令フェッチ段階では重要な命令がスキップされ、演算実行段階では比較結果などが誤って計算される可能性があります。また、書き込み段階 ではメモリやレジスタへの破損したデータを書き込むこともあります。
攻撃者は、認証処理やアクセス制御などのセキュリティ機能が動作する瞬間を狙って電圧グリッチを注入します。例えば、パスワード検証の判定を誤らせたり、権限チェックをスキップさせたりすることで、システムへの不正アクセスを実現します。
具体的な攻撃手法と構成
かつては高度な専門知識と高価な機材が必要でしたが、近年はオープンソースツールの普及により、そのハードルは著しく低下しています。この現実を踏まえ、具体的な手法と実行プロセスについて説明します。
・攻撃環境の構成
典型的な電圧グリッチ攻撃は、以下の要素で構成されます。
- ターゲットデバイス: 攻撃対象のMCU
- グリッチ注入・制御装置: MCUの動作と同期して電圧グリッチを生成する装置
(例: ChipWhisperer[ii]) - PC: 攻撃スクリプトの実行と各種装置の制御
- 観測装置: 攻撃の成否判断やパラメータ絞り込みに用いるロジックアナライザーやオシロスコープ
これらの機器は相互に連携し、自動化された攻撃フローを実現します。
・グリッチ生成の物理的な仕組み
電圧グリッチを物理的に生成する最も一般的な手法は、「クローバー回路」と呼ばれる仕組みです。この回路は、ターゲットMCUの電源ラインを瞬間的にGNDに短絡させることで、急激な電圧降下を引き起こします。 ChipWhisperer-Huskyのような専用ツールには、このクローバー回路が標準搭載されています。MOSFETなどの高速スイッチング素子を用いることで、ナノ秒単位の精度で電源をGNDに短絡させ、制御された電圧グリッチを発生させることが可能です。
・パラメータ探索
攻撃成功の鍵は、CPUが正常動作とクラッシュの境界で誤動作を引き起こす、極めて限定的な条件を見つけ出すことです。攻撃者は、以下の主要パラメータを変化させながら、繰り返し攻撃を試行します。
- タイミング: 攻撃の起点(トリガー)から、どれだけ遅れてグリッチを注入するか。
- 幅(Width): グリッチ(電圧降下)を継続させる時間。通常はナノ秒単位で調整されます。
・攻撃の実行手順
実際の攻撃は図 1に示すような自動化された体系的なプロセスに従って実行されます。このフローは、攻撃者が手動で行う「準備フェーズ」と、スクリプトでループ実行される「実行・評価フェーズ」に大別できます。
準備フェーズ
まず、攻撃の土台となる準備を手動で行います。
次に、準備したトリガーを利用して、以下の攻撃ループをスクリプトで自動的に繰り返します。
- ターゲットのファームウェアを解析し、認証処理やセキュリティチェックの実行タイミングを特定
- 解析で特定したタイミングで、グリッチ注入の起点となるトリガー信号(例: GPIO出力、UARTデータ)を外部に出力するように設定
実行・評価フェーズ
- ターゲットデバイスをリセットし、初期状態に戻す
- トリガー待機状態を設定
- 攻撃対象の処理(例:パスワード認証)を開始
- トリガー検出後、設定したパラメータでグリッチを注入
- 結果を観測・記録し、成功か失敗かを評価
- 成功の場合: 認証バイパスなどの異常動作を確認し、ループを終了
- 失敗の場合: パラメータ(Delay, Widthなど)を少しだけ変更し、1.に戻る
このループを数千〜数万回と高速に繰り返すことで、攻撃者は最終的にセキュリティ機能を突破する条件(スイートスポット)を発見します。
図 1電圧グリッチ攻撃の実行フロー
【実験レポート】電圧グリッチ攻撃によるMCUメモリ読み出し保護の突破
本章では、筆者らが行った電圧グリッチ攻撃実験の一例として、その実験の概要と結果を紹介します。今回の実験では、車載用MCUではなく汎用の開発ボード(評価ボード)を使用しました。
実験概要と目的
今回対象としたMCUは、UART経由で内蔵フラッシュメモリの内容を読み出すブートローダー機能を備えています。さらに、読み出し保護機能が実装されており、これを有効化することでメモリアクセスを禁止することが可能です。
本実験では、読み出し保護機能が有効な状態で電圧グリッチによりこの保護機能をバイパスし、保護されたメモリ内容を抽出できることを実証します。
実験セットアップ
実験には、以下の機材を使用しました。セットアップの全体像は、図 2に示す通りです。
- ターゲットデバイス: 攻撃対象のMCUを搭載した評価ボード
- MCUのコア電源ピンを基板から引き出し、テストポイントを設置
- グリッチ注入・制御装置: ChipWhisperer-Husky
- クローバー回路をコア電源ラインに直接接続
- PC: ChipWhisperer-Huskyを介して攻撃スクリプトの実行と制御
- 観測装置: ロジックアナライザーおよびオシロスコープ
- UART通信の監視とグリッチ波形の観測に使用
図 2 VFI攻撃実験の構成
攻撃プロセスと結果
ステップ1:初期状態の確認
まず、攻撃の成否を判断するため、読み出し保護機能が有効な状態での動作を確認します。ChipWhisperer-Huskyからターゲットデバイスに対してメモリ読み出しコマンドを送信すると、MCUはこれを拒否し、「NACK(否定応答)」を返します。図 3はこのシーケンスをロジックアナライザーにより観測した通信波形です。
図 3 保護有効時のUART通信波形(NACK応答)
ステップ2:グリッチ注入とパラメータ探索
次に、ターゲットがメモリ読み出しコマンドを受信してからNACK応答を返すまでの間に、保護チェック処理が存在すると仮定しました。その仮説に基づき、図 4に示すように、コマンド送信の完了を「トリガーポイント」として電圧グリッチを注入します。
攻撃の成否は、以下の2つのパラメータに依存します。
- タイミング(Delay): トリガーから、どれだけ遅れてグリッチを注入するか。
- 幅(Width): 電圧降下をどれだけの時間、継続させるか。
この「 Delay 」と「 Width 」をスクリプトで自動的に変更しながら繰り返し試行し、保護機能が誤動作する最適な組み合わせを探索しました。
図 4 トリガー信号とグリッチ注入時のパラメータの関係
ステップ3:成功の観測
パラメータ探索の結果、特定のタイミングと幅でグリッチを注入した際 、ターゲットデバイスの応答に変化が観測されました。図 5の波形が示す通り、本来であれば「NACK(否定応答)」を返すはずのターゲットデバイスが、グリッチ注入直後に「ACK(肯定応答)」を返しています。 これは、読み出し保護のチェック処理がグリッチによって正常に実行されなかった(バイパスされた)ことを意味します。その結果、続く読み出しシーケンスが正常に実行され、保護されていたはずのフラッシュメモリから検証用文字列「PASSWD_NDIAS」を完全に抽出することに成功しました(図 6)。
図 5 攻撃成功時のUART通信波形(ACK応答)
図 6 読み出し保護バイパス後のメモリ内容の抽出
以上の結果は、ChipWhisperer-Huskyによる精密な電圧グリッチ注入が、ターゲットデバイスの読み出し保護を完全に回避可能であることを示しています。本来であればアクセス不可能なはずのメモリ領域から意図したデータを抜き取れたという事実は、ソフトウェア的な保護だけでは物理的な攻撃を防ぎきれないという現実を明確に示唆するものです。
どうすればVFI攻撃からECUを守れるのか?
VFI攻撃からECUを保護するためには、ハードウェア(MCU選定)とソフトウェア(設計・実装)の両面からのアプローチが不可欠です。
MCU選定時の考慮事項
まず、VFI攻撃への耐性を謳った耐タンパー性MCUの選定が基本となります。これらのMCUは、電圧の異常を監視するグリッチ検出器を備えている場合があります。
特に重要なのは、HSM(Hardware Security Module)搭載MCUの採用です。暗号鍵や証明書といった機密情報を、メインCPUから物理的に隔離されたセキュアな領域で管理することで、たとえメインCPUの処理がVFI攻撃によって影響を受けても、最も重要な秘密が漏洩するリスクを大幅に低減できます。
設計・実装レベルでの対策
MCUが持つセキュリティ機能を最大限に活用することが、最も効果的な対策の一つです。例えば、Renesas社のRH850ファミリなど多くの車載MCUでは、デバッグインターフェースを保護するための具体的な設定が提供されています。
- IDコード認証: デバッガを接続する際に、事前に設定された固有のIDコード(パスワード)を要求する機能。
- 特定のプログラミングインターフェースの無効化: 製品出荷時に、特定のシリアル接続など、デバッグに利用されうるインターフェースを恒久的に禁止する設定。
メーカーの推奨に従い、これらの機能を製品に適切に設定・実装することで、物理的な攻撃に対する耐性を大幅に向上させることが可能です。
まとめ
本稿では、自動車セキュリティにおける新たな脅威「VFI(電圧フォルトインジェクション) 」について、その攻撃原理から実験による実証、そして具体的な防御策までを解説しました。デバッグポートの無効化といった従来の対策だけでは、VFIのような物理攻撃を防ぐことは困難です。 これからのECU開発では、耐タンパー性MCUの選定といったハードウェア対策と、MCUが持つセキュリティ機能を適切に実装するソフトウェア対策を組み合わせた、多層的な防御設計が不可欠となります。
[i] UN Regulation No. 155 - Cyber security and cyber security management system https://unece.org/transport/documents/2021/03/standards/un-regulation-no-155-cyber-security-and-cyber-security
[ii] ChipWhisperer https://chipwhisperer.readthedocs.io/en/latest/