QUIZ 15分

ストーリー

佐藤CTO
脆弱性の種類、診断手法、APIセキュリティ、修正と報告 — Step 4の全範囲を確認しよう

佐藤CTOがチェックリストを取り出しました。

佐藤CTO
実際の診断業務に入る前に、知識の穴がないか確認だ。8問中7問以上で合格だ

Q1. OWASP Top 10 (2021) で最も深刻度が高いカテゴリとして位置づけられているのはどれか?

A. インジェクション(SQLインジェクション等) B. アクセス制御の不備(Broken Access Control) C. 暗号化の失敗(Cryptographic Failures) D. セキュリティの設定ミス(Security Misconfiguration)

答えを見る

正解: B

OWASP Top 10 (2021) では、**A01: Broken Access Control(アクセス制御の不備)**が1位にランクされています。2017年版では5位でしたが、発生頻度の増加により1位に上昇しました。具体的には以下が含まれます。

  • 他ユーザーのリソースへの不正アクセス(BOLA/IDOR)
  • 権限昇格(一般ユーザーが管理者操作を実行)
  • URLやパラメータの操作によるアクセス制御の迂回
  • CORSの設定ミスによる不正なクロスオリジンアクセス

インジェクションは2017年の1位から2021年には3位(A03)に移動しています。


Q2. XSS(クロスサイトスクリプティング)攻撃の3つの主要タイプとして正しくないのはどれか?

A. Stored XSS(格納型) B. Reflected XSS(反射型) C. Encrypted XSS(暗号型) D. DOM-based XSS(DOM操作型)

答えを見る

正解: C

XSSの3つの主要タイプは以下の通りです。「Encrypted XSS(暗号型)」は存在しません。

タイプ説明特徴
Stored XSS悪意のあるスクリプトがサーバーに保存されるDBに保存され、ページ表示時に実行。掲示板、コメント欄等
Reflected XSSスクリプトがリクエストに含まれ、レスポンスに反映されるURLパラメータ経由。被害者がリンクをクリックする必要がある
DOM-based XSSクライアントサイドのJavaScriptがDOMを操作する際に発生サーバーを経由せず、ブラウザ内で完結。innerHTML等が原因

対策にはコンテキストに応じたエスケープ処理、CSP(Content Security Policy)ヘッダーの設定、フレームワークの自動エスケープ機能の活用が重要です。


Q3. CSRF(クロスサイトリクエストフォージェリ)攻撃の防御策として最も効果的なのはどれか?

A. SQLクエリのパラメータ化 B. CSRFトークンの使用とSameSite Cookie属性の設定 C. 入力値の文字数制限 D. HTTPSの導入

答えを見る

正解: B

CSRFはユーザーの認証済みセッションを悪用して、意図しないリクエストを送信させる攻撃です。効果的な防御策は以下の組み合わせです。

  1. CSRFトークン(Synchronizer Token Pattern)

    • サーバーがランダムなトークンを生成し、フォームに埋め込む
    • リクエスト時にトークンを検証し、正規のフォームからの送信か確認
  2. SameSite Cookie属性

    • SameSite=Lax: クロスサイトのGETリクエストのみCookie送信を許可
    • SameSite=Strict: クロスサイトリクエストではCookieを一切送信しない
  3. Double Submit Cookie Pattern

    • Cookieとリクエストヘッダーでトークンを二重に送信

Aはsql injection対策、CはXSSやバッファオーバーフロー対策、DはMITM対策であり、CSRFには直接効果がありません。


Q4. 以下のSQLインジェクション攻撃パターンのうち、Time-based Blind SQLインジェクションに該当するのはどれか?

A. ' UNION SELECT username, password FROM users -- B. ' AND 1=CAST((SELECT version()) AS int) -- C. ' AND (SELECT CASE WHEN (1=1) THEN pg_sleep(5) ELSE pg_sleep(0) END) -- D. ' OR '1'='1' --

答えを見る

正解: C

SQLインジェクションの主な攻撃パターンは以下の通りです。

パターン特徴該当する選択肢
UNION-basedUNION句でクエリを結合し、別テーブルのデータを取得A
Error-based意図的にエラーを発生させ、エラーメッセージから情報を取得B
Time-based Blindpg_sleep()等で応答遅延を発生させ、条件の真偽を判定C
Boolean-based Blind条件式の真偽でレスポンスの違いを観察D(の発展形)

Time-based Blind SQLiでは、データベースの応答時間の差を利用して情報を1ビットずつ抽出します。pg_sleep(5)(PostgreSQL)やSLEEP(5)(MySQL)、WAITFOR DELAY(SQL Server)が使用されます。レスポンス内容が変わらない場合でも攻撃可能なため、検出が困難です。


Q5. OWASP API Security Top 10 (2023) における「BOLA(Broken Object Level Authorization)」の説明として正しいのはどれか?

A. APIエンドポイントの認証が欠如している B. APIリクエストのレート制限が設定されていない C. APIがオブジェクトIDを推測可能な形で公開し、他ユーザーのオブジェクトにアクセスできる D. APIのレスポンスに機密情報が含まれている

答えを見る

正解: C

**BOLA(Broken Object Level Authorization)**は、OWASP API Security Top 10で最も深刻な脆弱性(API1

)です。IDOR(Insecure Direct Object Reference)とも呼ばれます。

# 正常なリクエスト(自分の注文を取得)
GET /api/v1/orders/12345
Authorization: Bearer <user_a_token>

# BOLAを悪用(他ユーザーの注文を取得)
GET /api/v1/orders/12346    ← IDを変更するだけ
Authorization: Bearer <user_a_token>

攻撃者はオブジェクトIDを推測・列挙することで、他ユーザーのデータにアクセスします。防御策は以下の通りです。

  • オブジェクトレベルの認可チェック: 各リクエストでオブジェクトの所有者を検証
  • UUIDの使用: 連番IDではなくUUIDv4を使用して推測を困難にする
  • 認可ミドルウェア: 全APIエンドポイントに一貫した認可チェックを適用

Q6. ペネトレーションテストにおける「ブラックボックステスト」と「ホワイトボックステスト」の違いとして正しいのはどれか?

A. ブラックボックスは内部情報あり、ホワイトボックスは外部情報のみ B. ブラックボックスはツールのみ使用、ホワイトボックスは手動テストのみ C. ブラックボックスは事前情報なしで実施し、ホワイトボックスはソースコードやアーキテクチャ情報を基に実施する D. ブラックボックスはWebアプリ向け、ホワイトボックスはネットワーク向け

答えを見る

正解: C

ペネトレーションテストのアプローチには3つのタイプがあります。

タイプ事前情報特徴適用場面
ブラックボックスなし外部攻撃者の視点でテスト。URLと基本機能のみ知っている状態外部脅威のシミュレーション
グレーボックス部分的認証情報やAPI仕様等の一部情報を提供最もコスト効率が高い
ホワイトボックス完全ソースコード、アーキテクチャ図、DB設計等を全て提供網羅的な脆弱性発見

ブラックボックスは実際の攻撃者を模倣しますが、カバレッジが低く時間がかかります。ホワイトボックスは網羅性が高いですが、コストが高くなります。実務ではグレーボックスが最もバランスが良いとされています。


Q7. APIセキュリティにおいて、GraphQL特有のセキュリティリスクとして最も注意すべきなのはどれか?

A. CORSの設定ミス B. クエリの深さ・複雑さによるDoS攻撃(Query Depth Attack) C. Basic認証の使用 D. セッションの固定化

答えを見る

正解: B

GraphQL特有のセキュリティリスクとして、クエリの深さ・複雑さによるDoS攻撃が最も重要です。

# Query Depth Attack の例(ネストの深いクエリ)
query {
  user(id: 1) {
    friends {
      friends {
        friends {
          friends {
            friends {
              # 無限にネスト可能 → サーバーリソース枯渇
              name
            }
          }
        }
      }
    }
  }
}

GraphQL特有のリスクと対策は以下の通りです。

リスク説明対策
Query Depth Attack深くネストしたクエリでサーバー負荷クエリ深度制限(maxDepth)
Query Complexity Attackコストの高いフィールドの大量取得クエリコスト分析 + 上限設定
Batching Attack1リクエストに大量のクエリを含めるバッチサイズ制限
Introspection Leakスキーマ全体が露出本番でIntrospectionを無効化
Field Suggestionエラーメッセージからフィールド名が推測可能フィールドサジェスションの無効化

A、C、Dは GraphQL に限らず一般的なWebアプリケーションのリスクです。


Q8. CVSSv3.1スコアが9.8の脆弱性のBase Metricsとして最も適切な組み合わせはどれか?

A. AV

/AC
/PR
/UI
/S
/C
/I
/A
B. AV
/AC
/PR
/UI
/S
/C
/I
/A
C. AV
/AC
/PR
/UI
/S
/C
/I
/A
D. AV
/AC
/PR
/UI
/S
/C
/I
/A

答えを見る

正解: A

CVSSv3.1スコア9.8はCriticalレベルの脆弱性です。選択肢Aのベクター文字列を解析すると以下の通りです。

指標意味
AV
Networkネットワーク経由で攻撃可能
AC
Low攻撃の複雑さが低い
PR
None権限不要
UI
Noneユーザー操作不要
S
Unchangedスコープ変更なし
C
High機密性への影響: 高
I
High完全性への影響: 高
A
High可用性への影響: 高

これは典型的な認証不要でリモートから悪用可能な脆弱性(例: 未認証のSQLインジェクション、リモートコード実行)のプロファイルです。

他の選択肢のスコア目安:

  • B: 約2.0(物理的アクセス不要だが複雑で影響が限定的)
  • C: 約6.1(Reflected XSS等)
  • D: 約2.4(物理的アクセスが必要な脆弱性)

合格基準

  • 合格スコア: 80%(8問中7問以上正解)
  • 不合格の場合は、Step 4の各レッスンを復習してください

「脆弱性診断は知識と実践の両輪だ。次のStep 5では、セキュリティを組織の仕組みとして定着させる方法を学ぶ」 — 佐藤CTO


推定読了時間: 15分