平成28年度 秋期37テクノロジ系

基本情報 平成28年度 秋期 問37:テクノロジ系に関する問題

SQLインジェクション攻撃の説明として, 適切ながものはどれか。

  • aWeb アプリケーションのデータ操作言語の呼出し方に不備がある場合に, 攻撃 者が悪意をもって構成した文字列を入力することによって, データベースのデー タの不正な取得, 改ざん及び削除をする攻撃正答
  • bWeb サイトに対して, 他のサイトを介して大量のパケットを送り付け, そのネ ットワークトラフィックを異常に高めてサービスを提供不能にする攻撃
  • c確保されているメモリ空間の下限又は上限を超えてデータの書込みと読出しを 行うことによって, プログラムを異常終了させたりデータエリアに挿入された不 正なコードを実行させたりする攻撃
  • d攻撃者が思を仕掛けた Web ページを利用者が閲覧し, 当該ページ内のリンクを クリックしたときに, 不正スクリプトを含む文字列が脆弱な Web サーバに送り込 まれ, レスポンスに埋め込まれた不正スクリプトの実行によって, 情報漏えいを もたらす攻撃
正答:AWeb アプリケーションのデータ操作言語の呼出し方に不備がある場合に, 攻撃 者が悪意をもって構成した文字列を入力することによって, データベースのデー タの不正な取得, 改ざん及び削除をする攻撃

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(応答時間で情報抽出)、ブール型SQLiUnion型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 CERTSAST(Static Application Security Testing)・DAST(Dynamic)・IAST・RASP等のセキュリティテストツールで多層的に検出。Shift LeftでDevSecOps文脈に統合。試験対策は主要脆弱性の識別+対策技術+セキュアSDLC理解で応用情報・情報処理安全確保支援士まで対応可能。

出典・引用について

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 秋期37/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

1
テクノロジ系
2
テクノロジ系
3
テクノロジ系
4
テクノロジ系
5
テクノロジ系

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビなら基本情報の過去問を解きながら学べます。