鵜飼 裕司/米eEye Digital Security Senior Software Engineer

 第2回でお話したように,マシンコード実行型の脆弱性を解析するためには,ターゲット・システムのデバッグが不可欠です。例えば,バッファ・オーバーフロー脆弱性の攻略には,バッファ・オーバーフロー状態が発生した際のメモリーやレジスタの内容を確認する必要があります。そのための最も有効な手段は,ICE(In-Circuit Emulator)を利用することです。

 ICEとは,組み込みシステム用の開発支援装置であり,ターゲット(対象システム)に接続して利用します。リアルタイム・トレースやブレーク,シングル・ステップ,レジスタやメモリーへのデータ・セット等が可能であり,通常,PC上で動作する専用のソフトウエアで制御します。

 最近開発されたCPUの多くは,JTAG ICE(JTAGエミュレータ)によるデバッグをサポートしています。JTAG(Joint Test Action Group)とは,IEEE 1149.1として標準化されたバウンダリ・スキャン用のアーキテクチャとそのシリアル・ポートのことです。CPUの内部にバウンダリ・スキャンのためのメカニズムがあらかじめ組み込まれています。通常,組み込みシステム開発ではJTAGエミュレータが用いられます。


図3. 実験で利用したMulti-ICEとその接続例
(右上がターゲットシステム。Multi-ICEの左側のコネクタはパラレル・ケーブルでPCに接続する)

[画像のクリックで拡大表示]

 今回の実験では,ARM社純正のMulti-ICE Ver2.2を利用しました。現行のARMコアをすべてサポートしており,RDI(Remote Debug Interface)準拠のデバッガ・ソフトウエアを利用できます。今回の実験では,デバッガ・ソフトウエアは,IARシステムズ社のEmbedded Workbenchを用いました。

 ARMコアをサポートするJTAGエミュレータやデバッガは,他にもいろいろあります。ターゲットをデバッグできるものであれば,どれを利用してもかまわないでしょう。脆弱性解析程度の用途であれば安価なものでも十分です。JTAGエミュレータの価格は,3万円程度からです。デバッカはフリーのものを利用できます。したがって,ターゲットの脆弱性を十分に解析できるシステムを,攻撃者は簡単に入手することができます。(第5回へ続く)

 「Security Tech」は,米eEye Digital SecurityのSenior Software Engineerである鵜飼裕司氏による技術コラムです。鵜飼氏はMicrosoft製品のセキュリティ脆弱性(セキュリティ・ホール)を多数発見していることでも知られるセキュリティの専門家です。
 本コラムでは,あるテーマについて数回にわたって技術解説記事を執筆していただきます。1回目のテーマは,「組み込みシステムのセキュリティ」。全8回にわたって,組み込みシステムにおけるセキュリティ脆弱性の脅威の実際と,開発サイドに求められる組み込み機器独特の防衛策について解説していただきます。
 なお,鵜飼氏には「ITpro Watcher」も執筆していただいております。こちらのほうも,併せてお読みいただければ幸いです。(編集部より)