令和5年度 春期 情報処理安全確保支援士試験 午後II 問1 脆弱性診断の内製化とDASTツールの設定

テクノロジセキュリティ技術

この問題は2023(R5)春 情報処理安全確保支援士 午後IIに出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

学習ガイド

製造業グループがWeb脆弱性診断を内製化する事例です。DASTツールが入力と応答の何を比較して脆弱性を判定するかを軸に、設定不備とサイト仕様による見逃しを区別します。XSS、パラメータ検証、アカウント制限の診断方法と修正方針を整理します。本文・表・図の根拠を行き来し、用語だけを暗記するのではなく、短い記述にも判断の理由を残して解答する手順を示します。

この記事で押さえる論点

  • DASTツールが脆弱性を見逃す原因を画面遷移とパラメータ初期値から説明できる
  • アカウントロックや申込み1回制限など、診断リクエストがエラーになるサイト仕様を見抜く
  • HttpOnly属性で防げるXSSの被害と防げない被害を切り分ける
  • group_code欠落によるアクセス制御回避と、セッションIDに基づく修正方針を記述する

問題本文

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

A社グループは,全体で従業員20,000名の製造業グループである。技術開発や新製品の製造・販売を行うA社のほか,特化型の製品の製造・販売を行う複数の子会社(以下,グループ各社という)がある。A社及びグループ各社には,様々なWebサイトがある。A社では,資産管理システムを利用し,IT資産の管理を効率化している。Webサイトの立ち上げ時は,資産管理システムへのWebサイトの概要,システム構成,IPアドレス,担当者などの登録申請が必要である。

A社には,CISOが率いるセキュリティ推進部がある。セキュリティ推進部の業務は,主に次の三つである。

  • A社の情報セキュリティマネジメントを統括する。
  • A社のWebサイトの脆弱(ぜい)性診断(以下,脆弱性診断を診断という)を管理する。例えば,A社の会員サイトなど,重要なWebサイトについて,診断を新規リリース前に実施し,その後も年1回実施する。なお,診断は,セキュリティ専門業者のB社に委託している。
  • グループ各社に対して,情報セキュリティポリシーやセキュアコーディング規約を配布する。なお,診断の実施有無や内容はグループ各社に任せている。

IoT製品の市場拡大によってグループ各社による新規Webサイト開発の増加が予想されている中,A社の経営陣は,グループ各社のWebサイトのセキュリティが十分かどうかを懸念し始めた。そこで,グループ各社の重要なWebサイトも,A社のセキュリティ推進部がグループ各社と協議しつつ診断を管理することになった。

セキュリティ推進部がB社に診断対象となるWebサイトのリリーススケジュールを伝えたところ,同時期に多数の診断を依頼されても対応することができない可能性があるとのことだった。そこで,グループ各社の一部のWebサイトに対する診断をA社グループ内で実施できるようにするための内製化推進プロジェクト(以下,Sプロジェクトという)を立ち上げた。

セキュリティ推進部のZさんは,Sプロジェクトを担当することになった。ZさんはこれまでもB社への診断の依頼を担当しており,診断の準備から診断結果の報告まで,診断全体をおおむね把握していた。

〔Sプロジェクトの進め方〕

Sプロジェクトは,B社の支援を得ながら,表1のとおり進めることにした。B社からは,セキュリティコンサルタントで情報処理安全確保支援士(登録セキスペ)であるY氏の支援を受けることになった。

表1 Sプロジェクトの進め方
図の説明テキスト

表1 Sプロジェクトの進め方

フェーズ 作業内容 説明
フェーズ1 診断項目の決定 診断項目を決める。
フェーズ2 診断ツールの選定 診断ツールを選定する。
フェーズ3 ZさんとB社での診断の実施と結果比較 A社グループであるK社の製品のアンケートサイト(以下,サイトMという)について,ZさんとB社がそれぞれ診断を実施する。Zさんは,B社の診断結果との差異を評価する。
フェーズ4 A社グループの診断手順案の作成 フェーズ3の評価を基に,A社グループの診断手順案を作成する。
フェーズ5 診断手順案に従った診断の実施 K社の会員サイト(以下,サイトNという)に対し,A社グループの診断手順案に従って,診断を実施する。
フェーズ6 A社グループの診断手順の制定 フェーズ5の診断で残った課題についての対策を検討した上で,A社グループの診断手順を制定する。

〔フェーズ1:診断項目の決定〕

Sプロジェクトでは,診断項目を決めた。

〔フェーズ2:診断ツールの選定〕

B社がWebサイトの診断にツールVを使っていることもあり,A社はツールVを購入することに決めた。ツールVの仕様を図1に示す。

図1 ツールVの仕様(抜粋)
図の説明テキスト

図1 ツールVの仕様(抜粋)

  1. 機能概要:DASTツールであり、パラメータを変更してHTTPリクエストを送信し脆弱性を判定する。
  2. 機能:(1) プロジェクト作成機能、(2) 診断対象URLの登録機能((2-1) 自動登録機能, (2-2) 手動登録機能, (2-3) 拡張機能)、(3) 拒否回避機能((3-1) 拒否回避機能)、(4) URLにひも付くパラメータの設定機能、(5) 診断項目の設定機能、(6) アカウント設定機能((6-1) 利用者IDとパスワードの設定機能, (6-2) アカウントの拡張機能の設定)、(7) 診断機能、(8) レポート出力機能。

診断対象URLの自動登録機能及び手動登録機能の特徴を表2に示す。

表2 診断対象URLの自動登録機能及び手動登録機能の特徴
図の説明テキスト

表2 診断対象URLの自動登録機能及び手動登録機能の特徴

自動登録機能の特徴 手動登録機能の特徴
・登録に作業者の工数がほぼ不要である。
・常に一定の品質で登録できる。
・Webサイトによっては、登録が漏れる場合がある。例えば、遷移先のURLがJavaScriptなどで動的に生成されるような場合である。
・必須入力項目に適切な値を入力できず、正常に遷移できないことがある。
・登録に作業者の工数が必要である。
・Webブラウザを使ってトップページから順に手動でたどっても、登録が漏れる場合がある。Webサイトの全てのURLを診断対象とする場合、診断対象URLを別の方法で調べる必要がある。

A社は,診断項目のうち,ツールVでは診断ができないものは手動で診断を実施することにした。

〔フェーズ3:ZさんとB社での診断の実施と結果比較〕

ZさんとB社は,サイトMに対して診断を実施した。サイトMの画面遷移を図2に示す。

図2 サイトMの画面遷移(抜粋)
図の説明テキスト

図2 サイトMの画面遷移を示す状態遷移図(抜粋)。トップページからアンケート入力1、トピック一覧へ遷移。アンケート入力1からアンケート入力2、アンケート確認、アンケート送信完了へ遷移。トピック一覧からトピック検索、トピック検索結果、トピックへ遷移。

Zさんは,Zさんの診断結果とB社の診断結果とを比較した。その結果,Zさんは脆弱性の一部を検出できていないことが分かった。検出できなかった脆弱性は,アンケート入力1の画面での入力値に起因するクロスサイトスクリプティング(以下,クロスサイトスクリプティングをXSSという)と,トピック検索の画面での入力値に起因するSQLインジェクションであった。サイトMのアンケート入力1からの画面遷移を図3に示す。

図3 サイトMのアンケート入力1からの画面遷移
図の説明テキスト

図3 サイトMのアンケート入力1からの画面遷移
「アンケート入力1」から矢印iで「アンケート入力2」へ。
「アンケート入力2」から矢印iiで「アンケート確認」へ。
「アンケート確認」から矢印iiiで「アンケート送信完了」へ。
注記 画面遷移時にWebブラウザから送られたパラメータの値
i : last_name=%E5%B1%B1%E7%94%B0&first_name=%E5%A4%AA%E9%83%8E&member=Y
ii : text=%E5%95%86%E5%93%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%8C%E5%A5%BD%E3%81%8D%E3%80%82
iii : submit=Yes

トピック検索の画面で検索条件として入力した値の処理に関する診断で,ツールVが送ったパラメータと検索結果の件数を表3に示す。なお,トピック検索の画面で検索条件として入力した値は,パラメータ keyword に格納される。

表3 ツールVが送ったパラメータと検索結果の件数(抜粋)
図の説明テキスト

表3 ツールVが送ったパラメータと検索結果の件数(抜粋)

診断者 送ったパラメータ 検索結果の件数
B社 keyword=manual 10件
keyword=manual' 0件
keyword=manual a 10件
keyword=manual b 0件
Zさん keyword=xyz 0件
keyword=xyz' 0件
keyword=xyz a 0件
keyword=xyz b 0件
注記1 B社はパラメータ keyword の初期値を manual としている。
注記2 Zさんはパラメータ keyword の初期値を xyz としている。

ツールVは,B社の診断では,keyword=manualaとkeyword=manualbの検索結果を比較してSQLインジェクションを検出できたが,Zさんの診断ではSQLインジェクションを検出できなかった。

Zさんは,検出できなかった二つの脆弱性について,どうすれば検出できるのかをY氏に尋ねた。次は,その際のY氏とZさんの会話である。

Y氏:XSSについては,入力したスクリプトが二つ先の画面でエスケープ処理されずに出力されていました。XSSの検出には,ツールVにおいて図1中の c設定が必要でした。SQLインジェクションについては,keywordの値が文字列として扱われる仕様となっており,SQLの構文エラーが発生するような文字列を送ると検索結果が0件で返ってくるようです。そこで,keywordの初期値としてSQLインジェクションを検出できる“manual”のような値を設定する必要がありました
Zさん:なるほど。ツールVは,Webサイトに応じた初期値を設定する必要があるのですね。

その後,Zさんは,Y氏とともに,フェーズ3での診断結果を分析した。その際,偽陽性を除いてから開発者に報告することは難しいことが問題となった。
そこで,Zさんは,“開発者への報告の際に,診断結果の報告内容が脆弱性なのか偽陽性なのか,その判断を開発者に委ねる。一方,診断結果の報告内容における脆弱性の内容,リスク及び対策について,開発者がB社に直接問い合わせる。”という案にした。なお,B社のサポート費用は,問合せ件数に比例するチケット制である。グループ各社がB社とサポート契約を結ぶが,費用は,当面A社がまとめて支払い,後日グループ各社と精算する。

これまでの検討を踏まえて,Zさんは,フェーズ4でA社グループの診断手順案を作成した。

〔フェーズ5:診断手順案に従った診断の実施〕

Y氏の協力の下,Zさんは,診断手順案に従ってサイトNの診断を実施することにした。サイトNは既にリリースされている。サイトNの会員(以下,会員Nという)は,幾つかのグループに分けられており,申し込むことができるキャンペーンが会員の所属しているグループによって異なる。サイトNの画面遷移を図4に示す。

図4 サイトNの画面遷移(抜粋)
図の説明テキスト

図4 サイトNの画面遷移(抜粋)を示す状態遷移図。
・「ログイン」から A を経て「ログイン後のトップページ」へ
・「会員情報変更入力」から B を経て「会員情報変更確認」へ
・「キャンペーン申込み」から C を経て「キャンペーン申込み完了」へ
・「製品情報一覧」から D を経て「製品情報」へ
・「よくある質問検索」から E を経て「検索結果」へ
注記1 一つのキャンペーンに対して,会員Nは1回だけ申込みできる。
注記2 既に登録されているメールアドレスでは,新規会員登録の申込みはできない。
注記3 ログインすると,会員Nが所属しているグループを識別するための group_code というパラメータがリクエストに追加される。
注記4 よくある質問検索の画面で検索する際に,次の画面に遷移するURLがJavaScriptで動的に生成される。

まず,Zさんは,診断対象URL,アカウントなど,診断に必要な情報をK社に確認した。しかし,サイトNについては診断に必要な情報が一元管理されていなかったので,確認の回答までに 1 週間掛かった。診断開始までに要する時間が課題として残った。

次に,Zさんは,アカウントの設定を行った後,探査を開始するURLに図4のトップページを指定してツールVの診断対象URLの自動登録機能を使用したが,一部のURLは登録されなかった。その後,登録されなかったURLを手動で登録した。診断を実施してもよいか,Y氏に確認したところ,注意点の指摘を受けた。具体的には,特定のパラメータが同じ値であるリクエストを複数回送信するとエラーになり,遷移できない箇所があることに注意せよとのことであった。適切な診断を行うために,ツールVの拒否回避機能を設定して診断を実施した。診断では,次に示す脆弱性が検出された。

  • XSS
  • アクセス制御の回避

Zさんは,これらの脆弱性について,サイトNの開発部門(以下,開発部Nという)に通知し,偽陽性かどうかの判断,リスクの評価及び対策の立案を依頼した。

〔XSS〕

XSSの脆弱性は,複数の画面で検出された。開発部Nから,“cookieにHttpOnly属性が付いていると, d が禁止される。そのため,cookieが漏えいすることはなく,修正は不要である。”という回答があった。Zさんは,この回答を受けてY氏に相談し,“XSSを悪用してcookie以外の情報を盗む攻撃があるので,修正が必要である。”と開発部Nに伝えた。

〔アクセス制御の回避〕

Zさんは,手動で診断し,アクセス制御の回避の脆弱性を,図4中のキャンペーン一覧の画面などで検出した。ある会員Nがアクセス制御を回避するように細工されたリクエストを送ることで,その会員Nが本来閲覧できないはずのキャンペーンへのリンクが表示され,さらに,リンクをたどってそのキャンペーンに申し込むことが可能であった。正常なリクエストとそのレスポンスを図5に,脆弱性を検出するのに使ったリクエストとそのレスポンスを図6に示す。

図5 正常なリクエストとそのレスポンス
図の説明テキスト

図5 正常なリクエストとそのレスポンス
[リクエスト]
POST /campaignSearch HTTP/1.1
Host: site-n.▲▲▲▲.jp
Cookie: JSESSIONID=KCRQ88ERH2G8MGT319E5OSMOAJFDIVEM

group_code=0001&keyword=new

[レスポンス]

(省略)

申込み可能キャンペーン

1 A社キャンペーン1 2 A社キャンペーン2

注意事項

(省略)
図6 脆弱性を検出するのに使ったリクエストとそのレスポンス
図の説明テキスト

図6 脆弱性を検出するのに使ったリクエストとそのレスポンス
[リクエスト]
POST /campaignSearch HTTP/1.1
Host: site-n.▲▲▲▲.jp
Cookie: JSESSIONID=KCRQ88ERH2G8MGT319E5OSMOAJFDIVEM

keyword=new

[レスポンス]

(省略)

申込み可能キャンペーン

1 A社キャンペーン1 2 A社キャンペーン2 3 B社キャンペーン1 4 C社キャンペーン1 (省略) 30 Z社キャンペーン2

注意事項

(省略)

開発部Nは,サイトNへ送られてきたリクエスト中のeから,ログインしている会員Nを特定し,その会員Nが所属しているグループがfの値と一致するかを検証するように,ソースコードを修正することにした。

開発部Nは,B社の支援によって対応を終えることができたが,B社へ頻繁に問い合わせることになった結果,B社のサポート費用が高額になった。サポート費用をどう抑えるかが課題として残った。

〔フェーズ6:A社グループの診断手順の制定〕

Zさんは,フェーズ5の診断で残った二つの課題についての対策を検討し,グループ各社から同意を得た上で,A社グループの診断手順を完成させた。
セキュリティ推進部は,制定したA社グループの診断手順をグループ各社に展開した。

設問と解答・解説

設問1

