全1633文字

 攻撃者は工夫を凝らし、ソフトウエアの脆弱性を意のままに操ろうとしている。だが、ソフトウエアに脆弱性が存在しても、意図したように動作させるのは容易ではない。その手口は、脆弱性の種類によって様々だ。どのようなメカニズムで脆弱性は悪用されるのか。今回から、代表的な手口を取り上げ、その恐るべきメカニズムを図解する。最初に取り上げるのは、「バッファーオーバーフロー」だ。

Webページやファイルを読み込むだけでウイルスに感染

 ウイルスを実行させられる深刻な脆弱性の1つが、バッファーオーバーフローと呼ばれる脆弱性だ。パソコンにインストールしたソフトウエア(プログラム)にこの脆弱性があると、細工されたWebページやファイルを読み込むだけでウイルスに感染する。

 ユーザーがダブルクリックしなくてもウイルスが動き出すのは、既に実行されているプログラムを乗っ取るからだ(図1)。

図1●バッファーオーバーフロー脆弱性を悪用した攻撃のイメージ
図1●バッファーオーバーフロー脆弱性を悪用した攻撃のイメージ
攻撃者によって送り込まれたウイルスが勝手に実行されるのは、既に実行されている正規のプログラム(ソフトウエア)を“乗っ取る”からだ。ウイルスを含むデータを、実行中のプログラムの一部としてCPUに実行させる。通常は不可能な動作だが、実行中のプログラムに特定の脆弱性が存在すると可能になる。

 攻撃者は、実行中のプログラムに、ウイルスを含むデータを読み込ませる。プログラムが読み込んだデータは「データ領域」に保存される。データ領域に保存されたデータは、プログラムから参照されるだけで実行されない。ところがこの脆弱性があると、データ領域のウイルスが、プログラムの一部として実行されてしまう。

 脆弱性を悪用される場合の、プログラムの処理の流れを詳しく見ていこう。