とある企業の情報システム部門。頼りなかった若手社員の通称「ネコSE」も、セキュリティーに関する豊富な知識と経験を持つ「センパイ」のおかげで、少しずつ成長してきた。セキュリティー対策を極めるには、攻撃の具体的な手口を知ることも重要だ。これまで数々の手口を見てきたが、今回はいよいよ最終回。紹介するのは「バッファーオーバーフロー」の仕組みだ。攻撃者が入力データに仕込んだ攻撃コードがどのように実行されるのかを順を追って見ていこう。

ネコSE:うーん、うーん。

センパイ:珍しく考え込んでいるね。どうしたんだい?

ネコSE:それが、何を考えていたのか分からなくなってしまって。

センパイ:ははあ、それはバッファーオーバーフローの状態だね。ちょっと休憩するといいよ。

ネコSE:バッファーオーバーフローって何ですか。

センパイ:バッファーという言葉の意味は分かるかい?

ネコSE:例えば、プロジェクトのスケジュールを決めるときに「バッファーを設けておこう」とか言いますよね。「余裕」みたいな意味ですか?

センパイ:うん、だいたいそういう感じだ。コンピューター分野では、一時的な記憶領域のことをバッファーと呼ぶ。バッファーは、プログラムが必要に応じてメモリー上に確保する。入力データなどを入れておくことが多いね。

ネコSE:実際にはどんな感じで使われるんですか。

センパイ:例えば、プリンターの印刷速度は、コンピューターの印刷命令の速度よりも遅いのが普通だよね。そこで、印刷するデータをいったんバッファーにためておき、印刷を順次進めるんだ。

ネコSE:オーバーフローは「あふれる」という意味ですよね。

センパイ:そうだよ。バッファーよりも大きいデータをバッファーに入れようとするとあふれてしまう。そうなると、あふれ出たデータがバッファーの外のメモリーの内容を壊してしまう(図1)。その結果、処理が正常に行われなくなることがあるんだ。猫瀬君も考え過ぎて、処理が正常に行えなくなっていたわけさ。

図1●大量のデータでバッファーがあふれてしまう
バッファーは一時的に確保するメモリー領域で、一定の大きさがある。バッファーよりも大きいデータを流し込むと、データがあふれて他のメモリー領域を破壊してしまう。これがバッファーオーバーフローである。
[画像のクリックで拡大表示]
バッファーオーバーフロー
英語ではbuffer overflowなので「BOF」と略すこともある。

この先は有料会員の登録が必要です。「日経NETWORK」定期購読者もログインしてお読みいただけます。今なら有料会員(月額プラン)が12月末まで無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら