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

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


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

   D社は、従業員1,000名の小売業である。自社のホームページやECサイトなどのWebサイトについては、Webアプリケーションプログラム(以下、Webアプリという)に対する診断(以下、Webアプリ診断という)を専門会社のZ社に委託して実施している。Webアプリ診断は、Webサイトのリリース前だけではなく、リリース後も定期的に実施している。Z社のWebアプリ診断は、脆弱性診断ツールによるスキャンだけではなく、手動による高度な分析も行う。   〔新たなWebサイトの構築〕  D社では、新たにECサイトX(以下、サイトXという)と商品企画サイトY(以下、サイトYという)をW社が提供するクラウドサービス(以下、クラウドWという)上に構築することになった。  サイトXでは、D社が取り扱う商品をインターネットを介して会員に販売する予定である。取引は毎月10,000件ほどを見込んでいる。サイトYでは、サイトXで販売する新商品の企画・開発を顧客参加型で行う。サイトXとサイトYは、いずれもWebサーバとデータベースサーバ(以下、DBサーバという)で構成する。WebサーバについてはクラウドWの仮想Webサーバサービスを利用し、DBサーバについてはクラウドWのリレーショナルデータベースサービスを利用する。サイトXとサイトYはいずれも、コンテンツマネジメントシステム(以下、CMSという)を使って構築される。サイトXとサイトYにはいずれも、Webアプリ、HTMLによる静的コンテンツ、DBサーバに格納したデータを使った動的コンテンツなどを用意する。  D社は、V大学と新商品開発の共同研究を行っている。新商品開発の共同研究では、V大学が運用する情報交換サイト(以下、サイトPという)を利用している。サイトYは、サイトPで取り扱っている情報などを表示する。  D社は、Webサイト構築に関連するデータやドキュメントの保存場所として、クラウドWのストレージサービス(以下、ストレージWという)を利用する。  D社は、サイトX及びサイトYの設計書を作成した。設計書のうち、サイトX、サイトY及びサイトPのネットワーク構成を図1に、サーバやサービスの説明を図2に示す。
情報処理安全確保支援士試験(令和6年度 午後 問03 図01)
情報処理安全確保支援士試験(令和6年度 午後 問03 図02)
〔サイトX〕  サイトXには、会員用の利用者アカウントとD社管理者用の利用者アカウントがある。サイトXのログインセッション管理は、cookieパラメータのSESSIONIDで行う。SESSIONIDには、値とSecure属性だけがセットされる。なお、サーバ側のセッションの有効期間は24時間である。設計書のうち、サイトXの機能一覧を表1に示す。
情報処理安全確保支援士試験(令和6年度 午後 問03 表01)
 サイト管理機能は、D社の内部ネットワーク以外からも利用する可能性があり、サイトXでは、接続元の制限は行わない。   サイトXとサイトYの構築は順調に進み、D社はリリース前のWebアプリ診断をZ社に委託した。Z社は、サイトXとサイトYそれぞれに対してWebアプリ診断を実施した。   〔サイトXに対するWebアプリ診断〕  サイトXに対するWebアプリ診断では、次の三つの脆弱性が検出された。  ・クロスサイトスクリプティング(以下、XSSという)  ・クロスサイトリクエストフォージェリ(以下、CSRFという)  ・認可制御の不備   〔XSSについて〕  Z社がXSSを検出した経緯は、次のとおりであった。  (1) 問合せ機能で、脆弱性診断ツールによるリクエストとレスポンスを確認した。このときのリクエストとレスポンスは、図3のとおりであった。
情報処理安全確保支援士試験(令和6年度 午後 問03 図03)
 (2) 図3中のレスポンスボディには、問合せ機能で入力した値は出力されていない。しかし、Z社は、①設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認した。     Z社は、②攻撃者がこのXSSを悪用してサイトX内の全会員の利用者情報を取得する可能性があると説明した。   〔CSRFについて〕  Z社がCSRFを検出した経緯は、次のとおりであった。  (1) 会員機能(編集)において、図4に示すリクエストを送ってその応答を確認した。リクエストは正常に処理された。
情報処理安全確保支援士試験(令和6年度 午後 問03 図04)
 (2) リクエスト内のメッセージボディの一部を変更して送り、その応答を確認した。リクエスト内のメッセージボディと応答は表2のとおりであった。
情報処理安全確保支援士試験(令和6年度 午後 問03 表02)
 (3) Z社は、手順1、2の応答が“エラー”であることから一定のCSRF対策ができているが、手順3の応答が“正常に処理”であることから③利用者に被害を与える可能性があると判断した。    Z社は、対策には二つの方法があることを説明した。  ・csrf_tokenの処理の修正  ・cookieへのSameSite属性の追加    サイトXの構成次第では、SameSite属性をcookieに付与することも有効な対策となり得る。SameSite属性は、Strict, Lax, Noneの三つの値のうちのいずれかを取る。サイトXにログインした利用者のWebブラウザにおいて、サイトX内で遷移する場合と外部WebサイトからサイトXに遷移する場合では、SameSite属性の値によってサイトXのcookie送信の有無が表3のように異なる。
情報処理安全確保支援士試験(令和6年度 午後 問03 表03)
〔認可制御の不備について〕  Z社が認可制御の不備を検出した経緯は、次のとおりであった。  (1) Z社は、利用者α、利用者βという二つの利用者アカウントを用いて、注文履歴を閲覧した際のリクエストを確認した。注文履歴を閲覧した際のリクエストを図5及び図6に示す。
情報処理安全確保支援士試験(令和6年度 午後 問03 図05)
情報処理安全確保支援士試験(令和6年度 午後 問03 図06)
 (2) 図5のリクエストのパラメータorder-codeの値を図6中の値に改変してリクエストを送った。  (3) 利用者αが、本来は閲覧できないはずの利用者βの注文履歴を閲覧できるという攻撃が成功することを確認した。  (4) さらに、ある利用者がほかの利用者が注文した際のorder-codeを知らなくても、④ある攻撃手法を用いれば攻撃が成功することを確認した。    Z社は、⑤サイトXのWebアプリに追加すべき処理を説明した。   〔サイトYに対するWebアプリ診断〕  サイトYに対するWebアプリ診断では、次の脆弱性が検出された。  ・サーバサイドリクエストフォージェリ(以下、SSRFという)   〔SSRFについて〕  Z社がSSRFを検出した経緯は、次のとおりであった。  (1) サイトPの新着情報を取得する際に、利用者のWebブラウザがWebサーバYに送るリクエストを確認したところ、図7のとおりであった。
情報処理安全確保支援士試験(令和6年度 午後 問03 図07)
 (2) ⑥図7のリクエストのパラメータの値をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできるが、ログインはできないことを確認した。  (3) ⑦図7のリクエストのパラメータの値を別のURLに変更するという方法(以下、方法Fという)でSSRFを悪用して、クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。  (4) IMDSにアクセスする方式を方式1から方式2に変更すると、方法Fではクレデンシャル情報を取得できないので、ストレージWから情報を盗み出すことができない。しかし、図7のリクエストのパラメータの値を変更することで、WebサーバYから送られるリクエストに任意のメソッドの指定及び任意のヘッダの追加ができる方法(以下、方法Gという)がある。方法Gを用いれば、方式2に変更しても、⑧クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。    Z社は、クラウドW上のネットワークでのアクセス制御の設定、及び⑨サイトYのWebアプリに追加すべき処理を提案した。    リリース前の脆弱性診断で検出された脆弱性の対策が全て完了し、サイトXとサイトYは稼働を開始した。

設問1〔XSSについて〕について答えよ。

(1)本文中の下線①について、図3中のリクエスト内のスクリプトが出力されるのはどの機能か。表1の詳細機能に対する項番を選び答えよ。

模範解答

9

解説

解答の論理構成

  1. 図3で Z社が確認したリクエストは、表1 項番5「問合せ機能」で入力された値です。
    • 【問題文】「問合せ機能で、脆弱性診断ツールによるリクエストとレスポンスを確認した。」
    • リクエストのパラメータ name に ">< が URL エンコードされたまま送信されています。
  2. レスポンスには当該値が出力されていませんが、Z社は「設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認」しました。
  3. 表1 を確認すると、問合せ情報を後から閲覧できる管理用画面は項番9「問合せ管理機能」です。
    • 表1 項番9「問合せ管理機能」:
      「問合せ機能で入力された問合せ情報が閲覧できる。」
  4. すなわち、問合せ機能で登録した値が表示される画面は管理者向けの「問合せ管理機能」であり、ここでスクリプトが実行されることで XSS が成立します。
  5. 以上より、下線①で問われている “図3中のリクエスト内のスクリプトが出力される機能” の詳細機能に対する項番は「9」となります。

誤りやすいポイント

  • 問合せ機能(項番5)と問合せ管理機能(項番9)の役割を混同しやすい。入力画面ではなく“閲覧”画面に XSS が現れる点に注意。
  • 「会員機能(編集)」や「サイト管理機能」と誤って関連付けるケースがあるが、図3 のリクエスト内容(subject_id, name, tel など)は問合せ情報特有の項目。
  • “別の機能に出力される” という記述を見落とし、同一画面内での反射型 XSS と早合点しやすい。

