バッファオーバーフローとは?
ばっふぁおーばーふろー
バッファオーバーフローとは、プログラムが確保したメモリ領域を超えてデータを書き込んでしまうことで、誤作動や攻撃を引き起こす脆弱性です。
バッファオーバーフロー(buffer overflow)とは、プログラムが一時的なデータ保存領域(バッファ)に、その容量を超えるデータを書き込んでしまうことで発生するプログラムの不具合・セキュリティ脆弱性です。コンピュータセキュリティ分野において、長年にわたって最も深刻な脆弱性のひとつとされています。
通常、プログラムはメモリ上に一定サイズのバッファを確保してデータを読み書きします。しかし入力データのサイズチェックが不十分な場合、バッファをはみ出したデータが隣接するメモリ領域を上書きしてしまいます。これにより、プログラムの制御フロー(命令の実行順序)が書き換えられ、意図しないコードが実行される危険があります。
バッファオーバーフローが引き起こす問題は以下のとおりです。
- プログラムのクラッシュや異常終了
- 攻撃者が用意した悪意あるコード(シェルコードなど)の実行
- 管理者権限の奪取(権限昇格攻撃)
- サービス妨害(DoS攻撃)の発生
対策としては、入力値の長さ検証の徹底、境界チェック付きの安全な関数の使用(C言語のstrncpyなど)、スタックカナリア・ASLR(アドレス空間配置のランダム化)・DEP(データ実行防止)といったOSレベルの保護機能の活用が有効です。現代のコンパイラやOSの多くにこれらの防御機構が組み込まれていますが、レガシーシステムや組み込み機器では依然として脅威であり続けています。
使い方・例文
古いWebサーバーソフトに長すぎるURLを送り込むことでバッファオーバーフローを引き起こし、サーバーを乗っ取る攻撃が実際に発生したことがあります。
この用語をシェア
最終更新: