【解決手段】最初にエンベデッド機器の情報を収集するS210。次にエンベデッド機器とJTAGベースでインタフェーシングして、収集された情報に基づいて動的バイナリ分析のための情報を生成しS220、ソフトウェア処理部がハードウェア処理部とインタフェーシングして、動的バイナリ分析のための情報を受信してディスアセンブリングを行うS230。ディスアセンブリングを行った結果に基づいてエンベデッド機器のコアプラットフォームを選択するS240。そしてコアプラットフォームに対する動的バイナリ分析を行ってエンベデッド機器のセキュリティ脆弱性を分析するS250。
【発明を実施するための形態】
【0037】
以下、本発明を添付した図面を参照して詳細に説明する。ここで、繰り返される説明、本発明の要旨をあいまいにし得る公知の機能、および構成に関する詳細な説明は省略する。本発明の実施形態は、当業界における平均的な知識を有する者に本発明をより完全に説明するために提供されるものである。したがって、図面における要素の形状および大きさなどはより明確な説明のために誇張されることがある。
【0038】
明細書全体において、ある部分がある構成要素を「含む」とする時、これは、特に反対の記載がない限り、他の構成要素を除くのではなく、他の構成要素をさらに包含できることを意味する。
【0039】
以下、本発明に係る好ましい実施形態を添付した図面を参照して詳細に説明する。
【0040】
図1は、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析装置を示すブロック図である。
【0041】
図1を参照すれば、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析装置100は、ハードウェア処理部110と、ソフトウェア処理部120と、ユーザインタフェース部130とを含む。
【0042】
本発明の一実施形態によれば、動的バイナリ分析装置100は、ハードウェアパーツに相応するハードウェア処理部110とソフトウェアパーツに相応するソフトウェア処理部120とが互いにインタフェーシングして、ハードウェアボード上で動的バイナリ分析を提供できる。
【0043】
ハードウェア処理部110は、エンベデッド機器10から収集した情報から動的バイナリ分析のための情報を生成できる。
【0044】
この時、ハードウェア処理部110は、動的バイナリ分析装置100のハードウェアパーツ(Advanced ICE/ICD装置)310に相応し得る。
【0045】
すなわち、ハードウェア処理部110は、ロジッグ&ピンアウトオートスキャナ(Logic&Pinout Auto−Scanner)311と、ターゲットインタフェーシングモジュール(Target Interfacing Module)312と、A−ICDオペレーティングモジュール(A−ICD Operating Module)313と、コアインフォジェネレータ(Core Info Generator)314と、HW I/Fモジュール(HW I/F Module)315とを含むアドバンスト(Advanced)ICE/ICD装置310に相応し得る。
【0046】
ロジッグ&ピンアウトオートスキャナ(Logic&Pinout Auto−Scanner)311は、JTAG I/F(SWD)を用いてエンベデッド機器10を自動的にスキャニングしてインタフェーシングできる。
【0047】
ターゲットインタフェーシングモジュール(Target Interfacing Module)312は、エンベデッド機器10のCPU11、Flash Memory12およびSDRAM13をインタフェーシングできる。
【0048】
A−ICDオペレーティングモジュール(A−ICD Operating Module)313は、アドバンストICE/ICD装置に対する全般的な運営を行うことができる。
【0049】
JTAG I/F(SWD)は、エンベデッド機器10をJTAGベースでインタフェーシングするデバッギング装置に相応し得る。
【0050】
ハードウェア処理部110は、デバッギング装置を用いてエンベデッド機器10とJTAGベースでインタフェーシングできる。
【0051】
この時、デバッギング装置は、エンベデッド機器10にインタフェーシングを行う多様な装置に相応し得る。
【0052】
例えば、デバッギング装置に相応し得るJTAG I/F(SWD)は、チップの内部にバウンダリセル(Boundary Cell)を生成し、外部のピンと一対一で連結され、チャネルを生成して動的バイナリ装置100とエンベデッド機器10とを連結することができる。
【0053】
また、ハードウェア処理部110は、情報生成部111と、ハードウェアインタフェース部112とを含むことができる。
【0054】
情報生成部111は、エンベデッド機器10とインタフェーシングして、収集した情報から前記動的バイナリ分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0055】
この時、情報生成部111は、コアインフォジェネレータ(Core Info Generator)314に相応し得る。
【0056】
この時、コア情報は、エンベデッド機器10のCPU11の種類および詳細情報に相応し、CORE_Infoに相応し得る。
【0057】
この時、レジストリ情報は、動的分析のためのレジスタ情報に相応し、REG_Infoに相応し得る。
【0058】
REG_Infoは、識別されたコアに対する初期値情報を含むことができる。
【0059】
この時、REG_Infoは、エンベデッド機器10のフラッシュメモリ12上に格納されたレジストリ収集情報に相応し得る。
【0060】
例えば、識別されたコアプラットフォームがARMの場合、REG_Infoは、コアが16個のレジストリを用いるとの情報を含み、16個のレジストリに対する初期値情報を含むことができる。
【0061】
この時、バイナリ情報は、動的分析のためのバイナリ情報に相応し、RAM_dump_binaryに相応し得る。
【0062】
RAM_dump_binaryは、エンベデッド機器10のSDRAM13上のバイナリを収集して情報生成部111が生成した情報に相応し得る。
【0063】
すなわち、情報生成部111は、前記動的バイナリ分析装置100が、デバッギング装置を用いて前記エンベデッド機器10とインタフェーシングして、前記エンベデッド機器10のCPU11、フラッシュメモリ12およびSDRAM13から収集した情報を用いて、前記動的バイナリ情報分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0064】
ハードウェアインタフェース部112は、ソフトウェア処理部120とインタフェーシングして、前記コア情報、前記レジストリ情報および前記バイナリ情報を前記ソフトウェア処理部120に伝達できる。
【0065】
この時、ハードウェアインタフェース部112は、HW I/Fモジュール(HW I/F Module)315に相応し得る。
【0066】
ハードウェアインタフェース部112は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(TCP/IP Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、前記CORE_Info、REG_Info、RAM_dump_binaryをソフトウェア処理部120に伝達できる。
【0067】
ソフトウェア処理部120は、コア情報、レジスタ情報およびバイナリ情報に対してディスアセンブリングを行って前記エンベデッド機器10のコアプラットフォームを選択し、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器10のセキュリティ脆弱性を分析できる。
【0068】
この時、ソフトウェア処理部120は、SW I/Fモジュール(SW I/F Module)321と、インタプリタ322と、ベアマシンセレクタ323とを含むエンベデッドDBA装置320に相応し得る。
【0069】
この時、エンベデッドDBA装置320は、テイントアナライザ(Taint Analyzer)324と、コンコリックエグゼキュータ(Concolic Executor)325とをさらに含むことができる。
【0070】
また、ソフトウェア処理部120は、ソフトウェアインタフェース部121と、解析部122と、選択部123と、分析部124とを含むことができる。
【0071】
ソフトウェアインタフェース部121は、前記ハードウェア処理部110とインタフェーシングして、前記コア情報、前記レジストリ情報および前記バイナリ情報を受信できる。
【0072】
この時、ソフトウェアインタフェース部121は、SW I/Fモジュール(SW I/F Module)321に相応し得る。
【0073】
ソフトウェアインタフェース部121は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(TCP/IP Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、前記CORE_Info、REG_Info、RAM_dump_binaryをハードウェア処理部110から受信できる。
【0074】
解析部122は、前記コア情報、前記レジストリ情報および前記バイナリ情報に対して前記ディスアセンブリングを行うことができ、これによりコアインストラクション(CORE Instruction)の解析とベアマシン(Bare Machine)の決定に重要な役割を果たすことができる。
【0075】
この時、解析部122は、インタプリタ322に相応し得る。
【0076】
解析部122は、ARM、MPIS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームを解析できる。
【0077】
この時、解析部122は、前記コア情報、前記レジストリ情報および前記バイナリ情報をベアマシンプラットフォームが解析するために、前記ディスアセンブリングを行うことができる。
【0078】
選択部123は、前記ディスアセンブリングを行った結果に基づいて前記コアプラットフォームを選択できる。
【0079】
この時、選択部123は、前記ディスアセンブリングを行った結果に基づいて前記ベアマシンプラットフォームに予め格納されたプラットフォーム情報とマッピングして、前記エンベデッド機器10のコアプラットフォームを選択できる。
【0080】
この時、選択部123が選択可能なコアプラットフォームは、ARM、MIPS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームに相応し得る。
【0081】
この時、選択部123は、解析部122と連動して、ベアマシンプラットフォームのコアプラットフォームを動的に選択できる。
【0082】
すなわち、選択部123は、前記CPU11のコア情報、前記フラッシュメモリ12のレジストリ情報および前記SDRAM13のバイナリ情報を前記プラットフォーム情報にそれぞれマッピングして、一致するコアプラットフォームを前記エンベデッド機器10のコアプラットフォームとして選択できる。
【0083】
また、選択部123は、ベアマシンセレクタ(Bare Machine Selector)323に相応し得る。
【0084】
分析部124は、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0085】
この時、分析部124は、前記コアプラットフォームに対するテイント分析(Taint Analysis)手法およびコンコリック実行(Concolic Execution)手法を共に用いて、前記動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0086】
コンコリック実行手法は、シンボリック実行手法と、コンクリート実行手法とを含むことができる。
【0087】
また、分析部124は、テイント分析手法を行うテイントアナライザ324と、コンコリック実行手法を行うコンコリックエグゼキュータ325とを含むことができる。
【0088】
ユーザインタフェース部130は、ユーザに動作バイナリ分析情報および過程を出力し、ユーザと相互作用して動的バイナリ分析装置100を制御できる。
【0089】
この時、ユーザインタフェース部130は、ユーザインタフェースパーツ330に相応し得る。
【0090】
また、ユーザインタフェース部130は、GUIモジュール331と、Rule−DBモジュール332とを含むことができる。
【0091】
GUIモジュール331は、ハードウェアおよびソフトウェアのセッティング(setting)、ランニング(running)およびロギング(logging)を出力および実行できる。
【0092】
Rule−DBモジュール332は、セキュリティ脆弱性とセキュアコーディングを検証するデータベースを保持できる。
【0093】
この時、Rule−DBモジュール332は、V−DB(Vulnerability Database、脆弱性データベース)と、S−DB(Secure Coding Database、セキュアコーディングデータベース)とを含むことができる。
【0094】
V−DBは、コアプラットフォームごとにセキュリティ脆弱性を分析するためのデータベースを保持できる。
【0095】
S−DBは、コアプラットフォームごとにセキュアコーディングを検証するためのデータベースを保持できる。
【0096】
したがって、テイントアナライザ324は、Rule−DBモジュール332と連動して、識別されたコアに対してV−DBを用いたセキュリティ脆弱性、またはS−DBを用いたセキュアコーディングを検証することができる。
【0097】
すなわち、ハードウェアボード上の動的バイナリ分析装置(ICE−DBA)100は、エンベデッド機器10とハードウェア処理部110を介してハードウェア的に直接インタフェーシングし、動的に収集された情報から動的バイナリ分析のための情報を生成して、ソフトウェア処理部120によりセキュリティ脆弱性を分析できる。
【0098】
これにより、エンベデッド機器10のセキュリティ脆弱性の分析がより簡便になり、速やかに行われる。
【0099】
図2は、
図1に示されたハードウェア処理部の一例を細部的に示すブロック図である。
【0100】
図2を参照すれば、ハードウェア処理部110は、情報生成部111と、ハードウェアインタフェース部112とを含むことができる。
【0101】
情報生成部111は、エンベデッド機器10とインタフェーシングして、収集した情報から前記動的バイナリ分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0102】
この時、情報生成部111は、コアインフォジェネレータ(Core Info Generator)314に相応し得る。
【0103】
この時、コア情報は、エンベデッド機器10のCPU11の種類および詳細情報に相応し、CORE_Infoに相応し得る。
【0104】
この時、レジストリ情報は、動的分析のためのレジスタ情報に相応し、REG_Infoに相応し得る。
【0105】
REG_Infoは、識別されたコアに対する初期値情報を含むことができる。
【0106】
この時、REG_Infoは、エンベデッド機器10のフラッシュメモリ(Flash memory)12上に格納されたレジストリ収集情報に相応し得る。
【0107】
例えば、識別されたコアプラットフォームがARMの場合、REG_Infoは、コアが16個のレジストリを用いるとの情報を含み、16個のレジストリに対する初期値情報を含むことができる。
【0108】
この時、バイナリ情報は、動的分析のためのバイナリ情報に相応し、RAM_dump_binaryに相応し得る。
【0109】
RAM_dump_binaryは、エンベデッド機器10のSDRAM13上のバイナリを収集して情報生成部111が生成した情報に相応し得る。
【0110】
すなわち、情報生成部111は、前記動的バイナリ分析装置100が、デバッギング装置を用いて前記エンベデッド機器10とインタフェーシングして、前記エンベデッド機器10のCPU11、フラッシュメモリ12およびSDRAM13から収集した情報を用いて、前記動的バイナリ情報分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0111】
ハードウェアインタフェース部112は、ソフトウェア処理部120とインタフェーシングして、前記コア情報、前記レジストリ情報および前記バイナリ情報を前記ソフトウェア処理部120に伝達できる。
【0112】
この時、ハードウェアインタフェース部112は、HW I/Fモジュール(HW I/F Module)315に相応し得る。
【0113】
ハードウェアインタフェース部112は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(TCP/IP Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、前記CORE_Info、REG_Info、RAM_dump_binaryをソフトウェア処理部120に伝達できる。
【0114】
図3は、
図1に示されたソフトウェア処理部の一例を細部的に示すブロック図である。
【0115】
図3を参照すれば、ソフトウェア処理部120は、ソフトウェアインタフェース部121と、解析部122と、選択部123と、分析部124とを含むことができる。
【0116】
ソフトウェア処理部120は、コア情報、レジスタ情報およびバイナリ情報に対してディスアセンブリングを行って前記エンベデッド機器10のコアプラットフォームを選択し、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器10のセキュリティ脆弱性を分析できる。
【0117】
ソフトウェアインタフェース部121は、前記ハードウェア処理部110とインタフェーシングして、前記コア情報、前記レジストリ情報および前記バイナリ情報を受信できる。
【0118】
この時、ソフトウェアインタフェース部121は、SW I/Fモジュール(SW I/F Module)321に相応し得る。
【0119】
ソフトウェアインタフェース部121は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(TCP/IP Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、前記CORE_Info、REG_Info、RAM_dump_binaryをハードウェア処理部110から受信できる。
【0120】
解析部122は、前記コア情報、前記レジストリ情報および前記バイナリ情報に対して前記ディスアセンブリングを行うことができ、これによりコアインストラクション(CORE Instruction)の解析とベアマシン(Bare Machine)の決定に重要な役割を果たすことができる。
【0121】
この時、解析部122は、インタプリタ322に相応し得る。
【0122】
解析部122は、ARM、MPIS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームを解析できる。
【0123】
この時、解析部122は、前記コア情報、前記レジストリ情報および前記バイナリ情報をベアマシンプラットフォームが解析するために、前記ディスアセンブリングを行うことができる。
【0124】
選択部123は、前記ディスアセンブリングを行った結果に基づいて前記コアプラットフォームを選択できる。
【0125】
この時、選択部123は、前記ディスアセンブリングを行った結果に基づいて前記エンベデッド機器10のコアを識別できる。
【0126】
この時、選択部123は、前記ディスアセンブリングを行った結果に基づいて前記ベアマシンプラットフォームに予め格納されたプラットフォーム情報とマッピングして、前記エンベデッド機器10のコアプラットフォームを選択できる。
【0127】
この時、選択部123が選択可能なコアプラットフォームは、ARM、MIPS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームに相応し得る。
【0128】
この時、選択部123は、解析部122と連動して、ベアマシンプラットフォームのコアプラットフォームを動的に選択できる。
【0129】
すなわち、選択部123は、前記CPU11のコア情報、前記フラッシュメモリ12のレジストリ情報および前記SDRAM13のバイナリ情報を前記プラットフォーム情報にそれぞれマッピングして、一致するコアプラットフォームを前記エンベデッド機器10のコアプラットフォームとして選択できる。
【0130】
また、選択部123は、ベアマシンセレクタ(Bare Machine Selector)323に相応し得る。
【0131】
分析部124は、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0132】
この時、分析部124は、前記コアプラットフォームに対するテイント分析(Taint Analysis)手法およびコンコリック実行(Concolic Execution)手法を共に用いて、前記動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0133】
コンコリック実行手法は、シンボリック実行手法と、コンクリート実行手法とを含むことができる。
【0134】
また、分析部124は、テイント分析手法を行うテイントアナライザ324と、コンコリック実行手法を行うコンコリックエグゼキュータ325とを含むことができる。
【0135】
図4は、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法を示す動作フローチャートである。
【0136】
図4を参照すれば、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法は、まず、エンベデッド機器の情報を収集する(S210)。
【0137】
すなわち、ステップS210は、エンベデッド機器10から収集した情報から動的バイナリ分析のための情報を生成できる。
【0138】
この時、ステップS210は、デバッギング装置を用いてエンベデッド機器10とインタフェーシングできる。
【0139】
例えば、ステップS210は、ロジッグ&ピンアウトオートスキャナ(Logic&Pinout Auto−Scanner)がJTAG I/F(SWD)を用いてエンベデッド機器10とインタフェーシングできる。
【0140】
JTAG I/F(SWD)は、チップの内部にバウンダリセル(Boundary Cell)を生成し、外部のピンと一対一で連結され、プロセッサが行える動作を中間のセル(Cell)を介して人為的に行うことができる。
【0141】
JTAG I/F(SWD)は、エンベデッド機器10をJTAGベースでインタフェーシングするデバッギング装置に相応し得る。
【0142】
また、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法は、動的バイナリ分析のための情報を生成できる(S220)。
【0143】
すなわち、ステップS220は、エンベデッド機器10とJTAGベースでインタフェーシングして、収集した情報から前記動的バイナリ分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0144】
この時、コア情報は、エンベデッド機器10のCPU11の種類および詳細情報に相応し、CORE_Infoに相応し得る。
【0145】
この時、レジストリ情報は、動的分析のためのレジスタ情報に相応し、REG_Infoに相応し得る。
【0146】
REG_Infoは、識別されたコアに対する初期値情報を含むことができる。
【0147】
この時、REG_Infoは、エンベデッド機器10のフラッシュメモリ(Flash Memory)12上に格納されたレジストリ収集情報に相応し得る。
【0148】
例えば、識別されたコアプラットフォームがARMの場合、REG_Infoは、コアが16個のレジストリを用いるとの情報を含み、16個のレジストリに対する初期値情報を含むことができる。
【0149】
この時、バイナリ情報は、動的分析のためのバイナリ情報に相応し、RAM_dump_binaryに相応し得る。
【0150】
RAM_dump_binaryは、エンベデッド機器10のSDRAM13上のバイナリを収集して情報生成部111が生成した情報に相応し得る。
【0151】
すなわち、ステップS220は、前記動的バイナリ分析装置100が、デバッギング装置を用いて前記エンベデッド機器10とインタフェーシングして、前記エンベデッド機器10のCPU11、フラッシュメモリ12およびSDRAM13から収集した情報を用いて、前記動的バイナリ情報分析のための前記コア情報、前記レジストリ情報および前記バイナリ情報を生成できる。
【0152】
この時、ステップS220は、ハードウェアインタフェース部112がソフトウェア処理部120とインタフェーシングして、前記コア情報、前記レジストリ情報および前記バイナリ情報を前記ソフトウェア処理部120に伝達できる。
【0153】
また、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法は、ディスアセンブリングを行うことができる(S230)。
【0154】
すなわち、ステップS230は、コア情報、レジスタ情報およびバイナリ情報に対してディスアセンブリングを行うことができる。
【0155】
この時、ステップS230は、まず、前記ソフトウェア処理部120が前記コア情報、前記レジストリ情報および前記バイナリ情報を受信できる。
【0156】
例えば、ステップS230は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(Socket Networking)およびRPC(Remote Procedure Call)を用いて、前記CORE_Info、REG_InfoおよびRAM_dump_binaryをハードウェア処理部110から受信できる。
【0157】
この時、ステップS230は、前記コア情報、前記レジストリ情報および前記バイナリ情報に対して前記ディスアセンブリングを行うことができ、これによりコアインストラクション(CORE Instruction)の解析とベアマシン(Bare Machine)の決定に重要な役割を果たすことができる。
【0158】
この時、ステップS230は、ARM、MPIS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームを解析できる。
【0159】
この時、ステップS230は、前記コア情報、前記レジストリ情報および前記バイナリ情報をベアマシンプラットフォームが解析するために、前記ディスアセンブリングを行うことができる。
【0160】
また、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法は、エンベデッド機器10のコアプラットフォームを選択できる(S240)。
【0161】
すなわち、ステップS240は、前記ディスアセンブリングを行った結果に基づいて前記コアプラットフォームを選択できる。
【0162】
この時、ステップS240は、前記ディスアセンブリングを行った結果に基づいて前記ベアマシンプラットフォームに予め格納されたプラットフォーム情報とマッピングして、前記エンベデッド機器10のコアプラットフォームを選択できる。
【0163】
この時、ステップS240で選択可能なコアプラットフォームは、ARM、MIPS、PPCおよびSHなどのコアプラットフォームに相応し得る。
【0164】
この時、ステップS240は、ベアマシンセレクタがインタプリタと連動して、ベアマシンプラットフォームのコアプラットフォームを動的に選択できる。
【0165】
すなわち、ステップS240は、前記CPU11のコア情報、前記フラッシュメモリ12のレジストリ情報および前記SDRAM13のバイナリ情報を前記プラットフォーム情報にそれぞれマッピングして、一致するコアプラットフォームを前記エンベデッド機器10のコアプラットフォームとして選択できる。
【0166】
また、本発明の一実施形態に係るハードウェアボード上の動的バイナリ分析方法は、セキュリティ脆弱性を分析できる(S250)。
【0167】
すなわち、ステップS250は、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0168】
この時、ステップS250は、前記コアプラットフォームに対するテイント分析(Taint Analysis)手法およびコンコリック実行(Concolic Execution)手法の少なくとも1つを用いて、前記動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0169】
コンコリック実行手法は、シンボリック実行手法と、コンクリート実行手法とを含むことができる。
【0170】
この時、ステップS250は、Rule−DBモジュール332と連動して、識別されたコアに対してV−DBを用いたセキュリティ脆弱性、またはS−DBを用いたセキュアコーディングを検証できる。
【0171】
また、ステップS250は、ユーザインタフェース部130を介して動作バイナリ分析情報、過程および結果を出力できる。
【0172】
図5は、本発明の一実施形態に係るエンベデッドシステムのセキュリティ脆弱性を分析するハードウェアボード上の動的バイナリ分析装置を細部的に示す図である。
【0173】
図5を参照すれば、本発明の一実施形態に係る動的バイナリ分析装置100は、ハードウェアパーツ(Advanced ICE/ICD装置)310と、ソフトウェアパーツ(Embedded DBA装置)320と、ユーザインタフェースパーツ(GUI&DB)330とを含むことができる。
【0174】
動的バイナリ分析のために動的バイナリ分析装置100とインタフェーシングされるエンベデッド機器10は、CPU/MCU11と、フラッシュメモリ(Flash Memory)12と、SDRAM13とを含むことが分かる。
【0175】
アドバンストICE/ICD(Advanced ICE/ICD)装置310は、ロジッグ&ピンアウトオートスキャナ(Logic&Pinout Auto−Scanner)311と、ターゲットインタフェーシングモジュール(Target Interfacing Module)312と、A−ICDオペレーティングモジュール(A−ICD Operating Module)313と、コアインフォジェネレータ(Core Info Generator)314と、HW I/Fモジュール(HW I/F Module)315とを含むことができる。
【0176】
ロジッグ&ピンアウトオートスキャナ(Logic&Pinout Auto−Scanner)311は、JTAG I/F(SWD)を用いてエンベデッド機器10を自動的にスキャニングしてインタフェーシングできる。
【0177】
JTAG I/F(SWD)は、エンベデッド機器10をJTAGベースでインタフェーシングするデバッギング装置に相応し得る。
【0178】
JTAG I/F(SWD)は、チップの内部にバウンダリセル(Boundary Cell)を生成し、外部のピンと一対一で連結され、チャネルを生成して動的バイナリ装置100とエンベデッド機器10をJTAGベースでインタフェーシングできる。
【0179】
ターゲットインタフェーシングモジュール(Target Interfacing Module)312は、エンベデッド機器10のCPU11、フラッシュメモリ(Flash Memory)12およびSDRAM13をインタフェーシングできる。
【0180】
A−ICDオペレーティングモジュール(A−ICD Operating Module)313は、アドバンストICE/ICD装置に対する全般的な運営を行うことができる。
【0181】
コアインフォジェネレータ(Core Info Generator)314は、エンベデッド機器10とインタフェーシングして、収集した情報から前記動的バイナリ分析のためのCORE_Info、REG_InfoおよびRAM_dump_binaryを生成できる。
【0182】
CORE_Infoは、CPUの種類およびCPU11に対する詳細情報を含むことができる。
【0183】
REG_Infoは、識別されたコアに対する初期値情報を含むことができる。
【0184】
例えば、識別されたコアプラットフォームがARMの場合、REG_Infoは、コアが16個のレジストリを用いるとの情報を含み、16個のレジストリに対する初期値情報を含むことができる。
【0185】
RAM_dump_binaryは、動的にエンベデッド機器10のSDRAM13上のバイナリを収集した情報に相応し得る。
【0186】
HW I/Fモジュール(HW I/F Module)315は、SW I/Fモジュール(SW I/F MODULE)321とインタフェーシングして、CORE_Info、REG_InfoおよびRAM_dump_binaryをソフトウェアパーツに伝達できる。
【0187】
HW I/F Module315は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(TCP/IP Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、前記CORE_Info、REG_InfoおよびRAM_dump_binaryをSW I/Fモジュール(SW I/F Module)321に伝達できる。
【0188】
エンベデッドDBA装置320は、CORE_Info、REG_InfoおよびRAM_dump_binaryに対してディスアセンブリングを行って前記エンベデッド機器10のコアプラットフォームを選択し、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器10のセキュリティ脆弱性を分析できる。
【0189】
この時、エンベデッドDBA装置320は、SW I/Fモジュール(SW I/F Module)321と、インタプリタ322と、ベアマシンセレクタ323と、テイントアナライザ(Taint Analyzer)324と、コンコリックエグゼキュータ(Concolic Executor)325とを含むことができる。
【0190】
SW I/Fモジュール(SW I/F Module)321は、シリアルコミュニケーション(Serial Communication)、TCP/IPソケットネットワーキング(Socket Networking)およびRPC(Remote Procedure Call、リモートプロシージャコール)のいずれか1つを用いて、CORE_Info、REG_Info、RAM_dump_binaryをHW I/Fモジュール(HW I/F Module)315から受信できる。
【0191】
インタプリタ322は、CORE_Info、REG_Info、RAM_dump_binaryに対して前記ディスアセンブリングを行うことができ、これによりコアインストラクション(CORE Instruction)の解析とベアマシン(Bare Machine)の決定に重要な役割を果たすことができる。
【0192】
インタプリタ322は、ARM、MPIS、PPCおよびSHなどのエンベデッドコアプラットフォームを解析できる。
【0193】
ベアマシンセレクタ323は、前記ディスアセンブリングを行った結果に基づいてベアマシンプラットフォームに予め格納されたプラットフォーム情報とマッピングして、前記エンベデッド機器10のコアプラットフォームを選択できる。
【0194】
この時、ベアマシンセレクタは、前記識別されたエンベデッド機器10のコアに対してベアマシンプラットフォームから前記コアプラットフォームを選択できる。
【0195】
この時、ベアマシンセレクタ323が選択可能なコアプラットフォームは、ARM、MIPS、PPCおよびSHなどのエンベデッド系列のコアプラットフォームに相応し得る。
【0196】
この時、ベアマシンセレクタ323は、インタプリタ322と連動して、ベアマシンプラットフォームのコアプラットフォームを動的に選択できる。
【0197】
すなわち、ベアマシンセレクタ323は、前記CPU11のコア情報、前記フラッシュメモリ12のレジストリ情報および前記SDRAM13のバイナリ情報を前記プラットフォーム情報にそれぞれマッピングして、一致するコアプラットフォームを前記エンベデッド機器10のコアプラットフォームとして選択できる。
【0198】
テイントアナライザ(Taint Analyzer)324およびコンコリックエグゼキュータ(Concolic Executor)325は、前記コアプラットフォームに対する動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0199】
この時、テイントアナライザ(Taint Analyzer)324およびコンコリックエグゼキュータ(Concolic Executor)325は、前記コアプラットフォームに対するテイント分析(Taint Analysis)手法およびコンコリック実行(Concolic Execution)手法の少なくとも1つを用いて、前記動的バイナリ分析により前記エンベデッド機器のセキュリティ脆弱性を分析できる。
【0200】
コンコリック実行手法は、シンボリック実行手法と、コンクリート実行手法とを含むことができる。
【0201】
ユーザインタフェースパーツ330は、ユーザに動作バイナリ分析情報および過程を出力し、ユーザと相互作用して動的バイナリ分析装置を制御できる。
【0202】
この時、ユーザインタフェースパーツは、GUIモジュール331と、Rule−DBモジュール332とを含むことができる。
【0203】
GUIモジュール331は、ハードウェアおよびソフトウェアのセッティング(setting)、ランニング(running)およびロギング(logging)を出力および実行できる。
【0204】
Rule−DBモジュール332は、セキュリティ脆弱性とセキュアコーディングを検証するデータベースを保持できる。
【0205】
この時、Rule−DBモジュール332は、V−DB(Vulnerability Database、脆弱性データベース)と、S−DB(Secure Coding Database、セキュアコーディングデータベース)とを含むことができる。
【0206】
V−DBは、コアプラットフォームごとにセキュリティ脆弱性を分析するためのデータベースを保持できる。
【0207】
S−DBは、コアプラットフォームごとにセキュアコーディングを検証するためのデータベースを保持できる。
【0208】
したがって、テイントアナライザ(Taint Analyzer)324は、Rule−DBモジュール332と連動して、識別されたコアに対してV−DBを用いたセキュリティ脆弱性、またはS−DBを用いたセキュアコーディングを検証できる。
【0209】
図6は、本発明の一実施形態に係るコンピュータシステムを示すブロック図である。
【0210】
図6を参照すれば、本発明の実施形態は、コンピュータで読取可能な記録媒体のようなコンピュータシステム1100で実現される。
図6に示されているように、コンピュータシステム1100は、バス1120を介して互いに通信する1つ以上のプロセッサ1110と、メモリ1130と、ユーザ入力装置1140と、ユーザ出力装置1150と、ストレージ1160とを含むことができる。また、コンピュータシステム1100は、ネットワーク1180に連結されるネットワークインタフェース1170をさらに含むことができる。プロセッサ1110は、中央処理装置またはメモリ1130やストレージ1160に格納されたプロセッシングインストラクションを実行する半導体装置であってもよい。メモリ1130およびストレージ1160は、多様な形態の揮発性または不揮発性記憶媒体であってもよい。例えば、メモリは、ROM1131やRAM1132を含むことができる。
【0211】
以上、本発明に係るハードウェアボード上の動的バイナリ分析装置および方法は、上記のように説明された実施形態の構成と方法が限定されて適用されるのではなく、上記の実施形態は、多様な変形がなされるように各実施形態の全部または一部が選択的に組み合わされて構成されてもよい。