FAQ

Q: 反射型 XSS と永続型 XSS のどちらに該当しますか?
A: 問合せ情報が DB に保存され、管理画面で後日表示されるためユーザが異なります。保存→表示の流れなので永続型 XSS に分類できます。
Q: なぜサイト管理画面が外部からもアクセス可能なのに IP 制限を設けなかったのでしょうか?
A: 問題文では「サイトXでは、接続元の制限は行わない」と設計されています。運用要件で多地点からのアクセスを許容した結果、IP 制限を採れなかったと推測されます。
Q: XSS を根本的に防ぐには何を実装すべきですか?
A: サーバ側でのエスケープ(HTML エンコード)と入力値検証の徹底、HTTP ヘッダ Content-Security-Policy の導入が有効です。

関連キーワード: XSS, 永続型、入力値検証、HTMLエスケープ、コンテンツセキュリティポリシー

設問1〔XSSについて〕について答えよ。

(2)本文中の下線②について、攻撃者はどのような手順で利用者情報を取得するか。具体的に答えよ。

模範解答

攻撃者がわなリンクを用意し、管理者にそのリンクを踏ませることで管理者権限のcookieを攻撃者のWebサイトに送信させ、その値を読み取って利用することで管理者としてサイトXにアクセスし、利用者情報を取得する。

解説

解答の論理構成

  1. 攻撃者が入力できる画面
    • 問題文の図3に示すとおり、攻撃者はログイン不要の「問合せ機能」で name パラメータに “"><” を送信できる。
    • これは「サイトXの機能一覧(表1)」の項番5「問合せ機能」に相当し、誰でも利用できる。
  2. スクリプトの保存と表示場所
    • 手順(2)で Z社は「設計書を調査した上で手動による分析を行い、図3中のリクエスト内のスクリプトが別の機能の画面に出力されることを確認」した。
    • 別の機能とは、同じ表1の項番9「問合せ管理機能」である。これは「サイト管理機能(ログイン後)」に含まれ、D社管理者が閲覧する。
  3. 攻撃対象となる利用者(D社管理者)の権限
    • サイトXには「D社管理者用の利用者アカウント」があり、管理者は表1の項番8「会員管理機能(閲覧、変更、削除)」など全会員情報を扱える高権限を持つ。
  4. スクリプト実行時のセッション利用
    • サイトXのログインセッションは cookie の SESSIONID で管理され、「値とSecure属性だけがセットされる」。したがって JavaScript から document.cookie で読める。
    • 管理者が「問合せ管理機能」を開くと、保存されたスクリプトが管理者のブラウザで実行され、同ブラウザに存在する管理者用 SESSIONID を取得できる。
  5. 全会員情報の取得フロー
    ① 攻撃者は問合せ機能で XSS ペイロードを登録(図3)。
    ② 管理者が問合せ管理機能を開く ⇒ ペイロードが実行。
    ③ ペイロードは SESSIONID を読み取り、攻撃者サーバへ送信。
    ④ 攻撃者は受け取った SESSIONID を自分のブラウザに設定し、管理者セッションとしてログイン状態を再現。
    ⑤ 攻撃者は表1の「会員管理機能(閲覧、変更、削除)」にアクセスし、サイトX内の全会員の利用者情報をダウンロードする。
  6. 以上により、下線②「攻撃者がこのXSSを悪用してサイトX内の全会員の利用者情報を取得する」手順が成立する。

誤りやすいポイント

  • 反射型と誤認し、管理者がリンクを踏む必要があると考えてしまう。実際は問合せ内容が保存されるため「保存型XSS」。
  • SESSIONID に Secure 属性が付いているだけで JavaScript から読めないと誤解する(必要なのは HttpOnly 属性)。
  • スクリプトが直接利用者情報を API 呼び出しで抜き取ると考え、cookie 窃取のステップを抜かす。攻撃の主眼は管理者権限の奪取。
  • 「サイト管理機能は、D社の内部ネットワーク以外からも利用する可能性があり」とあるため、攻撃者が直接ログインできると誤解するが、パスワードは不明なので cookie 取得が必要。

FAQ

Q: Secure 属性が付いている cookie は JavaScript から読めないのでは?
A: 読み取り可否を制御するのは HttpOnly 属性です。問題文には「Secure属性だけがセットされる」とあるため、スクリプトから SESSIONID を取得できます。
Q: 管理者が問合せ管理機能を開かないと攻撃は成立しないのでは?
A: はい。保存型 XSS の典型で、管理者が対象ページを閲覧したタイミングでスクリプトが実行されます。大半の運用で管理者は新規問合せを確認するため、実行機会は高いと想定できます。
Q: スクリプトが直接 API を叩いて情報を抜く方法は取れないのか?
A: Ajax で API を呼び出す方法でも可能ですが、今回の解答要求は「cookie を盗み管理者としてログインして会員情報を取得する」手順を想定しています。

関連キーワード: 保存型XSS, セッションハイジャック、Secure属性、HttpOnly属性、権限昇格

設問2〔CSRFについて〕について答えよ。

(1)本文中の下線③について、被害を与える攻撃の手順を、具体的に答えよ。

模範解答

攻撃者が自らのアカウントで取得したcsrf_tokenと一緒に利用者情報をサイトXに送るように構成したわなフォームに、詐欺メールなどで利用者を誘導し、利用者情報を変更させる。

解説

解答の論理構成

  1. CSRF の成立条件
    • ブラウザが自動送信する cookie と攻撃者が用意したリクエストパラメータが合わさることで、利用者の意図しない操作がサーバで正規処理されます。
    • 表2の手順3では
      「csrf_token=(異なる利用者アカウントで取得したcsrf_tokenの値)
      を使っても「応答」が“正常に処理”となりました。これは csrf_token が「誰のセッションで発行されたか」を Web アプリが検証していない証拠です。
  2. 攻撃者が準備するもの
    • 自分でサイトXにログインし、 「Cookie: SESSIONID=...」と紐付く自分の csrf_token を取得。
    • POST /shop/editmember のメッセージボディを
      sei=...&mei=...&mail=...&csrf_token=取得した値
      にして自動送信する HTML(わなフォーム)を作成。
  3. 被害発生の流れ
    ① 攻撃者はフィッシングメールや SNS で、わなフォームを埋め込んだページへ利用者を誘導。
    ② 利用者が既にサイトXへログイン中(Cookie: SESSIONID=被害者の値 が有効)の状態でそのページを閲覧。
    ③ ブラウザが被害者の SESSIONID を付けたまま、攻撃者の csrf_token 付き POST をサイトXへ自動送出。
    ④ サーバは
    ・SESSIONID で被害者セッションを同定
    ・csrf_token は「存在している」ことだけを確認
    して処理を受け付ける。
    ⑤ その結果、被害者アカウントの氏名・メールアドレスなどが攻撃者が指定した値に変更される。
  4. 結論
    攻撃手順は「攻撃者が自分のアカウントで取得した csrf_token を含むわなフォームを介して被害者ブラウザから POST /shop/editmember を送らせ、被害者の利用者情報を変更させる」です。これは模範解答
    「攻撃者が自らのアカウントで取得したcsrf_tokenと一緒に利用者情報をサイトXに送るように構成したわなフォームに、詐欺メールなどで利用者を誘導し、利用者情報を変更させる。」
    と一致します。

誤りやすいポイント

  • 「csrf_token が入っていれば安全」と早合点し、セッションとのひも付け確認の欠如を見落とす。
  • SameSite 属性の話題に引きずられ、攻撃手順の核心(攻撃者トークンの流用)を答え忘れる。
  • わなフォームを GET で送ると誤記する(図4・表2 が POST である点を要確認)。

FAQ

Q: なぜ手順1・2ではエラーになるのに手順3だけ成功したのですか?
A: token が「空」や「未指定」のときはサーバ側チェックで弾かれますが、他人の token でも「値が存在する」ことは満たすため通過します。
Q: 攻撃者は必ずメールアドレスを変更するのですか?
A: 操作可能な項目はメッセージボディで渡せる値すべてです。パスワードや住所など、画面が許容する範囲で自由に改ざんできます。
Q: SameSite=Lax を付けても防げますか?
A: POST に対しては表3の d が cookie 送信不可なので、Lax でも防御できます。ただし GET 経由の CSRF には Strict・Lax どちらも有効です。

関連キーワード: CSRF, セッション管理、トークンバインディング、フィッシング、脆弱性診断

設問2〔CSRFについて〕について答えよ。

(2)表3中のadに入れる適切な内容を、“○”又は“x”から選び答えよ。

模範解答

a:× b:× c:○ d:×

解説

