基本情報 平成28年度 秋期 問37:テクノロジ系に関する問題
SQLインジェクション攻撃の説明として, 適切ながものはどれか。
- aWeb アプリケーションのデータ操作言語の呼出し方に不備がある場合に, 攻撃 者が悪意をもって構成した文字列を入力することによって, データベースのデー タの不正な取得, 改ざん及び削除をする攻撃正答
- bWeb サイトに対して, 他のサイトを介して大量のパケットを送り付け, そのネ ットワークトラフィックを異常に高めてサービスを提供不能にする攻撃
- c確保されているメモリ空間の下限又は上限を超えてデータの書込みと読出しを 行うことによって, プログラムを異常終了させたりデータエリアに挿入された不 正なコードを実行させたりする攻撃
- d攻撃者が思を仕掛けた Web ページを利用者が閲覧し, 当該ページ内のリンクを クリックしたときに, 不正スクリプトを含む文字列が脆弱な Web サーバに送り込 まれ, レスポンスに埋め込まれた不正スクリプトの実行によって, 情報漏えいを もたらす攻撃
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「悪意の文字列を入力してDBを不正操作する攻撃」 です。
SQLインジェクション(SQLi)は「ログインフォーム等にSQL命令を混ぜ込んでDBを直接操作」する攻撃。
たとえばパスワード欄に `' OR '1'='1` と入れると、SQLが「常に真」になってログインできちゃう、みたいな。
👉 覚え方:「SQLを差し込む(inject)」。
ほかの選択肢:b DDoS/c バッファオーバフロー/d クロスサイトスクリプティング(XSS)。「DB操作」「文字列入力」がSQLiの合図。
なぜこれが正解か
正解は a。SQLインジェクション(SQL Injection)は、Webアプリケーションが利用者入力を適切にエスケープせずSQL文を組み立てる脆弱性を悪用し、攻撃者が悪意のSQL文断片を入力することで意図しないクエリを実行させ、データ取得・改ざん・削除を行う攻撃。古典的かつ重大なWeb脆弱性でOWASP Top 10常連。
各選択肢の解説
- a 悪意の文字列でDB操作:正解。SQLインジェクション。
- b 他サイト経由で大量パケット→サービス停止:DDoS(Distributed Denial of Service)攻撃。
- c メモリ空間の上限/下限超過:バッファオーバフロー(CWE-120)。
- d Webページのリンクから不正スクリプト実行:クロスサイトスクリプティング(XSS)。
覚え方・ひっかけ注意
主要Web攻撃の識別:
- SQLi:DB操作(入力→SQL文挿入)
- XSS:他者のブラウザでスクリプト実行(入力→HTML/JS挿入)
- CSRF:他サイトから意図しないリクエスト送信
- DDoS:大量リクエストでサービス停止
- バッファオーバフロー:メモリ破壊で任意コード実行
- ディレクトリトラバーサル:../でファイルシステム横断
対策:プリペアドステートメント/パラメータ化クエリでSQL文と入力値を分離するのがSQLi完全防御策。エスケープよりプレースホルダ使用が確実。
理論的背景
SQLインジェクションはWeb脆弱性の代表格でCWE-89/OWASP Top 10 A03:2021 - Injectionに分類。原因は信頼できない入力をクエリ文字列に連結する実装。1998年Phrack誌で初公開、20年以上経過しても新規発見が続く根深い問題。ブラインドSQLi(出力なし)、タイムベースSQLi(応答時間で情報抽出)、ブール型SQLi、Union型SQLi等の派生形式。
実務での使われ方
対策技術:
- プリペアドステートメント/パラメータ化クエリ:最も確実。SQL文と値を分離
```
PreparedStatement ps = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
ps.setInt(1, userId);
```
- ORM活用:SQLAlchemy・Hibernate・ActiveRecordは内部でパラメータ化
- ストアドプロシージャ:パラメータ化が前提
- 入力検証(whitelist):許可文字のみ通過
- エスケープ処理:DB別escape関数(推奨度低、抜けやすい)
- 最小権限原則:DB接続ユーザを必要最小権限に
- WAF(Web Application Firewall):パターンベース検出(多層防御)
- DBログ・監査:異常クエリ検知
試験での位置づけ
セキュリティ分野の最頻出テーマ。基本情報・応用情報では攻撃識別、情報処理安全確保支援士ではSQLiバリエーション・対策技術・WAF設定・セキュアコーディング標準(CERT・OWASP ASVS)まで踏み込む。
選択肢の発展補足
主要Webアプリ脆弱性(OWASP Top 10 2021):
1. A01: Broken Access Control:アクセス制御不備
2. A02: Cryptographic Failures:暗号化失敗
3. A03: Injection:SQLi・コマンドインジェクション等
4. A04: Insecure Design:設計上の脆弱性
5. A05: Security Misconfiguration:設定ミス
6. A06: Vulnerable Components:脆弱なコンポーネント
7. A07: Identification/Authentication Failures:認証失敗
8. A08: Software/Data Integrity Failures:整合性失敗
9. A09: Security Logging Failures:ログ不備
10. A10: Server-Side Request Forgery:SSRF
セキュアコーディング指針:OWASP Cheat Sheet Series・OWASP ASVS・CERT Coding Standards・SEI CERT。SAST(Static Application Security Testing)・DAST(Dynamic)・IAST・RASP等のセキュリティテストツールで多層的に検出。Shift LeftでDevSecOps文脈に統合。試験対策は主要脆弱性の識別+対策技術+セキュアSDLC理解で応用情報・情報処理安全確保支援士まで対応可能。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 秋期 問37/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。