メインコンテンツへ
セキュリティ情報セキュリティ管理

バッファオーバーフロー攻撃への対策として、最も適切なものはどれか。

ア.ユーザから受け取った入力データの長さを検証し、バッファサイズを超える入力を拒否または切り捨てる正解
イ.パスワードをハッシュ関数でハッシュ化してデータベースに保存する
ウ.HTTPSを使用してクライアント・サーバ間の通信を暗号化する
エ.SQLクエリにパラメータバインディングを使用してSQLインジェクションを防ぐ

解説

バッファオーバーフローは「コップに無理やり水を注いで隣の回路まで水浸しにする攻撃」。対策は至ってシンプル——「コップより多い量は受け付けない」と入口で弾くことです。

なぜ ア が正解か

バッファオーバーフロー攻撃は、用意されたバッファサイズを超えるデータを書き込むことで隣接するメモリ領域を上書きし、任意コード実行や異常終了を引き起こす攻撃です。セキュアプログラミングの対策は①入力長の検証(入力サイズ≦バッファサイズかチェック)②サイズ安全な関数の使用(strcpyではなくstrncpy等)③スタックカナリア・ASLR等のOSレベル防御の活用です。

なぜ イ は間違いか

パスワードのハッシュ化はパスワード漏えい時の被害を限定する対策であり、バッファオーバーフローとは無関係です。

なぜ ウ は間違いか

HTTPSによる通信暗号化は盗聴・改ざん防止の対策です。バッファオーバーフローはメモリ上の問題であり、通信暗号化で防げるものではありません。

なぜ エ は間違いか

パラメータバインディングはSQLインジェクション対策です。バッファオーバーフローはSQLとは関係のないメモリ破壊攻撃であり、別の対策が必要です。

出典: AI生成問題(学習用)