ECUソフトウェアは、自動車のエンジン制御や運転支援機能などを担っており、バグや脆弱性が致命的な問題になる恐れがある。
我々は、ECUソフトウェアに考えられる脆弱性について、メモリ破壊脆弱性と非メモリ破壊脆弱性に分類し、脆弱性攻撃の手法を検討した。
今回は、実際のECUソフトウェアの入手とリバースエンジニアリングが困難であったため、ECUソフトウェアにメモリ破壊脆弱性が存在する場合にどのような手法で攻撃が可能か、理論的な検討から開始した。調査の対象としたECUマイコンのアーキテクチャは、様々なECUに搭載されている独InfineonのTriCore1797 (TriCore Architecture 1.3.1)であるが、x86などと異なりスタックにリターンアドレスが格納されないため、スタックオーバーフローによるコード実行は容易ではないと推測した。
パソコンなどと同様に任意のコード実行が可能なのか、他の攻撃手法が考えられるのかを検討した結果、スタックに配置される関数ポインタをバッファオーバーフローによって上書きし、コードを実行する手法、TriCore独自のコンテキスト管理のためのメモリ領域をうまく書き換える手法、割り込み・トラップ機構で使われるベクタテーブルを書き換える手法などが考えられた。
また、TriCore評価ボードを用意し、実験用に作成したソフトウェアを用いて考案した攻撃手法の検証を行った。いくつかの攻撃については、マイコンが提供するセキュリティメカニズムあるいは一般的なCPUとのアーキテクチャの違いのために実行不可能であることが判明した。しかし、ある条件のもとでは、バッファオーバーフロー攻撃による関数ポインタの上書きによって、TriCoreのCPUを我々の選んだメモリアドレスへジャンプさせ、そこにあらかじめ存在するコードを実行できることを確認した。