問題
問79
Webアプリケーションにおける脆弱性の一つで、悪意のあるSQL文がユーザからの入力データとして渡され、データベースが意図しない操作を実行してしまう攻撃はどれか。
- SQLインジェクション
- クロスサイトスクリプティング
- ディレクトリトラバーサル
- バッファオーバーフロー
正解
正解は「ア」です。
解説
正解は「ア」のSQLインジェクションです。SQLインジェクションは、Webアプリケーションの脆弱性を利用する代表的な攻撃手法の一つで、攻撃者が入力フォームなどに、データベースへの命令文であるSQLの一部を「注入(injection)」することで、データベースを不正に操作します。
例えば、Webサイトのログインフォームで、パスワード入力欄に `’ OR ‘A’=’A` のような文字列を入力すると、アプリケーションが想定していないSQL文が組み立てられてしまい、認証を不正に突破されることがあります。さらに、データベース内の情報を盗み出したり、データを改ざん・削除したりすることも可能です。アプリケーション側でユーザからの入力値を適切にチェック(サニタイジング)していない場合にこの攻撃が成立します。問題文の「悪意のあるSQL文が」「データベースが意図しない操作を実行」という説明は、まさにSQLインジェクション攻撃の手口を指しています。
イ(クロスサイトスクリプティング):
攻撃者がWebサイトに悪意のあるスクリプトを埋め込み、それを閲覧した他のユーザのブラウザ上で実行させる攻撃です。
ウ(ディレクトリトラバーサル):
ファイルパスを不正に操作することで、公開が意図されていないサーバ上のファイルにアクセスする攻撃です。
エ(バッファオーバーフロー):
プログラムが用意したメモリ領域(バッファ)を超えるデータを送りつけ、メモリを溢れさせて誤作動や不正なコードの実行を狙う攻撃です。
解法のポイント
Webアプリケーションに対する攻撃手法は頻出分野です。それぞれの攻撃が「何を」「どこに」対して行われるのかを明確に区別して覚えることが重要です。
- SQLインジェクション:SQL文をデータベースに注入する
- クロスサイトスクリプティング:スクリプトをユーザのブラウザで実行させる
- ディレクトリトラバーサル:不正なパスでサーバのファイルにアクセスする
このように、攻撃のキーワードと対象をセットで覚えることで、問題文から正しい選択肢を導きやすくなります。
用語補足
SQLインジェクション:
データベースへの命令(SQL)を不正に注入する攻撃です。自動販売機のお金投入口に偽の命令を書いたコインを入れて、商品や釣りを不正にだまし取るようなイメージです。
脆弱性(ぜいじゃくせい):
プログラムの不具合や設計上のミスが原因で発生する、情報セキュリティ上の弱点のことです。家の鍵のかけ忘れや、窓の立て付けが悪いといったセキュリティホールのようなものです。
SQL:
リレーショナルデータベースを操作するための言語です。データベースに対する「命令書」のようなもので、データの検索や追加、更新、削除などを行います。
クロスサイトスクリプティング (XSS):
Webサイトを介して、利用者のブラウザで悪意のあるスクリプトを実行させる攻撃です。公園の伝言板に、見た人を騙すような内容を書き込む行為に似ています。