表2中の下線①について,別の方法を,30字以内で答えよ。

模範解答

診断対象のWebサイトの設計書を確認するという方法

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「設計書」または「仕様書」を確認するという内容が明記されている。
  • 1: ドキュメントの確認という意図は伝わるが、用語が不適切または抽象的である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 対象の確認方法として論理的に成立しており、自然な日本語で記述されている。
  • 1: 文意は通じるが、表現にやや不自然さがある。
  • 0: 意味不明、または方法として成立していない。

解説

脆弱性診断の対象となるWebサイトを洗い出す際、クローラによる自動探索だけでは漏れが生じる可能性がある。特に、企業グループで多数のWebサイトを管理している場合、システム全体を俯瞰して漏れなく診断対象を特定する必要がある。自動ツールのみに頼らず、人間がドキュメントを直接確認する手法が有効である。 採用すべき別の方法として、システムの構成や仕様が網羅的に記されているドキュメントを参照することが求められる。設計段階で作成された資料には、全ての画面遷移や機能が定義されているため、これらを確認することで診断漏れを防ぐことができる。 したがって、対象Webサイトの設計書や仕様書を確認するという方法が適切となる。この方法は、自動ツールの限界を補完する上で重要である。 現場での課題解決において、技術的な手段だけでなく、運用面やドキュメント管理の観点からのアプローチも欠かせない。 セキュリティ品質を一定に保つためには、こうした多角的な確認手法を取り入れることが推奨される。 以上の理由から、設計書の確認が正答となる。

高得点のポイント

  • 診断対象のWebサイトについて、設計書仕様書を確認することが明確に挙げられていること。

設問2

〔フェーズ3:ZさんとB社での診断の実施と結果比較〕について答えよ。

(1)

表3中及び本文中の a に入れる適切な字句を,解答群の中から選び,記号で答えよ。

  1. "
  2. ' and 'a'='a
  3. ' and 'a'='b
  4. and 1=0
  5. and 1=1

模範解答

選択肢イ: ' and 'a'='a

配点 4

解説

SQLインジェクションの脆弱性有無を判定する際、診断ツールは入力パラメータに対して意図的に真(True)となる条件式と偽(False)となる条件式を挿入し、アプリケーションからの応答の違いを分析する。 挿入した条件式が常に真となる場合、バックエンドのデータベースでは WHERE 句の条件が成立し、本来の検索結果と同じ内容が返されたり、あるいは全てのレコードが表示されたりする。 a には、常に真となる条件式が入る必要がある。 ここで、論理式として ' and 'a'='a は、文字列 'a' が 'a' と等しいかという条件であり、これは常に真となる。 したがって、この文字列を入力することで、元のクエリに付加された条件が True となり、正常時と同様の応答が得られるかを確認できる。 脆弱性が存在する場合、このテストによってエラーにならず結果が表示されるという挙動を示す。 この事象を利用して、後述の偽の条件(b)との応答差分を比較することが脆弱性診断の基本である。 よって、正答はイとなる。

各選択肢の解説

  • ア: 単なるクォートであり、SQLの構文エラーを引き起こす可能性があるが、論理的な真偽のテストにはならない。
  • イ: 正解。常に真となる条件式である。
  • ウ: 常に偽となる条件式であり、b に該当する。
  • エ: 常に偽となる条件式だが、文字列型パラメータのコンテキストでは前後のクォート調整がなく構文エラーになりやすい。
  • オ: 常に真となる条件式だが、前後のクォート調整が不十分である。

(2)

表3中及び本文中の b に入れる適切な字句を,解答群の中から選び,記号で答えよ。

  1. "
  2. ' and 'a'='a
  3. ' and 'a'='b
  4. and 1=0
  5. and 1=1

模範解答

選択肢ウ: ' and 'a'='b

配点 4

解説

SQLインジェクションの検知において、常に真となる条件(a)に対する応答と、常に偽(False)となる条件に対する応答の差異を確認することで脆弱性を特定する。 常に偽となる条件式を注入した場合、WHERE 句の条件が不成立となるため、検索結果が表示されない、あるいは特定のエラー画面に遷移するといった挙動を示す。 b には、常に偽となる条件式が入る必要がある。 論理式 ' and 'a'='b は、文字列 'a' と 'b' が等しいかという条件であり、これは常に偽となる。 この文字列を入力して結果が返らなくなることを確認できれば、入力値がエスケープされずにSQL文の一部として解釈されている(脆弱性が存在する)証拠となる。 したがって、常に偽となる条件式を適切に構成している選択肢を選ぶ必要がある。 ツールはこれらの真偽の条件式を自動で送信し、その結果の差分から脆弱性を報告する。 よって、正答はウとなる。

各選択肢の解説

  • ア: 単なるクォートであり、SQLの構文エラーを引き起こす意図のものである。
  • イ: 常に真となる条件式であり、a に該当する。
  • ウ: 正解。常に偽となる条件式である。
  • エ: 常に偽となる条件式だが、文字列パラメータとしてのクォート処理が適切でない。
  • オ: 常に真となる条件式である。

(3)

本文中の c に入れる適切な機能を,図1中の(1-1)〜(8-1)から選び答えよ。

模範解答

(2-3)

採点基準(配点 8点)

正確性(内容)(8点)

  • 8: 「(2-3)」と正確に抜き出されている。
  • 4: 記号の形式に些細な誤記があるが、意図は読み取れる。
  • 0: 誤っている。

解説

脆弱性診断において、入力した悪意のあるスクリプトが、直後の画面ではなく二つ先の画面などで出力される場合がある。 このような蓄積型(Stored)XSSなどの脆弱性を検知するためには、データがどこに入力され、どの画面で出力されるかの対応関係を診断ツールに正しく設定する必要がある。 設問のケースでは、入力したデータが別の機能や画面で出力されているという事象に着目する。 したがって、対象となる機能の組み合わせを図1の中から正確に特定し、選択することが求められる。 本文および図の文脈から、該当する機能の番号を抜き出して解答する形式である。

高得点のポイント

  • 図1の機能から正確に (2-3) を抜き出せていること。

(4)

本文中の下線②について,どのような設定が必要か。設定の内容を,図2中の画面名を用いて60字以内で答えよ。

模範解答

アンケート入力1からアンケート入力2に遷移するURLの拡張機能に,アンケート確認のURLを登録する。

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「アンケート確認」のURLを登録することが明記されている。
  • 1: 登録するURLの指定が曖昧であるか、画面名が不正確である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 「アンケート入力1からアンケート入力2に遷移するURLの拡張機能」に設定するという文脈が明確に記述されている。
  • 1: 遷移の記述が不十分であるか、論理展開に飛躍がある。
  • 0: 論理が破綻している。

解説

診断ツールを用いて脆弱性を検知する際、入力画面から送信されたデータが、すぐ次の画面ではなく別の確認画面等で出力される場合がある。 このような非同期的なデータの流れや画面遷移を伴う場合、ツールが単一のURLの応答のみを判定対象としていると、出力時のエスケープ処理の不備(XSSなど)を見逃してしまう。 これを防ぐために、ツールの拡張機能を利用して、入力を送信したURLの応答だけでなく、データが実際に出力される別のURLの応答も同時に判定対象に含める設定が必要となる。 具体的には、データを入力して遷移する際のURL(アンケート入力1からアンケート入力2へ遷移するURL)の拡張機能として、データが出力される画面(アンケート確認)のURLを登録する。 これにより、ツールは入力データが最終的にどのように出力されるかを追跡し、正確に脆弱性を判定できるようになる。 図2の画面名を用いて、これらの関係性を明確に記述することが求められる。

高得点のポイント

  • アンケート入力1からアンケート入力2に遷移するURLを対象としていることが示されていること。
  • 拡張機能としてアンケート確認のURLを登録することが明記されていること。

(5)

本文中の下線③について,keywordの初期値をどのような値に設定する必要があるか。初期値が満たすべき条件を,40字以内で具体的に答えよ。

模範解答

トピック検索結果の画面での検索結果の件数が1以上になる値

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 検索結果の件数が「1以上」になる(または結果が表示される)値であることが示されている。
  • 1: 条件の記述が曖昧である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: どの画面での検索結果か(トピック検索結果の画面など)が明確であり、文として成立している。
  • 1: 画面の指定が不明確である。
  • 0: 論理が破綻している。

解説

検索機能に対する脆弱性診断を行う際、検索結果の件数が0件となるような初期値を設定してしまうと、検索結果の表示画面におけるデータの出力処理が実行されない。 その結果、検索キーワードが出力画面にエスケープされずに表示されるXSSなどの脆弱性が存在しても、ツールはその脆弱性を検知することができない。 脆弱性を確実に検知するためには、入力したキーワードが結果画面に表示される状態を作り出す必要がある。 そのためには、対象となる検索キーワードの初期値として、検索結果が確実に返ってくるような値、すなわち結果件数が1件以上となる値を設定することが条件となる。 また、どの画面における結果かを明確にするため、トピック検索結果の画面に関する言及が必要である。

高得点のポイント

  • 検索結果の件数が1以上になる(あるいは結果が表示される)値であることが示されていること。
  • どの画面での検索結果であるか(トピック検索結果の画面)が記述されていること。

設問2(2)は,正答率が低かった。“入力したスクリプトが二つ先の画面でエスケープ処理されずに出力”という具体的な事象に着目して,ツールVの設定を行う必要があった。脆弱性診断に使用するツールやマニュアルを正確に理解することは基本的なことである。脆弱性がある場合のWebアプリケーションの動き及びツールでの脆弱性を検知する方法も踏まえて,脆弱性診断を行ってほしい。設問2(3)は,正答率が低かった。診断対象URL自体を誤って解答した受験者が多かった。拡張機能を用いると,診断対象URLの応答だけでなく,別のURLの応答も判定対象になる。データを入力する画面のURLとそのデータが出力される画面のURLが異なるということに着目してほしい。

設問3

〔フェーズ5:診断手順案に従った診断の実施〕について答えよ。

(1)

本文中の下線④について,URLが登録されなかった画面名を,解答群の中から全て選び,記号で答えよ。

  1. 会員情報変更入力
  2. キャンペーン申込み
  3. 検索結果
  4. 新規会員情報入力

模範解答

選択肢ウ: 検索結果

選択肢エ: 新規会員情報入力

配点 4

解説

