インジェクション(注入)攻撃は,Web アプリケーションが入力された文字列をそのまま命令の一部として組み立てる弱点を突き, 攻撃者の命令を実行させる攻撃です。 データベースへの命令を書き換える SQL インジェクションと,OS のコマンドを実行させる OS コマンドインジェクションが代表です。 情報処理安全確保支援士の午前Ⅱを中心に出ます。
SQL インジェクション
たとえば,入力された利用者 ID を文字列としてつなげて SQL 文を作るアプリケーションに, ID として「' OR '1'='1」のような文字列を入れると,条件が常に成り立つ SQL 文ができあがり,ほかの人のデータまで読み出されてしまいます。
| 対策の種類 | 内容 |
|---|---|
| 実装での対策(根本) | SQL 文の組立てにプレースホルダ(バインド機構)を使う。SQL 文の形を先に確定させ,入力は後から値としてだけ当てはめるので,入力が命令として解釈されない |
| 実装での対策(補助) | 入力の中の,SQL で特別な意味をもつ文字をエスケープする |
| 実装以外の対策 | アプリケーションが使うデータベースのアカウントの権限を必要最小限にする。攻撃されても被害を小さくできる |
OS コマンドインジェクションとディレクトリトラバーサル
- OS コマンドインジェクション:入力した文字列が,Perl の system 関数や PHP の exec 関数のような外部のプログラムを呼び出す関数に渡されることを利用して, サーバ上で任意の OS コマンドを実行させる。根本的な対策はシェルを起動できる言語機能を使わないこと
- ディレクトリトラバーサル:ファイル名を入力させるアプリケーションに「../」のような上位のディレクトリを示す文字列を入れ, 本来見せないはずのファイルを読み出させる
いずれも,入力を「データ」としてだけ扱い,「命令」や「パス」の一部として解釈させないことが対策の軸です。 XSS(スクリプトの埋込み)も同じ考え方で,出力するときのエスケープが対策になります。
試験での問われ方
当サイトが収録している午前の問題のうち,SQL インジェクション・OS コマンドインジェクション・ディレクトリトラバーサルなどの語が出てくるのは37問です。 6割あまりが情報処理安全確保支援士の午前Ⅱです。型ごとに数えると次のとおりです。
- SQL インジェクションの対策(11問)。実装での対策と実装以外の対策の組(8問)では, 「実装における対策:プレースホルダを利用する。実装以外の対策:Web アプリケーションプログラムが利用するデータベースのアカウントがもつデータベースアクセス権限を必要最小限にする」 のような組が正解です(古い問題ではプレースホルダが「バインド機構」)。
- OS コマンドインジェクション(8問)。PHP の exec 関数などに渡されることを利用する攻撃の名前(7問)と, 対策(「シェルを起動できる言語機能を利用した実装を避ける」)です。
- 攻撃と対策の組合せ(6問)。「攻撃:SQL インジェクション,対策:SQL 文の組立てに静的プレースホルダを使用する」などです。
- そのほかの攻撃(5問)。Web サーバのログに残った HTTP リクエストから攻撃を推測する問題(3問)と,ディレクトリトラバーサルの説明(2問)です。
- このほか,DNS のカミンスキー攻撃の対策(3問)などの選択肢に出てきます。
出題された過去問(37問)
リンク先の年度ページで,問題と解説を読めます。
午前Ⅰ(高度試験 共通)(6問)
- 令和7年度 春期 問14Web アプリケーションソフトウェアの開発における OS コマンドインジェクション対策はどれか。
- 平成27年度 春期 問15ディレクトリトラバーサル攻撃はどれか。
- 平成26年度 秋期 問14Web アプリケーションにおけるセキュリティ上の脅威と対策の適切な組合せはどれか。
- 平成26年度 春期 問13安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- 平成24年度 秋期 問15安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- 平成22年度 春期 問15SQL インジェクションの説明はどれか。
情報処理安全確保支援士 午前Ⅱ(24問)
- 令和7年度 春期 問4DNS に対するカミンスキー攻撃への対策はどれか。
- 令和5年度 秋期 問1Web アプリケーションソフトウェアの脆弱性を悪用する攻撃手法のうち,入力した文字列が PHP …
- 令和5年度 春期 問5DNS に対するカミンスキー攻撃(Kaminsky's attack)への対策はどれか。
- 令和5年度 春期 問17SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,W…
- 令和4年度 春期 問1Web サーバのログを分析したところ,Web サーバへの攻撃と思われる HTTP リクエストヘッ…
- 令和3年度 春期 問12安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- 令和2年度 10月 問1Web サーバのログを分析したところ,Web サーバへの攻撃と思われる HTTP リクエストヘッ…
- 令和元年度 秋期 問14Web サイトにおいて,全ての Web ページを TLS で保護するよう設定する常時 SSL/T…
- 令和元年度 秋期 問17SQL インジェクション対策について,Web アプリケーションプログラムの実装における対策と,W…
- 平成30年度 秋期 問7UDP の性質を悪用した DDoS 攻撃に該当するものはどれか。
- 平成30年度 秋期 問13Web アプリケーションの脆弱性を悪用する攻撃手法のうち,Web ページ上で入力した文字列が P…
- 平成30年度 春期 問2Web サーバのログを分析したところ,Web サーバへの攻撃と思われる HTTP リクエストヘッ…
- 平成30年度 春期 問17SQL インジェクション対策について,Web アプリケーションの実装における対策と,Web アプ…
- 平成29年度 秋期 問6DNS に対するカミンスキー攻撃(Kaminsky's attack)への対策はどれか。
- 平成29年度 春期 問12Web アプリケーションの脆弱性を悪用する攻撃手法のうち,Web ページ上で入力した文字列が P…
- 平成28年度 秋期 問17SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプ…
- 平成27年度 春期 問17SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプ…
- 平成26年度 春期 問15Web アプリケーションの脆弱性を悪用する攻撃手法のうち,Perl の system 関数や P…
- 平成25年度 秋期 問15SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプ…
- 平成25年度 秋期 問16ディレクトリトラバーサル攻撃はどれか。
- 平成24年度 春期 問16SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプ…
- 平成23年度 秋期 問16Web アプリケーションの脆弱性を悪用する攻撃手法のうち,Perl の system 関数や P…
- 平成22年度 秋期 問8SQL インジェクション攻撃を防ぐ方法はどれか。
- 平成21年度 秋期 問14SQL インジェクション対策について,Web アプリケーションの実装における対策と Web アプ…
システムアーキテクト 午前Ⅱ(3問)
- 平成30年度 秋期 問25Web アプリケーションにおけるセキュリティ上の脅威とその対策に関する記述のうち,適切なものはど…
- 平成28年度 秋期 問24安全な Web アプリケーションの作り方について,攻撃と対策の適切な組合せはどれか。
- 平成21年度 秋期 問4SQL インジェクション対策として実施するものはどれか。
ITストラテジスト 午前Ⅱ(2問)
- 令和7年度 春期 問23プログラムの排他制御の不備によって,プロセスやスレッドが共有リソースに同時アクセスした場合に想定…
- 令和6年度 春期 問24マルウェアが,その実行ファイルをターゲットのコンピュータのファイルシステム上に生成せずに,メモリ…
ネットワークスペシャリスト 午前Ⅱ(2問)
- 令和3年度 春期 問21Web アプリケーションソフトウェアの脆弱性を悪用する攻撃手法のうち,入力した文字列が Perl…
- 平成27年度 秋期 問20Web アプリケーションの脆弱性を悪用する攻撃手法のうち,Web ページ上で入力した文字列が P…