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

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

pointこの用語のポイント

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

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

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

スポンサーリンク

簡単に書くよ

バッファオーバフロー攻撃(読:バッファオーバフローコウゲキ 英:buffer overflow attack)とは

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


image piyo

詳しく書くよ

※個人的には「バッファオーバーフロー攻撃」(「オーバ」ではなく「オーバー」)という言い方の方が馴染みがありますが、某・資格試験の過去問だと「バッファオーバーフロー」ではなく「バッファオーバフロー」のような形で出てくるのですね。そのため、用語検索で引っかかるようにするために取り上げておきます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

他の変数の値を書き換えてしまいますね。

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

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

このような

元々確保していた領域よりも大きい値を入れて、あふれちゃった状態

がバッファオーバフローです。

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

以上を踏まえて

意図的にバッファオーバフローを発生させることでプログラムに誤作動を起こさせようとする悪いこと

が「バッファオーバフロー攻撃」です。

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

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

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

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

実際には、プログラムが力尽きる程度で済めば御の字です。
条件が合えば、悪いプログラムを実行させたりもできます。
おっかないですね。

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

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

です。

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

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

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

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


image piyo2

一言でまとめるよ

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

一番上に戻るよ
スポンサーリンク
書籍画像024
書籍画像061

おまけ

■訳してみるよ

「buffer(バッファ)」の意味は「緩衝器」とか「緩衝物」とか「緩衝装置」とか「緩衝材」とかです。
「overflow(オーバフロー)」の意味は「あふれる」とか「氾濫する」とかです。
「攻撃」は日本語ですね。
何となく くっつけると

緩衝物からあふれさせる攻撃

となります。


■検索してみる?




書籍画像
わわわ説明術コラム
宣伝だよ
つくって、壊して、直して学ぶ Git&GitHub 入門
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック