バッファオーバーフロー対策
更新日:
用語解説
バッファオーバーフローは、確保したメモリ領域の境界を超えてデータを書き込み、隣接するデータ、管理情報、制御情報を破壊する脆弱性・現象です。
■ 試験で押さえるポイント
スタック上とヒープ上のバッファで発生し、異常終了によるサービス妨害だけでなく、条件によって制御フローを奪われ任意コード実行へつながります。
入力データの長さと終端、整数計算による確保サイズ、コピー先容量を検証し、境界検査のある言語・コンテナ・安全なAPIを優先します。
スタックカナリア、ASLR、実行防止(DEP/NX)、制御フロー保護などは悪用を難しくする多層防御であり、境界外書込みそのものを修正する代替ではありません。
コンパイラ警告、静的解析、ファジング、コードレビューで早期に発見し、プロセスを最小権限・分離環境で動かして悪用時の影響を限定します。
■ 過去問での着眼点
固定長領域を超える書込みによるメモリ破壊です。単なる入力値の長さ超過ではなく、境界検査不足がクラッシュやコード実行を招きます。
例: 受信長を確認せず256バイトの配列へコピーする処理は危険です。実際の配列容量と受信長を比較し、超過を拒否する境界安全な処理へ直します。