前回の記事

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

バッファーオーバーフロー

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

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

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

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

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