[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

バッファオーバーフロー攻撃

pointこの用語のポイント

pointコンピュータを使った悪いことだよ

point意図的にバッファを溢れさせるよ

point異常終了させたり、変なプログラムを実行させたりするよ

スポンサーリンク

簡単に書くよ

バッファオーバーフロー攻撃とは

メモリ上に確保されている領域よりも大きなデータを突っ込んで誤作動を起こさせてやるぜ!な攻撃のこと
です。

image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「バッファオーバーフロー」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は、適当に読み飛ばしてください。

バッファオーバーフローは「確保していた領域よりもたくさん入れちゃって、入りきらなかった状態」です。
もっと端的に言えば、溢れちゃったわけですね。
データを溜めておく場所(バッファ)が溢れた(オーバーフローした)」状態です。

バッファオーバーフロー攻撃

プログラミングでは、変数を扱います。
変数は「データを入れておく箱」です。
中にデータ(値)を入れます。

バッファオーバーフロー攻撃2

この変数ですが、実際にはメモリ上に場所を確保します。
メモリの上に「ここからここまで、この変数が使うから」と値を入れておくための領域を確保するのです。

バッファオーバーフロー攻撃3

よく分からない方は、花見の場所取りをイメージしてください。
場所を取るために下に敷いたブルーシートが変数です。
その上に座る上司や先輩、花見の参加者が値です。

花見の参加者が多くなると、ブルーシートに座りきれません。
ブルーシートの外にはみ出してしまうでしょう。
そうすると、隣で花見をしている人たちの迷惑になってしまうかもしれませんね。

コンピュータの世界も同じです。

例えば、3文字まで入る変数をメモリ上に確保したとしましょう。

バッファオーバーフロー攻撃4

そこに4文字以上入れると、入りきらない分が溢れてしまいます。

バッファオーバーフロー攻撃5

もし隣の領域を他の変数として使っていたらどうでしょう?

バッファオーバーフロー攻撃6

他の変数の値を書き換えてしまうかもしれませんね。

バッファオーバーフロー攻撃7

これは本来想定していない事態です。
困ったことになる可能性が高いです。

このように、本来確保していた領域よりも大きい値を入れて溢れちゃった状態がバッファオーバーフローです。

ここまでの説明で、バッファオーバーフローについては、なんとなくわかったでしょうか。

以上を踏まえて、意図的にバッファオーバーフローを発生させることでプログラムに誤作動を起こさせようとする悪いことがバッファオーバーフロー攻撃です。

バッファオーバーフロー攻撃8

誤作動の内容は、いろいろです。

一番イメージしやすいのは、プログラムの異常終了でしょう。
バッファオーバーフローが起きるのは、プログラムにとっては想定外のできごとです。
その想定外のできごとを意図的に発生させることで、プログラムを力尽きさせます。

バッファオーバーフロー攻撃9

実際には、プログラムが力尽きる程度で済めば御の字ですけどね。
条件が合えば、しかるべき知識や技術を持っている人が、しかるべき手段を使うことによって、悪いプログラムを実行させたりもできます。
悪いプログラムを実行させることができれば、後はやりたい放題です。

バッファオーバーフロー攻撃に対する対処は単純です。
それは

バッファオーバーフローさせない

です。

「何を当たり前のことを?」と思うかもしれませんね。
確かに当たり前のことです。
ただし、その当たり前のことを当たり前にできていれば、バッファオーバーフロー攻撃は成立しません。

そもそもの話として、バッファオーバーフローが発生するのはプログラムがおかしい(バグがある)からです。
プログラムは本来、バッファオーバーフローが発生してはいけません。
バッファオーバーフローが発生しないように作ってあるべきです。

バッファオーバーフロー攻撃はプログラムのおかしいところを利用した攻撃です。
おかしいところがないプログラム相手には使えません。
だから、バッファオーバーフローが発生しないようにしておくのが大事なのです。

作る立場の人はガッツリとテストして、バッファオーバーフロー攻撃なんぞ喰らわない強いプログラムを作ってあげてください。

image piyo2

一言でまとめるよ

まぁ「バッファオーバーフロー攻撃」って単語が出てきたら「確保している領域よりも大きなデータを入れて誤作動させてやるぜ!攻撃なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク