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

バッファオーバフロー

pointこの用語のポイント

point入れ過ぎちゃったよ

pointあふれちゃったよ

スポンサーリンク

簡単に書くよ

バッファオーバフロー(英:buffer overflow)とは

「これくらい入るかな~」と思って確保していた領域よりもたくさん入れちゃって、入りきらなかった状態のこと
です。


image piyo

詳しく書くよ

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

バッファ」+「オーバフロー」で「バッファオーバフロー」です。

バッファオーバフロー

バッファは「データを一時的に溜めておく場所」程度に解釈してください。
オーバフローは「いやんっ、あふれちゃった(*ノノ)」な状態です。

以上を踏まえて

バッファ(データを溜めておく場所)がオーバフローした(あふれた)状態

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

それでは一体何があふれたのか?
データです。

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

バッファオーバフロー2

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

バッファオーバフロー3

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

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

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

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

バッファオーバフロー4

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

バッファオーバフロー5

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

バッファオーバフロー6

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

バッファオーバフロー7

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

このような

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

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

また、意図的にバッファオーバフローを発生させることでプログラムに誤作動を起こさせようとする悪いことを「バッファオーバフロー攻撃」と言います。

バッファオーバフロー8

この「バッファオーバフロー攻撃」を意図して「バッファオーバフロー」と表現している場合も あります。

状態を指しているのか攻撃を指しているのかは文脈から判断してください。


image piyo2

一言でまとめるよ

まぁ「バッファオーバフロー」って単語が出てきたら「確保していた領域よりもたくさん入れてあふれた状態、あるいは、それを利用した攻撃なんだな~」と お考えください。

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

おまけ

■訳してみるよ

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

緩衝物からあふれる

となります。




書籍画像
わわわ説明術コラム
宣伝だよ
エンジニア育成現場の「失敗」集めてみた。 42の失敗事例で学ぶマネジメントのうまい進めかた
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本
つくって、壊して、直して学ぶ Git&GitHub 入門