解答の論理構成

  1. 問題文は「SameSite属性は、Strict、Lax、Noneの三つの値のうちのいずれかを取る。」と述べ、さらに「サイトX内で遷移する場合と外部WebサイトからサイトXに遷移する場合では、SameSite属性の値によってサイトXのcookie送信の有無が表3のように異なる。」と示しています。
  2. Webブラウザの標準仕様では
    • Strict … “完全同一サイト”でのみ cookie を送信。外部サイト → 対象サイトへの全リクエスト(GET/POST)では 送信しない
    • Lax … “安全なナビゲーション(GET)”には送信するが、同一サイト外からの POST などの変更系リクエスト には送信しない。
  3. したがって表3の空欄は次のように決定できます。
    a(Strict/外部→GET)→送信しない → “×”
    b(Strict/外部→POST)→送信しない → “×”
    c(Lax/外部→GET)→送信する → “○”
    d(Lax/外部→POST)→送信しない → “×”
  4. よって模範解答は
    a:× b:× c:○ d:× となります。

誤りやすいポイント

  • 「Lax は“外部サイトからでも GET なら送る”」という例外を忘れ、Strict と同じ挙動と誤解する。
  • POST だけでなく iframe・img 等のサブリソース読み込み時の挙動を混同し、GET =常に安全と決めつける。
  • None を「制限なし」と覚えた結果、Strict と Lax の違いを軽視してしまう。

FAQ

Q: None を選ぶときの追加要件はありますか?
A: Secure 属性を同時に付与しなければブラウザが拒否します。TLS が必須です。
Q: Lax で外部サイトからフォーム POST したら CSRF は防げますか?
A: 通常は cookie が送信されないため防げますが、一部ブラウザが古い仕様のままだと例外があるためトークン方式との併用が推奨です。
Q: Strict を使うと利便性は下がりますか?
A: 外部サイト上のリンクから直接アクセスしたときにセッションが引き継がれないため、再ログインが必要になるなどユーザビリティに影響します。

関連キーワード: SameSite, CSRF, SecureCookie, GETリクエスト、POSTリクエスト

設問3〔認可制御の不備について〕について答えよ。

(1)本文中の下線④について、どのような攻撃手法を用いれば攻撃が成功するか。30字以内で答えよ。

模範解答

order-codeの下6桁を総当たりで試行する。

解説

解答の論理構成

  1. 注文管理番号の構造
    表1には
    ――「注文履歴は、注文年月である数字6桁とランダムな英大文字6桁の値をハイフンでつないだ注文管理番号で管理される。」――
    とあり、前半 6 桁(202404 など)は推測容易です。
  2. 認可チェックの欠落
    図5・図6のリクエストを比較し、Z社は
    ――「利用者αが、本来は閲覧できないはずの利用者βの注文履歴を閲覧できる」――
    ことを確認しています。order-code の値を書き換えるだけで他人の情報が閲覧できる=認可制御が働いていません。
  3. 下線④の背景
    しかし攻撃者は他人の order-code を「知らなくても」成立させる必要があります。そこで Z社は
    ――「④ある攻撃手法を用いれば攻撃が成功する」――
    と指摘しました。
  4. 適切な攻撃手法の導出
    ・推測できる部分:年月 6 桁
    ・未知の部分:ランダム英大文字 6 桁
    未知部分を機械的に全通り試行する「総当たり(ブルートフォース)攻撃」であれば、order-code を知らずともヒットするまで繰り返しリクエストを送れます。
    したがって下線④で問われる攻撃手法は
    「order-code の下 6 桁を総当たりで試行する」
    となります。

誤りやすいポイント

  • SQL インジェクションやディレクトリトラバーサルと混同する。実際には単なる ID 列挙型のブルートフォースです。
  • 「数字6桁とランダムな英大文字6桁」を全体で推測困難と考え、総当たりを諦めてしまう。前半 6 桁は月次で容易に特定できます。
  • レスポンスにレートリミットや CAPTCHA がある前提で考えてしまう。本問ではその制御が記述されていません。

FAQ

Q: 総当たりを防ぐためには何を実装すべきですか?
A: アカウントごとの認可チェックに加え、リクエスト回数制限や CAPTCHA、長くランダムな不可測 ID の採用が有効です。
Q: 前半 6 桁(年月)も変化があるのでは?
A: 過去の注文履歴閲覧を狙う場合でも、対象月を一つずつ変えながら同様に試行できるため依然としてリスクが残ります。
Q: 総当たりは現実的ですか?
A: 26⁶ 通りありますが、並列化・自動化が可能であり、Web アプリ側に適切なレート制限や監査がなければ実行され得ます。

関連キーワード: ブルートフォース、認可チェック、ID列挙、レートリミット、クレデンシャルスタッフィング

設問3〔認可制御の不備について〕について答えよ。

(2)本文中の下線⑤について、サイトXのWebアプリに追加すべき処理を、60字以内で具体的に答えよ。

模範解答

cookieの値で利用者アカウントを特定し、order-codeの値から特定したものと違っていれば、エラーにする。

