戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報処理安全確保支援士 2024年 春期 午後 問01


APIセキュリティに関する次の記述を読んで、設問に答えよ。

   G社は、ヘルスケアサービス新興企業である。利用者が食事、体重などを入力して、そのデータを管理したり、健康リスクの判定や食事メニューのアドバイスを受けたりできるサービス(以下、サービスYという)を計画している。具体的には、クラウドサービス上にサービスY用のシステム(以下、Sシステムという)を構築して、G社が既に開発しているスマートフォン専用アプリケーションプログラム(以下、G社スマホアプリという)からアクセスする。Sシステムの要件を図1に示す。   情報処理安全確保支援士試験(令和6年度 午後 問01 図01)
 G社は、Sシステムの構築をITベンダーF社に委託した。F社との協議の結果、クラウドサービスプロバイダE社のクラウドサービス上にSシステムを構築する方針にした。   〔APIの設計〕  Sシステムには、将来的には他社が提供するスマートフォン専用アプリケーションプログラムからもアクセスすることを想定し、RESTful API方式のAPI(以下、SシステムのAPIをS-APIという)を用意する。RESTful APIの設計原則の一つにセッション管理を行わないという性質がある。この性質をaという。  E社が提供するクラウドサービスのサービス一覧を表1に、サービスYのシステム構成を図2に、S-API呼出し時の動作概要を図3に、S-APIの仕様を表2に、Sシステムの仕様を図4に、それぞれ示す。
情報処理安全確保支援士試験(令和6年度 午後 問01 表01)
情報処理安全確保支援士試験(令和6年度 午後 問01 図02)
情報処理安全確保支援士試験(令和6年度 午後 問01 図03)
情報処理安全確保支援士試験(令和6年度 午後 問01 図04)
〔脆弱性診断の結果〕  Sシステムの構築が進み全ての機能を動作確認できたので、G社でSシステムのセキュリティを担当するRさんが、セキュリティベンダーであるU社に脆弱性診断(以下、診断という)を依頼した。U社による診断レポートを表3に示す。
 表3の項番1について、U社のセキュリティコンサルタントで情報処理安全確保支援士(登録セキスペ)のZ氏は、次のように説明した。  ・認証APIで、利用者ID“user01”での認証が成功した後、診断中に発行されたJWTのデコード結果は、表4のとおりであった。
情報処理安全確保支援士試験(令和6年度 午後 問01 表04)
 ・ここで、表4中の“RS256”の代わりに“NONE”を指定し、“user01”を他の利用者IDに改ざんしたJWTを送信したところ、改ざんしたJWTの検証が成功し、他の利用者へのなりすましができた。
 項番2~4についても説明を受けた後、G社は、表3の脆弱性を分析し、対策について、F社、U社を交えて検討した。  Rさんが取りまとめた脆弱性の分析と対策案を表5に示す。
 全ての対応が完了した後、試用モニターを対象に、サービスYの提供を開始した。   〔セキュリティの強化〕  G社は、試用モニターへのサービスYの提供期間中に、インシデント対応に必要なログの取得方法を検討することになり、F社と協議した。  F社によれば、ログ取得モジュールを実装するには時間が掛かるが、ログ取得モジュールを実装しなくても、サービスNを導入することによって、通信ログを取得できるという。  サービスNにおけるWAFルールの記述形式を図5に示す。
 Rさんは、サービスNのSシステムへの導入を責任者に提案し、承認を得た。サービスNの導入完了後、サービスYの提供を開始した。   〔新たな脆弱性への対応〕  数週間後、ライブラリHというオープンソースのライブラリに脆弱性Vという脆弱性があることが公表された。Rさんは、脆弱性Vについての関連情報を図6のように取りまとめた。
情報処理安全確保支援士試験(令和6年度 午後 問01 図06)
 Rさんは、脆弱性Vへの対応方針をZ氏に相談した。Z氏は、F社の回答を待ってからの対応では遅いので、システムに影響を与えない検証コードをSシステムに対して実行し、外部から脆弱性Vを悪用できるか検証するよう提案した。Rさんは、Z氏の協力の下、図7に示す手順で検証を実施した。
情報処理安全確保支援士試験(令和6年度 午後 問01 図08)
 検証の結果、外部から脆弱性Vを悪用できることが確認できた。この結果を踏まえて、Rさんは、脆弱性Vを悪用する攻撃に備え、E社からWAFルールが提供されるまでの間、現在判明している悪用パターンに対応可能な暫定的なWAFルールで攻撃を遮断することにした。  Rさんが考えたWAFルールの案を表6に示す。
 Rさんは、例えば“jnDI”のように大文字・小文字を入れ替える手口によって、ルール1と2それぞれで、案のパターンを回避する方法があることに気付いた。④このような手口にも対応できるように案を変更した。その後、変更後の案の確認をZ氏に依頼した。  Z氏は、⑤本番運用開始後の一定期間においては、WAFルールの動作には“検知”を設定して、サービスYが今までどおり利用できるかを確認することを助言した。Rさんは、Z氏の助言を踏まえて、WAFルールを設定した。  後日、Sシステムでは、ライブラリHを利用しているとの回答がF社からあった。また、E社からサービスNにおけるWAFルールが提供された。その後、脆弱性Vを修正したバージョンがライブラリHの公式Webサイトで配布され、Sシステム内のライブラリHのバージョンを最新にすることで、脆弱性Vへの対応が完了した。

設問1:

問題文を見る
本文中のaに入れる適切な字句を答えよ。

模範解答

a:ステートレス

解説

解答の論理構成

  1. 【問題文】には「RESTful APIの設計原則の一つにセッション管理を行わないという性質がある。この性質をaという。」と記載されています。
  2. REST(Representational State Transfer)は“サーバ側にクライアント状態を保持しない”ことを原則とするアーキテクチャです。
  3. この原則を技術用語で「ステートレス(stateless)」と呼びます。つまり、リクエスト間でサーバにセッション情報を残さず、必要な状態は都度リクエストに含めて送信します。
  4. したがって、aに入る適切な字句は「ステートレス」となります。

誤りやすいポイント

  • 「セッションレス」と書き換えてしまう
    → RESTの正式な原則名は「ステートレス」であり、設問は“性質を何というか”を問うため略語や和製英語は不可です。
  • 「無状態」「ステートフリー」など日本語訳をそのまま記述
    → 原文の流れに合わせるとカタカナ語「ステートレス」が一般的かつ正答。
  • HTTPの“接続を保持しない”=Keep-Alive無効と混同
    → RESTのステートレスはアプリケーション層でのクライアント状態管理を指し、TCP接続の継続とは別概念です。

FAQ

Q: ステートレスにすると毎回すべての情報を送るので通信量が増えませんか?
A: 多少増えますが、キャッシュやトークンを用いることで実運用上の負荷は抑えられます。また、スケーラビリティや冗長構成の容易さが利点となります。
Q: クッキーでトークンを送っている場合もステートレスですか?
A: クッキー自体はクライアント側に保存されるためサーバが状態を保持しなければステートレスを満たします。サーバ側でセッション表を管理するとステートフルになります。
Q: JWTを用いてもステートレス原則を守れますか?
A: はい。JWTには利用者情報と署名が含まれ、サーバはデータベースにセッションを保存せずに認証・認可を行えるため、ステートレス設計に適合します。

関連キーワード: REST, ステートレス、セッション管理、HTTPリクエスト、JWT

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:〔脆弱性診断の結果〕について答えよ。

問題文を見る
(1)表3中のbに入れる適切な数値を、小数点以下を四捨五入して整数で答えよ。

模範解答

b:500

解説

