バッファーオーバーフロー
こんにちは、一生と言います。
はじめに
Webアプリケーションなどで
入力フォーム
ってよくありますよね。
入力フォームを使用したアプリを開発するときに、
こっちでデータをちゃんと管理すればあとは問題ない
と思っていませんか?
そんなことありません!
悪意ある第三者は入力フォームからも攻撃することがあります。
その代表例が、
バッファーオーバーフロー
です。
今回はそんな、
バッファーオーバーフロー
について紹介させていただきます。
この記事では主に、
を参考にさせていただきました。
Webアプリには入力フォームはほぼほぼあります。
そのため、ちゃんとバッファーオーバーフローについても対策をしましょう。
それではよろしくお願いします。
こんな人にオススメ!!
- アプリ開発をする人
- セキュリティに関して任させた人
入力フォームって何をしているの?
まず最初に入力フォームについて学びましょう。
入力フォームとは、
ユーザーの情報をサーバー側が受け取る時に使用するフォーム
です。
入力してもらったデータを受け取ります。
その時、サーバー側はその情報を、
コンピュータのメモリ上に確保されたバッファに書き込む
出典:「この一冊で全部わかるセキュリティの基本」より
ようになっています。
元から用意された場所に保存することで
アプリ内でそのデータを使用することができます。
どうやって悪さをするの?
今の流れを見て、
大事なのはそのデータをどう管理するかだけ
他の人に教えないから大丈夫
と思いますよね。
そんなことありません
先程の説明のように、
ユーザーからのデータを保存する場所はメモリ上に確保された領域
です。
確保された領域
言い換えると、
元から空けてある箇所
ということです。
空いていないと保存できませんよね。
そして元から空けてあるということは、
その領域には限界がある
ということです。
当然空いている領域以上のデータは保存できません。
その場合、その超えた分はどうなるでしょうか?
実は、
サイズより大きい分のデータは隣接する領域に上書きされる
出典:「この一冊で全部わかるセキュリティの基本」より
ことになります。
つまり、
隣にある空いていなかった領域が消されて入力データが入る
ということです。
その部分に攻撃者が実行したいプログラムを入れることで、実行できてしまうということです。
どんな危険があるの?
バッファオーバーフローで危険なことは、
そのプログラムを乗ってられてしまう
かもしれないことです。
バッファオーバーフローは、ユーザー側がそのアプリで自分のプログラムを実行する攻撃です。
そのため、
- 任意のプログラムを実行できる
- 管理者権限を取られる
ことができる可能性もできてしまいます。
入力フォームがあるということは、そのサーバーには他の方のデータも保存されていれるかもしれません。
バッファオーバーフローをすることで悪意ある第三者が管理者権限を持ってしまったら、そのデータも危険になってしまいます。
管理者権限を取られたら結構なことができてしまいます。
どんな対策ができる?
そのサービスを使う側
ユーザー側でのバッファオーバーフローの対策はほとんどありません。
主にサーバー側への攻撃ですからね。
そのため、
- セキュリティソフトを入れる
- アプリのバージョンなどをちゃんと最新にする
ようにして脆弱性を露呈しないようにしましょう。
サービスを提供する側
サーバー側でのバッファオーバーフローの対策としてよく上がるのは、
- 入力されたデータのサイズチェックをする
- 隣接する領域でのプログラム実行を禁止する
ことです。
入力されたデータのサイズチェックをする
先ほども書きましたが、バッファオーバーフローは、
バッファから溢れたことが原因で起きる攻撃
です。
そのため、
溢れた場合は実行できないようにすれば良い
のです。
よって、
実行前に入力されたデータのサイズチェックをする
ようにしましょう。
保存しきれない量なら実行しない
とすれば問題ないですね。
隣接する領域でのプログラム実行を禁止する
また、バッファオーバーフローの原因の一つは、
溢れた部分のデータも実行でいてしまうこと
にあります。
そのため、
もともと空けておいた部分以外でのプログラム実行を禁止する
ようにしましょう。
その部分で起きるプログラムよって攻撃されるなら、
そこでの実行を禁止するようにしましょう。
終わりに
今回は、
バッファオーバーフローについて
についてを紹介させていただきました。
バッファオーバーフローとは、
ソフトウェアへの入力を格納する領域をあふれさせることで、
システムに意図しない挙動をさせる攻撃
出典:「この一冊で全部わかるセキュリティの基本」より
です。
これをすることで、
そのアプリなどを乗っ取られてしまう危険が出てくる
ことになります。
入力フォームはデータ管理だけちゃんとしていれば問題ない
そう思っていませんか?
当然管理は大事です。
しかし、
そのデータを入力してもらうフォームにも気を配る
ようにしましょう。
入力できるということは、
悪意ある第三者も何かした送ることができる
ということです。
これらの本では、他にいろいろなセキュリティのことが書かれています。
この記事を読んで興味を持った方は、ぜひ読んでみてください。
奥付
本は、人の知識の宝庫です。
一冊の本を全て取り入れるのは大変です。
そのため、何か一つでも自分に取り入れてみましょう。
それだけで、自分の成長が見え、とても楽しいですよ。
最後まで読んでいただき、ありがとうございました。
コメント