解説

解答の論理構成

  1. 認可制御の不備の内容
    問題文では、利用者αのリクエスト
    「order-code=202404-AHUJKI¹」を「order-code=202404-BAKCXW」に書き換えるだけで
    「利用者αが、本来は閲覧できないはずの利用者βの注文履歴を閲覧できる」
    とあります。これはリクエストパラメータだけで対象利用者が切替わり、サーバ側がログイン中の利用者と order-code の所有者を照合していないことを示します。
  2. 認可チェックの本質
    サーバは既に cookie の SESSIONID で「誰がログインしているか」を特定できます(問題文に「SESSIONIDには、値とSecure属性だけがセットされる」と記載)。
    ところが注文履歴表示処理では、このセッションに結び付けられた会員番号と、リクエストで受け取った order-code の所有者を比較する処理がありません。
  3. 必要な追加処理
    したがって Web アプリ側で
    ・SESSIONID から会員を特定
    ・その会員が保有する order-code かを DB で照合
    ・一致しなければエラー応答
    という認可チェックを挟むことで、不正閲覧を防止できます。

誤りやすいポイント

  • 認証(ログイン)と認可(権限確認)を混同し、単にログインしていれば安全と考えてしまう。
  • パラメータ改竄防止に HMAC などの署名を追加する案を答え、設問が求める「認可チェックの追加」から外れる。
  • クライアント側の JavaScript で比較すればよいと勘違いし、サーバ側処理の必要性を見落とす。

FAQ

Q: 「order-code」自体に利用者情報が含まれているのだから改竄検知できるのでは?
A: 問題文注¹に「値から利用者を特定することができる」とあるものの、サーバが照合処理を行わなければ意味がありません。
Q: CSRF トークンのように order-code に署名を持たせれば十分ですか?
A: 署名でも有効ですが、本問は「⑤サイトXのWebアプリに追加すべき処理」を問うており、サーバ側での所有者照合が本質的対策となります。
Q: セッション固定攻撃対策と同時に実装すべきですか?
A: SESSIONID の適切な管理(Secure, HttpOnly, SameSite 等)は前提ですが、本問の解説範囲は認可チェック追加に限定されます。

関連キーワード: 認可チェック、パラメータ改竄、セッション管理、アクセス制御

設問4〔SSRFについて〕について答えよ。

(1)本文中の下線⑥について、ログインができないのはなぜか。SSRF攻撃の特徴を基に、35字以内で答えよ。

模範解答

変更後のURLにPOSTデータは送ることができないから

解説

解答の論理構成

  1. ⑥の状況
    • 問題文では「図7のリクエストのパラメータの値をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできるが、ログインはできない」とあります。
  2. SSRFで発生するリクエストの性質
    • SSRFは「利用者のWebブラウザがWebサーバYに送るリクエスト」を改変し、そのままWebサーバYが内部へ GET リクエストを発行する形で成立します。
  3. CMS 側の認証仕様
    • 図2には「ログインは、POSTメソッドでは許可されるが、GETメソッドでは許可されない。」と記載されています。
  4. 結論
    • SSRFで送られるのは GET リクエストなので、CMS へは資格情報(ID・パスワード)を載せた POST データを渡せません。
    • したがって「変更後のURLにPOSTデータは送ることができないから」が解答となります。

誤りやすいポイント

  • 「アクセスできる=ログインできる」と誤解し、メソッド制限の記述を見落とす。
  • SSRFをクライアント側のクロスサイト攻撃と混同し、ブラウザがPOSTできないと勘違いする。実際にはサーバ側がGETとして送る点が本質です。
  • CMSの初期パスワード運用やIP制限と結び付け、この設問の直接原因と混同してしまう。

FAQ

Q: SSRFでもPOSTメソッドで内部へリクエストを送れる場合はありますか?
A: Webアプリ側が任意メソッドを指定できる実装(本文中の「方法G」など)がある場合は可能です。本設問の⑥は図7の単純改変でありGET固定です。
Q: CMSの初期パスワードがそのままでも、なぜログインできなかったのですか?
A: 初期パスワードの有無以前に、GETメソッドでは認証情報を送信できずCMSが受け付けません。
Q: メソッド制限を回避してSSRFでPOSTを送信できるケースは危険ですか?
A: 危険です。本文で示された「方法G」はまさに任意メソッド・任意ヘッダを送れるため、IMDS 方式2でもクレデンシャルを盗まれるとZ社が指摘しています。

関連キーワード: SSRF, GETメソッド、POSTメソッド、メソッド制限、認証情報

設問4〔SSRFについて〕について答えよ。

(2)本文中の下線⑦について、クレデンシャル情報を取得する方法を、具体的に答えよ。

模範解答

パラメータpageの値をIMDSのクレデンシャル情報を返すURLに変更する。

解説

解答の論理構成

  1. 図7に示されるリクエストでは、ブラウザが
      GET /top?page=https://△△△.jp/topic/202404.html HTTP/1.1
     という形でパラメータ page の値を Web サーバYに渡しています。
  2. 本文は「図7のリクエストのパラメータの値を別のURLに変更するという方法(以下、方法Fという)でSSRFを悪用して、クレデンシャル情報を取得し…」と記述し、page の値を書き換えれば Web サーバYが内部でその URL を取得してしまう SSRF(Server-Side Request Forgery)が成立することを示しています。
  3. では、どの URL なら「クレデンシャル情報」を返すのか。図2の説明には
      「https://○○○.○○○.○○○.○○○/meta-data/credential にGETメソッドでアクセスされると、クラウドW上のサービスのクレデンシャル情報を返す。」
     とあります。ここが IMDS(Instance Metadata Service)で、VPC 内部からしかアクセスできない特殊なエンドポイントです。
  4. Web サーバYは VPC 内にあるため、この IMDS へのリクエストにアクセス可能です。したがって攻撃者は page に IMDS の URL を指定するだけで、Web サーバYが IMDS からクレデンシャルを取得し、そのレスポンスを攻撃者に返してしまいます。
  5. 以上より、下線⑦の「クレデンシャル情報を取得する方法」の具体的内容は
     パラメータ page の値を https://○○○.○○○.○○○.○○○/meta-data/credential など IMDS のクレデンシャル情報取得用 URL に変更する、という操作になります。

誤りやすいポイント

  • CMS 管理ログイン画面(/admin)の URL に書き換えても「ログインはできない」ため、ここを答えにしてしまうミス。
  • IMDS の方式1・方式2の違いを意識せず「トークンを発行する URL に変更」と誤記。本文では「D社では、方式1を採用する」とありトークンは不要です。
  • SSRF は「ブラウザが直接 IMDS にアクセスする」と勘違いしがちですが、実際にアクセスするのは Web サーバYである点を忘れがちです。

FAQ

Q: IMDS の URL はグローバル IP ですか?
A: いいえ。「IMDSには、インターネットから直接アクセスできないプライベートIPアドレス(○○○.○○○.○○○.○○○)」と記載されており、VPC 内からのみ到達可能です。
Q: なぜブラウザにクレデンシャルが返ってくるのですか?
A: Web サーバYが IMDS へ内部リクエストを行い、そのレスポンス内容(クレデンシャル情報)をそのまま外部に返す実装になっているためです。
Q: 方式2でも同じ攻撃はできますか?
A: 方式2では単純な GET だけでは取得できませんが、本文は「方法Gを用いれば…クレデンシャル情報を取得し」と示しており、追加ヘッダとメソッドを細工すれば攻撃可能です。

関連キーワード: SSRF, IMDS, クレデンシャル情報、URLパラメータ、メタデータサービス

設問4〔SSRFについて〕について答えよ。

(3)本文中の下線⑧について、方法Gを用いてクレデンシャル情報を取得する方法を、具体的に答えよ。

模範解答

トークンを発行するURLにPUTメソッドでアクセスしてトークンを入手し、そのトークンをリクエストヘッダに含めて、IMDSのクレデンシャル情報を返すURLにアクセスする。

解説

解答の論理構成

  1. IMDS(インスタンスメタデータサービス)方式2の仕様確認
    • 問題文に「方式2:トークンを発行するURLにPUTメソッドでアクセスし、レスポンスボディに含まれるトークンを入手してから、そのトークンをリクエストヘッダに含めて特定のURLにアクセスすると情報を取得できる。」とある。
    • つまり、方式2では
      ① PUT でトークン取得 → ② 取得したトークンをヘッダに付与したリクエストでメタデータ(クレデンシャル情報)取得
      という2段階が必須になる。
  2. 方法Gの特徴を整理
    • 本文で「図7のリクエストのパラメータの値を変更することで、WebサーバYから送られるリクエストに任意のメソッドの指定及び任意のヘッダの追加ができる方法(以下、方法Gという)がある。」と説明されている。
    • すなわち攻撃者は SSRF を利用し、WebサーバY に
      • 任意メソッド(PUT / GET など)
      • 任意ヘッダ
      を含む内部向けリクエストを送信させられる。
  3. 方法Gで方式2を突破する手順
    • ステップ1:方法Gにより、IMDS の「トークンを発行するURL」に対して PUT メソッドを発行させる。レスポンスボディにトークンが返る。
    • ステップ2:得られたトークンを X-aws-ec2-metadata-token(名称はクラウド依存だが問題文の「そのトークンをリクエストヘッダに含めて」に該当)等のヘッダに設定し、IMDS の「クレデンシャル情報を返すURL」にアクセスさせる。
    • ステップ3:IMDS は正当なトークン付きリクエストと判断し「クラウドW上のサービスのクレデンシャル情報」を返す。
    • 以上が下線⑧「クレデンシャル情報を取得し」を可能にする具体手順であり、模範解答
      「トークンを発行するURLにPUTメソッドでアクセスしてトークンを入手し、そのトークンをリクエストヘッダに含めて、IMDSのクレデンシャル情報を返すURLにアクセスする。」
      になる。

