Buffer Overflow
バッファオーバーフローとは、プログラムが固定長バッファへ保持可能な量を超えるデータを書き込み、隣接メモリを上書きして、クラッシュやコード実行を引き起こしうる現象である。
目的
C/C++ プログラムで最も一般的なセキュリティ欠陥であるメモリ安全性の脆弱性を理解し、防御する。
メカニズム
スタックやヒープのバッファへ割り当て長を超えるバイト数を書き込むと、隣接メモリ(リターンアドレスや他の変数)が上書きされる。攻撃者はリターンアドレスを書き換えてシェルコードへ jump させることができる。防御策は境界チェック、ASLR、スタックカナリア、DEP/NX である。
ユースケース
- C/C++ のセキュリティ監査
- エクスプロイトの分析
- メモリ安全性の確保