解答の論理構成

  1. 前提確認
    • 認証APIは「毎回ランダムに生成される数字4桁の文字列(以下、文字列Xという)」と定義されています(表2)。
    • 診断レポートでは「1秒間に10回試行する総当たり攻撃を行った場合」とあります(表3項番4)。
  2. 総当たり攻撃に必要な総試行回数
    • 4桁の数字なので、取り得る値は 通りです。
  3. 平均的な成功までの試行回数
    • ランダムに並べ替えられた10,000通りを順に試す場合、成功位置は一様分布になります。
    • 期待値(平均回数)は 回です。
  4. 1秒間あたりの試行回数と所要時間
    • 1秒間に10回試行できるので、所要時間は
  5. 小数点以下を四捨五入した整数
    • 既に整数なので、そのまま「500」となります。

誤りやすいポイント

  • 「平均的な成功まで」は「すべて試した場合の最大時間」ではない点を取り違える。
  • 試行レートを「毎秒10回」ではなく「毎分10回」と誤読する。
  • 4桁=1,000通りと勘違いし、計算を にしてしまう。
  • 期待値計算で とせず、端数処理を誤る。

FAQ

Q: 最大で何秒掛かりますか?
A: 10,000通りを全て試すと 秒です。平均はその半分の500秒です。
Q: 文字列Xを6桁に増やすと平均時間は?
A: 通り数は なので平均試行回数は500,000回。毎秒10回なら50,000秒(約13.9時間)になります。
Q: 攻撃者が並列に100リクエスト/秒を送ったら?
A: 同じ計算式で 秒に短縮されるため、レート制限など追加対策が必要です。

関連キーワード: ブルートフォース、期待値、確率計算、OTP, レートリミット

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:〔脆弱性診断の結果〕について答えよ。

問題文を見る
(2)表5中の下線①について、修正後のライブラリQで行うJWTの検証では、どのようなデータに対してどのような検証を行うか。検証対象となるデータと検証の内容を、それぞれ20字以内で答えよ。

模範解答

データ:JWTヘッダ内のalgに指定された値 内容:NONEでないことを検証する。

解説

解答の論理構成

  1. 問題文は、診断時に「“RS256”の代わりに“NONE”を指定し、“user01”を他の利用者IDに改ざんしたJWTを送信したところ、改ざんしたJWTの検証が成功」したと指摘しています。
  2. さらに「ライブラリQは、JWT内のヘッダに指定されたアルゴリズムに基づいてJWTを検証する」と記載されており、algに “NONE” を許容してしまうことが脆弱性の原因だと読み取れます。
  3. したがって、改修後のライブラリQは「JWTヘッダのalg値」を取り出し、「その値が “NONE” ではない」ことを確認する検証を追加することで、アルゴリズム混乱攻撃を防ぎます。

誤りやすいポイント

  • userクレーム(利用者ID)の改ざん検出と誤解しやすいですが、本質はalgフィールドの扱いにあります。
  • 署名そのものを再計算すると考えがちですが、“NONE” を禁止するだけでも攻撃を封じられる点を見落としやすいです。
  • “RS256のみ許可”と書くと、他の安全なアルゴリズム実装が将来追加された場合に柔軟性を欠く恐れがあります。

FAQ

Q: なぜ “NONE” の受信を拒否するだけで対策になるのですか?
A: “NONE” を指定すると署名検証が実質スキップされるため、攻撃者は任意のペイロードを偽造できます。拒否すれば必ず署名付きトークンだけを受け入れることになり、改ざんは失敗します。
Q: “NONE” 以外にも危険なアルゴリズムはありますか?
A: 仕様上は “NONE” が唯一の署名なしアルゴリズムです。ただし、将来の拡張で同様の挙動を持つものが追加される可能性もあるため、ホワイトリスト方式(安全なアルゴリズムのみ許可)が推奨されます。
Q: ペイロード中のuserクレームをサーバ側データと突き合わせる必要は?
A: 署名が正しく検証されていればuserは改ざんできませんが、多層防御の観点でトークン内IDとサーバ上セッション情報を照合する実装も有効です。

関連キーワード: JWT, アルゴリズム混乱攻撃、署名検証、RESTful API

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:〔脆弱性診断の結果〕について答えよ。

問題文を見る
(3)表5中の下線②について、P呼出し処理に追加すべき処理を、40字以内で具体的に答えよ。

模範解答

JWTに含まれる利用者IDがmidの値と一致するかどうかを検証する処理

解説

解答の論理構成

  1. 脆弱性の確認
    表3の項番2には、 「パラメータmidに他の利用者IDを指定すると、他の利用者IDにひも付く利用者情報を取得、改変できてしまう。」
    とあり、midと実際の利用者の対応付けが行われていないことが示されています。
  2. 既存認証処理の限界
    図4には、 「JWT内の署名を検証した後、ペイロードに含まれた利用者IDを確認して利用者を識別し…」
    と記述されています。
    つまりJWTだけで認証は完了していますが、その後のAPI呼び出しではmidパラメータが優先され、JWT内の利用者IDとの照合が行われていません。
  3. 具体的な攻撃シナリオ
    ・攻撃者は自分のJWT(ペイロード中 "user": "attacker01")を保持。
    ・GET /user?mid=victim01を送信。
    ・P呼出し処理はmid=victim01をそのまま共通モジュールPへ渡すため、他人の情報を取得 / 更新できてしまいます。
  4. 対策の要点
    表5では、 「②P呼出し処理に処理を追加する」
    と求められています。
    攻撃を防ぐには、(1) JWTペイロードの利用者IDと (2) リクエストのmidを比較し、一致しない場合は処理を中止する必要があります。
  5. したがって追加すべき処理
    JWTから取り出した利用者IDとmidの値を照合し、一致しないリクエストを拒否するロジックであると導けます。

誤りやすいポイント

  • JWTの署名検証のみで十分と誤解し、パラメータ整合性チェックを忘れる。
  • midを署名付きパラメータに置き換えればよいと考え、既存API仕様の維持コストを見落とす。
  • 共通モジュールP側で一括制御できると判断し、P呼出し処理にチェックを入れない。

FAQ

Q: JWTの署名が正当なら他のIDでアクセスしても問題ないのでは?
A: JWTは“誰がログインしたか”を示すだけで、“誰のデータを操作するか”はリクエストパラメータ次第です。両者の不一致を放置するとなりすましが成立します。
Q: midを省略してJWTのIDをそのまま使う方法ではダメ?
A: API仕様変更が広範に及ぶうえ、将来拡張でmidが必要になる可能性も残ります。一致確認を追加する方が影響を局所化できます。
Q: 共通モジュールPでの検証とP呼出し処理での検証、どちらが望ましい?
A: 現行構成ではP呼出し処理がJWTを受け取れる唯一の場所なので、ここで照合するのが実装コストとセキュリティの両面で最適です。

関連キーワード: JWT, アクセスコントロール、パラメータ検証、RESTful API, Bearer認証

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:〔脆弱性診断の結果〕について答えよ。

問題文を見る
(4)表5中のcに入れる適切な字句を、表2中の用語で答えよ。

模範解答

c:共通モジュールP

解説

解答の論理構成

  1. 表5の設問部分
    • 「指定されたパラメータを検証せず全て c に送信していた。」
    • 「送信内容を改ざんしてパラメータ “status” を追加してリクエストを送信すると、c は利用者ステータスを変更できる。」
      ここから c には“利用者ステータスを変更する処理”を実際に担うモジュール名が入ると分かります。
  2. 表2のAPI仕様
    • 利用者APIの説明欄に「F社が既に開発済みの利用者管理共通ライブラリ(以下、共通モジュールPという)を利用する。」
    • 「共通モジュールPは、サービスMを呼び出して…利用者情報を取得、更新する。」
      利用者情報(=ステータスを含む)を更新できるのは「共通モジュールP」です。
  3. 照合
    • 表5ではパラメータ “status” を追加すると「利用者ステータスを変更できる」とあり、表2では「共通モジュールP」が利用者情報更新を担当。
    • よって、検証を行わず送っている先 c は「共通モジュールP」でなければ辻褄が合いません。
  4. 結論
    c に入る字句は 表2に記載の「共通モジュールP」です。

誤りやすいポイント

  • 「サービスM」と混同する
    サービスMはデータベースサービスであり直接ロジックを持ちません。更新処理は「共通モジュールP」経由で行います。
  • 「サービスL」を選んでしまう
    サービスLはイベント駆動の実行基盤で、具体的な利用者情報の変更は内部で呼び出す「共通モジュールP」が担当します。
  • “status” パラメータが表2にないため別の新モジュールと誤解する
    表2に定義されないパラメータでも送信先は既存モジュールと読み取る必要があります。

FAQ

Q: 「共通モジュールP」はどこで呼び出されていますか?
A: 表2に「利用者ステータスの管理にも利用される」と明記され、サービスLの処理から呼び出されます。
Q: サービスMがステータス変更を行うわけではないのですか?
A: サービスMはデータベースとして動作しCRUDの実体は持ちますが、ロジック層である「共通モジュールP」を通して呼び出されます。
Q: パラメータ検証を追加する箇所はどこですか?
A: 表5の対策案②にあるとおり「P呼出し処理」にバリデーションを追加して、不要なパラメータが「共通モジュールP」へ渡るのを防ぎます。

関連キーワード: アクセス制御、パラメータ検証、JWT, RESTful API, WAF

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:〔脆弱性診断の結果〕について答えよ。

問題文を見る
(5)表5中のdに入れる適切な処理内容を、30字以内で答えよ。

模範解答

d:連続失敗回数がしきい値を超えたらアカウントをロックする処理

解説

解答の導き方

  1. 脆弱性の把握
    表3の項番4には「総当たり攻撃によって、文字列Xを使った認証メカニズムを突破できる」とあり、これは認証APIの「文字列X(OTP)」に対するブルートフォース攻撃が可能であることを示しています。したがって、繰返しの誤入力(試行)を抑止する対策が求められます。
  2. 表5の指示の確認
    表5の項番4には「d を実装する。そのしきい値は10とする。」とあります。ここで「しきい値は10」とあることから、試行回数に基づいて何らかの遮断・制限を行う処理を実装することが求められます。
  3. 要求される処理の性質の決定
    総当たり攻撃を抑える手段として代表的なのは、(1)IPや送信元単位のレートリミティング、(2)アカウント単位の試行回数制御(閾値超過でロック等)、(3)試行ごとの遅延やCAPTCHA導入、などです。表5が「しきい値は10」と利用者単位(midで識別される)での対策を想定している文脈から、最も直接的に合致するのは「利用者(mid)ごとに連続した失敗試行を数え、閾値を超えたらそのアカウントへの認証試行を止める(ロックする)処理」です。ここで「連続」にする理由は、成功時にカウントをリセットして通常利用者の誤入力と攻撃を区別しやすくするためです。
  4. まとめ(解答の根拠)
    ・表3が示す脆弱性=OTPに対する総当たり攻撃である。
    ・表5が要求するのは試行回数に基づく遮断であり、しきい値が「10」であること。
    以上より、表5のdには「連続失敗回数がしきい値を超えたらアカウントをロックする処理」を入れるのが適切です。

誤りやすいポイント

  • 「しきい値は10」を「1秒間に10回試行できること」と混同し、意味を取り違える(ここでは「10回の失敗試行で発動」)。
  • 「累積失敗回数」として古い失敗をずっと加算する実装にしてしまい、一定期間後の誤ロックを招く。
  • アカウントロックを無期限にする(運用上のDoSを招く)。一時ロックや通知・解除手順を考慮しない。
  • ロックのみで防御完結と考え、IPベースのレート制限や監視ログなど他対策を併用しない。
  • カウントの対象を特定できない(必ず利用者ID(mid)ごとにカウントすること)。

FAQ

Q: 「連続失敗回数」とは何を意味しますか?
A: 一定の連続した認証失敗(ここではOTP検証の失敗)を指します。成功時にはカウントをリセットし、対象は利用者ID(mid)ごとに管理します。こうすることで、継続的な総当たり攻撃を検出して遮断できます。
Q: アカウントロックは永続的にしてよいですか?
A: いいえ。運用上の正当な利用者を不当に締め出すリスクがあるため、通常は一時ロック(一定時間後に自動解除)や管理者による解除、本人確認手続き(メール通知やパスワード再設定)を併用します。またログとアラートを残して調査・対応できるようにします。
Q: 閾値「10」は十分ですか?(試しに計算したい場合)
A: 参考値として計算すると、4桁の数字OTPの場合、組合せは (=10000)通りで、平均的な成功までの試行回数は (=5000)回です。1秒間に10回試行できると仮定すると平均所要時間は 秒(約8分20秒)になります。6桁にすると組合せは 、平均試行回数は (=500000)回、同条件では所要時間は 秒(約13.9時間)となり、桁数を増やすと総当たりの難度は大きく上がります。ただし攻撃者がIPを分散させる等の手法を取ると時間計算だけでは防げないため、閾値によるロックは他の対策(IPレート制限、ログ監視、一時ロック+通知など)と併用する必要があります。

関連キーワード: アカウントロック、レートリミティング、総当たり攻撃(ブルートフォース)、ワンタイムパスワード(OTP)、失敗試行カウント

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問3:〔新たな脆弱性への対応〕について答えよ。

問題文を見る
(1)図7中の下線③について、テストサーバに実装する仕組みを、35字以内で具体的に答えよ。

模範解答

テストサーバのindex.htmlへのアクセスを記録し、確認する仕組み

解説

解答の論理構成

  1. 問題文の要求確認
    下線③は【図7】で示され、原文には
    “③図8で指定したコマンドが実行されたことを確認する仕組み”
    とあります。つまり「コマンドが実行された事実」を“テストサーバ”側で把握できる仕掛けを答える必要があります。
  2. 実行されるコマンドの内容
    【図8】注記2に
    “d2dldCBodHRwOi8vYTIuYjIuYzIuZDlvaW5kIvaW5kZW5kaHRtbA==のデコード結果は、     wget http://a2.b2.c2.d2/index.html である。”
    と明記されています。攻撃成功時には攻撃対象サーバがtestサーバ(IP“a2.b2.c2.d2”)の “index.html” をwgetで取得しに来ることが分かります。
  3. 確認方法の導出
    したがってtestサーバで
    ・index.htmlへのHTTPアクセスを受け付け
    ・そのアクセスをログに残す
    仕組みを用意すれば、アクセスログの有無でコマンド実行を確認できます。
  4. 以上より解答は
    “テストサーバのindex.htmlへのアクセスを記録し、確認する仕組み”
    となります。

誤りやすいポイント

  • コマンドがダウンロードした「Jファイル」側を監視すると誤解しやすいですが、実際に送信されるのはwget …/index.htmlです。
  • テストサーバでは“コマンドの実行結果”を直接捕捉するのではなく、“HTTPアクセスを記録”するだけで十分です。
  • “syslogで監視”や“パケットキャプチャ”など広義の方法を書いてしまい焦点がぼけるケースがあります。

FAQ

Q: index.htmlへのアクセス以外のファイルでも確認できますか?
A: 原文でダウンロード対象が “index.html” と決まっているため、最も確実なのは同ファイルへのアクセスを監視する方法です。
Q: アクセス記録はApacheのアクセスログでも良いのでしょうか?
A: はい。要件は「アクセスを記録して確認できる」ことなので、Webサーバ既定のアクセスログで問題ありません。
Q: パケットキャプチャを常時行う方法ではダメですか?
A: 成立しますが、設問は“仕組み”を簡潔に問われており、アクセスログの方がシンプルで意図を明確に示せます。