誤りやすいポイント

  • 「GET にトークンをクエリ文字列で付与すれば良い」と誤解し、ヘッダに載せる要件を落とす。
  • 方式1と方式2を混同し、トークン取得の PUT が不要だと思い込む。
  • 方法Gの「任意メソッド・任意ヘッダ付与」能力を見落とし、「ヘッダは追加できないのでは?」と判断してしまう。
  • SSRF の経路(利用者 → WebサーバY → IMDS)を想像できず、攻撃者が直接 IMDS に届くと誤認する。

FAQ

Q: PUT で取得したトークンはどのヘッダ名で送れば良いのですか?
A: クラウドごとに名称は異なりますが、問題文では「そのトークンをリクエストヘッダに含めて」とだけ指示しています。代表例として X-aws-ec2-metadata-token などが用いられます。
Q: なぜ 1 回のリクエストでクレデンシャル情報を取れないのですか?
A: 方式2は「事前に PUT でトークン取得 → そのトークンを使った本リクエスト」という二段階認証のような仕組みになっているためです。1回ではトークンが無く認証に失敗します。
Q: SameSite 属性の追加では SSRF を防げませんか?
A: SameSite はブラウザから送信される cookie を制御する対策であり、サーバ側から内部リソースへ送信する SSRF とは無関係です。

関連キーワード: SSRF, メタデータサービス、トークン認証、HTTPメソッド、ヘッダインジェクション

設問4〔SSRFについて〕について答えよ。

(4)本文中の下線⑨について、サイトYのWebアプリに追加すべき処理を、35字以内で具体的に答えよ。

模範解答

パラメータpageの値がサイトP以外のURLならエラーにする。

解説

解答の論理構成

  1. 原因把握
    本文は「⑥図7のリクエストのパラメータの値をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできる」
    「⑦図7のリクエストのパラメータの値を別のURLに変更するという方法…でSSRFを悪用して、クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができる」と述べ、page パラメータが任意 URL を許容するため SSRF が成立していることを示しています。
  2. 被害の大きさ
    「⑧クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができる」とあるように、クラウド管理権限まで奪取される重大リスクです。
  3. 求められる対策
    本文は「⑨サイトYのWebアプリに追加すべき処理」を問うています。SSRFは外向きリクエストの送信先を制限することで封じ込められます。
  4. 想定される正答
    サイトYが本来リクエストすべき外部サイトは「△△△.jp」(サイトP)だけです。従って page にそれ以外の URL が来た場合は処理を拒否すればよく、これが最小かつ効果的な修正になります。

誤りやすいポイント

  • ブラックリストで弾くと回避策が漏れがち。必ず「ホワイトリスト」で許可制御する必要があります。
  • GET/POST切替IMDS方式2だけで安全と誤解しやすいが、本文は「方法Gを用いれば…情報を盗み出すことができる」と明言しており不十分です。
  • ネットワークACLだけではアプリ層の URL 変換を防げない点を見落としがちです。

FAQ

Q: ホワイトリストに IP アドレス表記も含めた方がよいですか?
A: FQDN だけでなく、同一ホストを指す IP 直書きや URL エンコード形も拒否できるよう正規化処理を併用してください。
Q: URL 妥当性検証のライブラリ利用は必須ですか?
A: 自前実装は抜け漏れを生む恐れがあるため、標準ライブラリや成熟した OSS を利用し、正規化+ホワイトリストを組み合わせるのが推奨です。
Q: IMDS へのアクセス制御を強化しても十分ではないのですか?
A: IMDS を守っても SSRF が別資産へ届く可能性は残るため、アプリ側で送信先を限定する対策が不可欠です。

関連キーワード: SSRF, URLホワイトリスト、入力値検証、パラメータバリデーション、クレデンシャル漏洩
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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