・イゥ`・ ・ケ・・テ・ネ

動的解析dynamic analysis】 動的テスト / dynamic testing

動的解析とは、コンピュータプログラムの動作を解析する手法の一つで、実際にプログラムを実行してみてどう振る舞いを調べること。ソフトウェア開発やマルウェア検知などで行われる。

 

ソフトウェアテストにおける動的解析

ソフトウェア開発の分野では、作成したプログラムを実行し、あるいは操作してみて正しく動作するか確かめることを動的解析という。ソフトウェアテストの手法の一つで、単にテストと言えば動的解析を指す。

一方、プログラムを実行せずに、プログラムコードを人間や専用のソフトウェアなどが読み込んで内容を分析し、誤りがないか確かめる手法を「静的解析」(static analysis)という。通常、ソフトウェアテストでは主に動的解析が活用され、静的解析は補助的に、あるいは特別な目的(形式手法による証明など)のために用いられることが多い。

マルウェア検知における動的解析

マルウェア対策の分野では、コンピュータウイルスなどの感染が疑われる実行プログラムを隔離された仮想的なシステム環境で実行してみて、不審な挙動が無いか調べる検知手法を動的解析という。

実際のシステム環境には影響を与えない「サンドボックス」(sandbox:砂場)と呼ばれる仮想的なプログラム実行環境を用意し、その中で怪しいプログラム(あるいは既知のマルウェアそのもの)を実行して振る舞いを調べる。感染後の実際の挙動を確かめられるため、感染の有無の調査よりも対策や復旧に必要な情報を得るために活用されることが多い。

一方、実行はせずに、プログラムコードに既知のマルウェアと共通するパターンが含まれるか、攻撃に繋がる不審な命令などが含まれるかなどを解析する手法を「静的解析」という。また、コード以外のプログラムファイルについての情報や特徴(ファイル名拡張子や添付されたデジタル署名など)を解析する手法は「表層解析」と呼ばれる。