自動診断ツールのクローラ機能は、リンクを辿ることでWebサイト内の画面を探索し、診断対象のURLを登録していく。 しかし、単なるリンクのクリックだけでは到達できない画面が存在する。 例えば、特定の検索条件を入力して検索ボタンを押下しなければ遷移しない「検索結果」画面や、特定の入力項目を満たしてPOSTリクエストを送信しなければ遷移しない「新規会員情報入力」などの画面である。 これらの画面は、クローラが自動的に適切な入力データを生成して送信することが難しいため、自動探索の対象から漏れやすく、手動での登録や特定のシナリオ設定が必要となる。 したがって、URLが自動で登録されなかった画面として該当するものを選択する。

各選択肢の解説

  • ア: 会員情報変更入力画面は、ログイン後の特定の遷移で到達可能であり、クローラの機能によっては登録される可能性がある。
  • イ: キャンペーン申込み画面も、リンクが存在すれば辿れる可能性がある。
  • ウ: 正解。検索結果画面は、検索フォームへの適切な入力と送信アクションが必要であり、自動探索では漏れやすい。
  • エ: 正解。新規会員情報入力画面は、複数の入力項目や特定の遷移フローを伴うため、単純なクローリングでは到達しにくい。

(2)

本文中の下線⑤について,該当する画面遷移とエラーになってしまう理由を2組み挙げ,画面遷移は図4中の(A)〜(E)から選び,理由は40字以内で答えよ。

  1. A A
  2. B B
  3. C C
  4. D D
  5. E E

模範解答

選択肢A: A

配点 4

解説

自動診断ツールは、診断対象のURLに対して脆弱性の有無を確認するため、多数のテストデータを連続して送信する。 この時、システム側に実装されているセキュリティ機能やビジネスロジックの制限に抵触し、予期せずエラーとなり以降の診断が継続できなくなることがある。 該当する画面遷移の一つとして、ログイン時の認証処理が挙げられる。 同一のアカウントに対して、ツールが不正なパスワード(テスト用文字列など)を用いて連続でログイン試行を行うと、ブルートフォース攻撃対策としてのアカウントロック機能が作動する。 これにより、それ以降の正常なログインも含めて全てエラーとなり、診断がストップしてしまう。 したがって、このエラー要因に関連する画面遷移を選択する必要がある。

各選択肢の解説

  • A: 正解。ログイン処理に関する画面遷移であり、アカウントロックの原因となる。
  • B〜E: ログイン試行によるアカウントロックという事象には直接該当しない遷移である。

(3)

本文中の下線⑤について,該当する画面遷移とエラーになってしまう理由を2組み挙げ,画面遷移は図4中の(A)〜(E)から選び,理由は40字以内で答えよ。

模範解答

同じアカウントで連続5回パスワードを間違えるとアカウントがロックされるから

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「連続5回パスワードを間違える」などの具体的な条件が明記されている。
  • 1: パスワード間違いについての言及はあるが、回数などの具体性がない。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: アカウントがロックされるという結果が理由として論理的に結び付けられている。
  • 1: 理由としての記述が不完全である。
  • 0: 論理が破綻している。

解説

前問で選択した画面遷移(ログイン処理)において、自動診断ツールがエラーを引き起こしてしまう具体的な理由を説明する。 Webアプリケーションの一般的なセキュリティ対策として、パスワードリスト攻撃やブルートフォース攻撃を防ぐため、一定回数連続して認証に失敗するとアカウントをロックする機能が実装されている。 診断ツールは、SQLインジェクションやクロスサイトスクリプティングなどの脆弱性を検知するために、ログインフォームに対して無効なパスワードを含む多数のリクエストを機械的に送信する。 これにより、同じアカウントで連続してパスワードを間違えることになり、アカウントロックの条件(例:連続5回)を満たしてしまう。 その結果、アカウントがロックされ、以降のすべてのリクエストがエラーとなるため、正常な診断が妨げられる。

高得点のポイント

  • 同じアカウントに対して行われる操作であることが示されていること。
  • 連続5回のパスワード間違いによるアカウントロックが理由として明記されていること。

(4)

本文中の下線⑤について,該当する画面遷移とエラーになってしまう理由を2組み挙げ,画面遷移は図4中の(A)〜(E)から選び,理由は40字以内で答えよ。

  1. A A
  2. B B
  3. C C
  4. D D
  5. E E

模範解答

選択肢C: C

配点 4

解説

自動診断ツールによる連続試行が引き起こすもう一つのエラー要因は、ビジネスロジック上の回数制限や状態遷移の制約に関するものである。 特定の操作において、「1つのアカウントにつき1回限り」といった制限が設けられている場合、ツールが同一アカウントで複数回のテストリクエストを送信すると、初回以降のリクエストはシステムによって拒否される。 該当する画面遷移として、キャンペーンの申込み処理などが考えられる。 キャンペーンは通常、重複申込みを防ぐための制御が入っており、ツールによる機械的な再テストがこの制御に引っかかりエラーとなる。 したがって、この事象に関連する画面遷移を選択する。

各選択肢の解説

  • A, B: キャンペーン申込みに関する遷移ではない。
  • C: 正解。キャンペーン申込みなど、単発しか許されない操作の遷移に該当する。
  • D, E: キャンペーン申込みに関する遷移ではない。

(5)

