バッファオーバーフロー
入れ過ぎちゃったよ
あふれちゃったよ
簡単に書くよ
バッファオーバーフロー(英:buffer overflow)とは
「これくらい入るかな~」と思って確保していた領域よりもたくさん入れちゃって、入りきらなかった状態のこと
です。
詳しく書くよ
「バッファ」+「オーバーフロー」で「バッファオーバーフロー」です。
バッファは「データを一時的に溜めておく場所」程度に解釈してください。
オーバーフローは「いやんっ、あふれちゃった(*ノノ)」な状態です。
以上を踏まえて
バッファ(データを溜めておく場所)がオーバーフローした(あふれた)状態
が「バッファオーバーフロー」です。
それでは一体何があふれたのか?
データです。
プログラミングでは変数を扱います。
変数は「データを入れておく箱」です。
中にデータ(値)を入れます。
この変数ですが、実際にはメモリ上に場所を確保します。
メモリの上に「ここからここまで、この変数が使うから」と値を入れておくための領域を確保するのです。
よく分からない方は花見の場所取りをイメージしてください。
場所を取るために下に敷いたブルーシートが変数です。
その上に座る上司や先輩、花見の参加者が値です。
花見の参加者が多くなると、ブルーシートに座りきれません。
ブルーシートの外にはみ出してしまうでしょう。
そうすると、隣で花見をしている人たちの迷惑になってしまうかもしれませんね。
コンピュータの世界も同じです。
例えば、3文字まで入る変数をメモリ上に確保したとしましょう。
そこに4文字以上入れると、入りきらない分があふれてしまいます。
もし隣の領域を他の変数が使っていたら、どうでしょう?
他の変数の値を書き換えてしまいますね。
これは本来想定していない事態です。
困ったことになる可能性が高いでしょう。
このような
元々確保していた領域よりも大きい値を入れて、あふれちゃった状態
がバッファオーバーフローです。
また、意図的にバッファオーバーフローを発生させることでプログラムに誤作動を起こさせようとする悪いことを「バッファオーバーフロー攻撃」と言います。
この「バッファオーバーフロー攻撃」を意図して「バッファオーバーフロー」と表現している場合も あります。
状態を指しているのか攻撃を指しているのかは文脈から判断してください。
一言でまとめるよ
まぁ「バッファオーバーフロー」って単語が出てきたら「確保していた領域よりもたくさん入れてあふれた状態、あるいは、それを利用した攻撃なんだな~」と お考えください。
おまけ
■訳してみるよ
「buffer(バッファ)」の意味は「緩衝器」とか「緩衝物」とか「緩衝装置」とか「緩衝材」とかです。
「overflow(オーバーフロー)」の意味は「あふれる」とか「氾濫する」とかです。
何となく くっつけると
緩衝物からあふれる
となります。