関連キーワード: JNDI, LDAP, アクセスログ、wget, WAFルール

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問3:〔新たな脆弱性への対応〕について答えよ。

問題文を見る
(2)表6中のe、fに入れる適切な字句を、図5中から選んで答えよ。

模範解答

e:Header f:Header

解説

解答の論理構成

  • 図6には「準備した攻撃コードをHTTPリクエストのx-api-versionヘッダの値として指定したHTTPリクエストを攻撃対象サーバに送信する。」とあります。攻撃文字列が格納される場所が明示的に“ヘッダ”である点がポイントです。
  • 図5の[検証対象]の選択肢にはHeaderが含まれており、「全てのヘッダの値を検証対象とする。」と定義されています。
  • 表6は脆弱性Vを悪用する攻撃コード(${jndi:ldap://…} を含む)を検知・遮断するルールを作成する場面です。攻撃コードがヘッダに置かれる以上、検証対象はHeaderを選ぶ必要があります。
  • ルール1のパターン ¥Wjndi¥Wとルール2のパターン ¥Wldap¥Wはどちらも同じヘッダ値の中に含まれる可能性が高いため、双方ともHeaderを指定するのが適切です。
  • 以上より、表6中 e と f には同じ語句「Header」を入れる結論となります。

誤りやすいポイント

  • 攻撃コードがクエリ文字列や本文に入ると誤解し、GETやPOSTを選んでしまう。実際にはヘッダ内に挿入される攻撃手法が説明されています。
  • 図5の「ANY」を万能と捉え、安易に選択するケース。ANY は範囲が広すぎて正規表現誤検知のリスクが増えるため、必要最小限のHeaderを選ぶ方が望ましいです。
  • Rule1とRule2で異なる検証対象を選択してしまう。表6の文脈では両者とも同一ヘッダを調査する設定が前提です。

FAQ

Q: ルールにGETやPOSTを指定しても攻撃は検知できますか。
A: 今回の攻撃文字列はヘッダに含まれるため、GETやPOSTを指定しても検査対象外となり検知できません。
Q: ANY を使えばヘッダも含めて網羅できるのでは。
A: ANY は便利ですが誤検知率が高く、サービスへの影響が大きくなるため、攻撃箇所が明確な場合はHeaderのように限定するのが推奨です。
Q: Headerを選ぶ場合、特定ヘッダのみ検査する設定はできますか。
A: 多くのWAF製品では個別ヘッダを条件に追加設定できます。まずは全ヘッダを対象に検知モードで動作確認し、問題がなければ運用ポリシーに合わせて絞り込みます。

関連キーワード: WAF, 正規表現、HTTPヘッダ、JNDI, LDAP

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問3:〔新たな脆弱性への対応〕について答えよ。

問題文を見る
(3)本文中の下線④の変更後の案について、表6中のルール1に記述すべきパターンを、図5の記述形式で答えよ。

模範解答

・¥W[jJ][nN][dD][iI]¥W ・¥W(j|J)(n|N)(d|D)(i|I)¥W

解説

解答の論理構成

  1. 問題文には、下線④で「このような手口にも対応できるように案を変更した」とあります。ここでの「手口」とは、“jnDI”のように大文字・小文字を入れ替える手法であり、従来の ¥Wjndi¥Wというパターンでは検知できないケースを指します。
  2. 図5のルール記述形式では、正規表現を使って大小文字を個別に許容することが可能です。正規表現の文字クラス [xX] を用いれば、大文字・小文字のいずれか1文字を許容できます。
  3. したがって、4文字すべてを大小文字のいずれでもマッチさせるには、
    • j→[jJ]
    • n→[nN]
    • d→[dD]
    • i→[iI]
      と置き換え、前後に非英数字を表す ¥Wを残します。
  4. 以上より、変更後のルール1に記述すべきパターンは
    ¥W[jJ][nN][dD][iI]¥W
    となります。これは図5の記述形式を完全に満たし、大文字・小文字の混在にも対応できます。

誤りやすいポイント

  • ^ や .* を不用意に追加してしまい、意図せず攻撃を許可・遮断してしまう。図5の要件に無い文字を加えると動作が変わります。
  • [jJ][nN][dD][iI] の代わりに (j|J)(n|N)(d|D)(i|I) と書けますが、かっこを閉じ忘れる・縦棒を抜かすなどでシンタックスエラーを起こす。
  • 誤って後続の ¥Wを削除すると、語中やパラメータ値の一部に現れた無関係な文字列まで遮断対象となる過検知が発生します。

FAQ

Q: 先頭の ¥Wと末尾の ¥Wは必須ですか?
A: はい。図5で ¥Wは「任意の非英数字」を意味し、攻撃コードの前後の区切りを検出する役割があります。外すと誤検知・過検知の原因になります。
Q: (j|J)(n|N)(d|D)(i|I) 形式との違いは?
A: 機能は同じですが、[jJ] 形式の方が短く可読性が高いだけでなく、正規表現エンジンによっては高速に処理できる場合があります。
Q: 全て小文字に変換してから判定する方法でも良いですか?
A: 可能ですが、WAFでリアルタイムに文字列変換を行うとオーバーヘッドが増大することがあります。正規表現で大小文字を網羅した方が実装が容易です。

関連キーワード: 正規表現、WAF, JNDI, 大文字小文字、パターンマッチ

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問3:〔新たな脆弱性への対応〕について答えよ。

問題文を見る
(4)本文中の下線⑤について、WAFルールの動作に“遮断”ではなく“検知”を設定することによる利点と、“検知”に設定した際に被害を最小化するために実施すべき内容を、それぞれ25字以内で答えよ。

模範解答

利点:誤検知による遮断を防ぐことができる。 内容:アラートを受信したら攻撃かどうかを精査する。

解説

解答の論理構成

  • 【問題文】には“⑤本番運用開始後の一定期間においては、WAFルールの動作には”検知”を設定して、サービスYが今までどおり利用できるかを確認する”とあります。
  • “検知”は図5の説明で“通信を通過させ、ログに記録し、管理者にアラートを送信する”動作です。
  • もし初期設定で“遮断”にしてしまうと、誤ったパターンマッチにより正当な通信まで止める恐れがあります。可用性確保の観点から、まずは“検知”で様子を見る利点が導かれます。
  • 被害を最小化するには、“検知”で得られたアラートを速やかに確認し、本当に攻撃かどうかを判断してルールを調整・強化する運用が必要です。
  • 以上より、模範解答
    利点:「誤検知による遮断を防ぐことができる。」
    内容:「アラートを受信したら攻撃かどうかを精査する。」
    が妥当であると論証できます。

誤りやすいポイント

  • “検知”=通信許可と勘違いして「効果がない」と評価してしまう。実際はログとアラートが残せるのでチューニングに必須です。
  • 被害最小化策を「すぐ遮断に切替える」とだけ答えてしまう。まずはアラートを確認し、正当・不正を見極めた上で段階的に対処する運用が求められます。
  • “誤検知を減らす”と“過検知を減らす”の区別が曖昧になり、理由と対策が対応しなくなる点。

FAQ

Q: なぜ“遮断”を使わないのですか?
A: 新ルール導入直後は誤検知の可能性が高く、業務影響を避けるためにまず“検知”で挙動を観察します。
Q: “検知”設定時は攻撃を許してしまうのでは?
A: アラートで迅速に把握できるため、精査してルールを修正・遮断へ切替えるまでの短期間で被害を最小化できます。
Q: ログ確認は誰が行うべきですか?
A: セキュリティ担当者が責任を持ち、SIerやベンダと連携してルール調整を行う体制が望ましいです。

関連キーワード: WAF, 誤検知、ログ分析、アラート運用

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

情報処理安全確保支援士を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について