本文中の下線⑤について,該当する画面遷移とエラーになってしまう理由を2組み挙げ,画面遷移は図4中の(A)〜(E)から選び,理由は40字以内で答えよ。

模範解答

キャンペーンは1会員に付き1回しか申込みできないから

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: キャンペーン申込みが「1回しかできない」という制限が明記されている。
  • 1: 制限についての記述が曖昧である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 「1会員に付き」という前提が示され、エラーになる理由として明確に繋がっている。
  • 1: 前提条件が欠けているか、文脈が不自然である。
  • 0: 論理が破綻している。

解説

前問で選択した画面遷移(キャンペーン申込み)において、自動診断ツールがエラーを引き起こしてしまう理由を説明する。 システムのビジネスロジックとして、1つの会員アカウントに対してキャンペーンの申込みは1回しか許可されないという仕様が存在する。 脆弱性診断ツールは、さまざまなテストパターンを試すために同じ画面遷移(申込み処理)を複数回繰り返そうとする。 最初の1回は正常に処理されるが、2回目以降のリクエストは「既に申込み済み」としてアプリケーション側でエラーとして処理されてしまう。 これにより、ツールが意図した脆弱性の検証を最後まで完了できなくなる。 このように、状態を持つトランザクション処理に対する自動診断では、テストデータの初期化やアカウントの使い分けといった工夫が必要になる。

高得点のポイント

  • キャンペーンへの申込みであることが示されていること。
  • 1会員に付き1回という制限が理由として明記されていること。

設問4

〔XSS〕について答えよ。

(1)

本文中の d に入れる適切な字句を,30字以内で答えよ。

模範解答

HTML内のスクリプトからcookieへのアクセス

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「HTML内のスクリプト」からのアクセスであることが明記されている。
  • 1: スクリプトからのアクセスであることは分かるが、表現が不正確である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: アクセス先が「cookie」であることが示され、文として成立している。
  • 1: 対象が不明確である。
  • 0: 論理が破綻している。

解説

XSS(クロスサイトスクリプティング)の代表的な被害の一つに、セッションハイジャックがある。 攻撃者は被害者のブラウザ上で悪意のあるJavaScriptを実行させ、セッションIDが格納されたCookie(document.cookie)を読み取り、自身のサーバーに送信させる。 このようなスクリプト経由でのCookieの漏えいを防ぐための対策として、Cookieに対して HttpOnly 属性を付与する方法がある。 HttpOnly 属性が付与されたCookieは、HTTP通信の際のみ使用され、クライアント側のJavaScriptからはアクセスできなくなる。 したがって、この属性が禁止する具体的なアクションを解答する必要がある。

高得点のポイント

  • HTML内のスクリプト(またはJavaScript)からのアクセスであることが明記されていること。
  • cookieへのアクセスを制限する機能であることが示されていること。

(2)

本文中の下線⑥について,攻撃の手口を,40字以内で答えよ。

模範解答

偽の入力フォームを表示させ,入力情報を攻撃者サイトに送る手口

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「偽の入力フォーム」を表示させることが明記されている。
  • 1: フォームの表示に関する言及が曖昧である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 入力された情報が「攻撃者サイトに送られる」という一連の手口が論理的に説明されている。
  • 1: 手口の説明が不十分である。
  • 0: 論理が破綻している。

解説

XSSを悪用した攻撃の手口は、セッションIDの窃取だけにとどまらない。 攻撃者は、被害者のブラウザ上で任意のHTMLやJavaScriptを実行できるため、表示内容を改ざんすることが可能である。 これを利用して、正規のWebサイト上に本物そっくりの偽のログインフォームやクレジットカード情報入力フォームを描画させる手法がある。 被害者は正規のサイトにアクセスしていると信じ込んでいるため、疑うことなく重要な情報を入力してしまう。 そして、入力された情報は正規のサーバーではなく、攻撃者が用意した外部のサーバーへと送信されてしまう。 このようなフィッシング詐欺に類似した手口を簡潔に説明することが求められる。

高得点のポイント

  • 偽の入力フォームを表示させることが示されていること。
  • 入力された情報が攻撃者サイトに送られる手口であることが明記されていること。

設問4(2)は,正答率が低かった。XSSを悪用した攻撃の手口は,様々あり,大きな被害にもつながり得る。対策を考える際にも必要な知識となるので,よく理解してほしい。

設問5

〔アクセス制御の回避〕について答えよ。

(1)

本文中の下線⑦について,リクエストの内容を,30字以内で具体的に答えよ。

模範解答

group_codeが削除されているリクエスト

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: パラメータ「group_code」に関する操作であることが明記されている。
  • 1: パラメータの指定が曖昧、または別パラメータを指定している。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 当該パラメータが「削除されている」リクエストであることが明確に記述されている。
  • 1: 削除などの操作内容の記述が不明確である。
  • 0: 論理が破綻している。

解説

Webアプリケーションにおけるアクセス制御の不備(認可制御の欠落)を確認するためには、意図的に不正なリクエストを送信してサーバーの挙動をテストする必要がある。 特定のグループコード(group_codeなど)に基づいてアクセス権を判定しているシステムの場合、攻撃者はそのパラメータを改ざんしたり、意図的に削除したりしてリクエストを送信する。 もしサーバー側で適切なアクセス制御が行われていれば、パラメータが欠落しているリクエストに対してはエラーやアクセス拒否の応答を返すはずである。 しかし、制御が不十分な場合、制限をすり抜けて本来アクセスできないはずのデータが閲覧できてしまうなどの問題が生じる。 したがって、診断時に送信すべき具体的なリクエストの内容を記述する。

