Webアクセスを狙った攻撃を防ぐポイントは,(1)不正なコードを置いた危険なサイトにアクセスしない,(2)アクセスしてダウンロードしてしまっても感染させない,(3)万が一感染してしまっても情報は流出させない---の3段階がある(第3回を参照)。第4回では,(2)の「ダウンロードしても感染させない」と(3)の「情報の流出を防ぐ」を見ていく。

動作を監視し未知の攻撃を検出

 まずは,(2)の「ダウンロードしても感染させない」工夫である。

 不正なコードを検出するのは,従来から広く使われているパターン・マッチングが基本である。不正なコードに含まれる特徴的なバイト列を「シグネチャ」として記録しておき,これと合致するパターンを見つけたら不正なコードと判断するというものだ。

 このパターン・マッチングは,今でも不正なコードを見つける中核技術である。だが,第2回で解説した「難読化」や「パッカー」を使った亜種については,発見できないことがある。これをカバーするために,多くのセキュリティ対策ベンダーが採用しているのが「ヒューリスティック分析」と呼ばれる方法である。

 ヒューリスティック分析では,過去の攻撃で使われた危険なプログラムの動作を経験則として記録しておき,それと似たような動作をすれば不正なコードの可能性が高いと判断する。これにより,シグネチャとしては登録されていない未知のコードであっても,攻撃しようとする挙動を見つけて検知する。

 例えば,ジャストシステムが販売する「Kaspersky Internet Security」(以下Kaspersky)の例を見てみよう。Kasperskyでは「プロアクティブ・ディフェンス」という名称でヒューリスティック分析の機能を搭載している。

 プロアクティブ・ディフェンスでは,パソコン上で実行されるコードのふるまいを分析すると同時に,レジストリの書き換えをモニターしてプログラムの動作を追跡する。システム領域やDLLの書き換えなど,通常のプログラムが実行しないような不正なコード特有の挙動を検知した場合は,画面にメッセージを表示し利用者に実行を許可するかどうかの確認を求める。