高得点のポイント

  • 対象となるパラメータが group_code であることが示されていること。
  • それが 削除されている リクエストであることが明記されていること。

(2)

本文中の e に入れる適切なパラメータ名を,図5中から選び,15字以内で答えよ。

模範解答

JSESSIONID

採点基準(配点 6点)

正確性(内容)(6点)

  • 6: 「JSESSIONID」と正確に抜き出されている。
  • 3: スペルミスなど軽微な誤記があるが意図は伝わる。
  • 0: 誤っている。

解説

アクセス制御の回避テストに関連して、リクエストに含まれる各種パラメータの役割を理解しておく必要がある。 Java環境などのWebアプリケーションにおいて、セッション状態を管理するために標準的に用いられるCookieやURLパラメータの名称が存在する。 図5に示されたリクエスト内容の中から、セッションを特定するためのパラメータ名を選択して抜き出す形式である。

高得点のポイント

  • JSESSIONID が正確に抜き出されていること。

(3)

本文中の f に入れる適切なパラメータ名を,図5中から選び,15字以内で答えよ。

模範解答

group_code

採点基準(配点 6点)

正確性(内容)(6点)

  • 6: 「group_code」と正確に抜き出されている。
  • 3: スペルミスなど軽微な誤記があるが意図は伝わる。
  • 0: 誤っている。

解説

アクセス制御の対象となるデータや権限を決定づけるパラメータを特定する問題である。 リクエストパラメータの中で、ユーザーが所属するグループなどを識別し、サーバー側で認可の判断材料となる可能性が高いパラメータを抽出する。 図5の中から、該当するパラメータ名を抜き出して解答する。

高得点のポイント

  • group_code が正確に抜き出されていること。

設問6

〔フェーズ6:A社グループの診断手順の制定〕について答えよ。

(1)

診断開始までに要する時間の課題について,A社で取り入れている管理策を参考にした対策を,40字以内で具体的に答えよ。

模範解答

グループ各社で資産管理システムを導入し,Webサイトの情報を管理する。

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「資産管理システム」を導入することが明記されている。
  • 1: 管理システムの導入について触れているが、具体名(資産管理システム)がない。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: システムを用いて「Webサイトの情報を管理する」という目的が論理的に繋がっている。
  • 1: 目的の記述が不足している。
  • 0: 論理が破綻している。

解説

脆弱性診断を自社(あるいはグループ内)で実施する際、診断開始までに要する時間が課題となることがある。 その大きな原因の一つが、グループ各社が保有しているWebサイトのインベントリ(資産情報)が正確に把握・管理されていないことである。 対象サイトのURL、システム構成、利用技術などの情報が散在していると、事前の調査や準備に多大な時間を費やすことになる。 この課題を解決するためには、A社で既に取り入れているような情報管理の仕組みをグループ全体に展開する必要がある。 具体的には、グループ各社で共通の資産管理システムを導入し、Webサイトの情報を一元的に管理する対策が求められる。

高得点のポイント

  • 資産管理システムを導入することが明記されていること。
  • Webサイトの情報を管理することが示されていること。

(2)

B社のサポート費用の課題について,B社に対して同じ問合せを行わず,問合せ件数を削減するために,A社グループではどのような対策を実施すべきか。セキュアコーディング規約の必須化や開発者への教育以外で,実施すべき対策を,50字以内で具体的に答えよ。

模範解答

B社への問合せ窓口をA社の診断部門に設置し,窓口が蓄積した情報をA社グループ内で共有する。

採点基準(配点 6点)

知識・理解度(内容)(3点)

  • 3: 「問合せ窓口」を診断部門に設置することが明記されている。
  • 1: 窓口の集約について触れているが、設置場所や体制が不明確である。
  • 0: 該当する内容が含まれていない。

論理性(構造)(3点)

  • 3: 窓口に蓄積した情報を「グループ内で共有する」という解決策が論理的に示されている。
  • 1: 情報共有の記述が不十分である。
  • 0: 論理が破綻している。

解説

グループ会社がそれぞれ外部の診断ツールベンダ(B社)に対して個別に問い合わせを行うと、サポート費用が増大するだけでなく、過去の知見がグループ内に蓄積されないという課題が生じる。 セキュアコーディング規約の徹底や教育といった根本的な対策に加えて、運用体制の見直しによる費用削減も重要である。 グループ全体での問い合わせ件数を減らすためには、個別の会社が直接B社に問い合わせるのではなく、グループ内で一度情報を集約する仕組みが必要である。 具体的には、B社への問合せ窓口をA社の診断部門に一本化して設置し、そこで得られた回答やノウハウをナレッジベースなどを用いてA社グループ全体で共有する対策を実施すべきである。 これにより、過去に解決済みの類似した質問への対応が社内で完結し、外部への問い合わせコストを削減できる。

高得点のポイント

  • A社の診断部門に 問合せ窓口 を集約・設置することが記載されていること。
  • 蓄積された情報を A社グループ内で共有する ことが明記されていること。