令和3年度秋期 情報処理安全確保支援士(午後II試験 問1)解説
テーマ: XSS・属性値エスケープ・URLスキーム検証・Content Security Policy・SaaSリスク評価・ISO/IEC 27017・ISO/IEC 27018・SIEM・多要素認証・FIDO
関連記事(ほかの過去問解説を探す)
-
情報処理安全確保支援士 午後試験・過去問解説リンク集
年度・試験区分・大問ごとの解説記事を一覧から選べます。別年度や別問題を続けて学習する場合に利用してください。
この問題の全体像
本問は、協力会社とのファイル受渡しに利用するDシステムを題材に、XSS脆弱性の原因分析とCSPによる多層防御、SaaSへの移行時に必要なリスク評価、SIEMによる不正アクセス検知、IDaaSとFIDOを用いた多要素認証を問う問題です。
前半では、HTML本文とHTML属性値で必要な処理の違い、URLスキームの検証、CSPによるスクリプト制御を扱います。後半では、クラウドサービスの信頼性、国外に保存されるデータの保護、ログ監視の限界、FIDO認証器の運用リスクを整理します。
表記について
「問題文からの引用」は、問題冊子の本文、表又は図から、解答根拠となる箇所を引用形式で示しています。引用後の「着眼点・注目ポイント」で判断方法を整理し、その後に正解と解説を示します。
目次・設問ジャンプ
- 設問1(Dシステムの脆弱性診断)
- 設問2(Dシステムの脆弱性対策)
- 設問3(SaaS移行時のセキュリティ評価)
- 設問4(SIEMによる不正アクセス検知)
- 設問5(IDaaSとFIDOによる多要素認証)
- 問題全体のつながり
- 学習上の重要ポイント
設問1 〔Dシステムの脆弱性診断〕について
1. (1) 図5の空欄 a・b について
問題文からの引用
「図5から、descriptionパラメタの値を画面Bの備考に出力する際には、エスケープ処理が正しく行われており、XSS脆弱性は認められない。」
着眼点・注目ポイント
診断用URL1では、descriptionパラメタに<script>...</script>を指定しています。図5では、タグとして解釈されないよう、<と>が文字参照へ変換されています。各空欄は4字で答えます。
-
正解:
- a:
< - b:
>
- a:
-
解説:
<を<、>を>として出力すると、Webブラウザは<script>をHTMLタグではなく文字列として扱います。図5では、descriptionの値がHTML本文へ出力される際に<と>が文字参照へ変換されています。そのため、入力されたscript要素はHTMLとして解釈されず、HTML本文用のエスケープが機能していると判断できます。
2. (2) 図6・図7の空欄 c について
問題文からの引用
「診断用URL2を入力した時に表示された画面B上で、参考URLのリンクをクリックすると、“XSS!”という内容のダイアログボックスが表示された。」
図7では、refURLパラメタの値が
<a href="...">...</a>の属性値とリンク文字列へ出力されている。
着眼点・注目ポイント
リンクをクリックしたときにスクリプトを実行させるURLスキームを選びます。診断用URL2では、refURLの値がhref属性へそのまま出力されます。そのため、属性の引用符を閉じる攻撃ではなく、リンク先として解釈されたときにスクリプトを実行する値を選びます。
-
正解: エ(
javascript:alert('XSS!'))
選択肢の解説
-
ア(
onmouseover=alert('XSS!')): 不適切です。href属性の値としてそのまま入るだけでは、マウスイベント属性にはなりません。 -
イ(
"><script>alert('XSS!')</script>): 不適切です。属性値を閉じてscript要素を挿入する形ですが、後の診断用URL3と図9から、引用符は"へエスケープされます。 -
ウ(
http:<script>alert('XSS!')</script>): 不適切です。HTTP URLとして正しくありません。また、script要素をリンクのクリックで実行させる値でもありません。 -
エ(
javascript:alert('XSS!')): 正解です。href属性へjavascript:スキームが設定されると、リンククリック時に後続のJavaScriptが実行されます。
診断用URL3の意味: 図9では
"が"へ変換されているため、属性値を閉じてonmouseover属性を追加する攻撃は成立しません。つまり、引用符に対する属性値エスケープは実施されていますが、javascript:という危険なURLスキームを許可していることが脆弱性の原因です。
| 出力箇所 | 必要な対策 | 本問での確認結果 |
|---|---|---|
| HTML本文(description) |
<や>などのHTMLエスケープ |
実施済みで、script要素は成立しない |
| HTML属性値(refURL) | 引用符などの属性値エスケープ |
"への変換を確認 |
| URLとしての値(refURL) | 許可するURLスキームの検証 | 未実施で、javascript:が実行可能 |
設問2 〔Dシステムの脆弱性対策〕について
1. (1) 下線①のUアプリ改修方法について
問題文からの引用
「図3で特定されたXSS脆弱性を解消するためのUアプリの改修」
「refURLパラメタの値を画面Bの参考URLのリンクとして出力する際の処理に問題があり、XSS脆弱性が存在する。」
着眼点・注目ポイント
問題は、javascript:のような危険なスキームをリンク先として出力できる点です。許可するURLスキームをHTTPとHTTPSへ限定します。解答条件は45字以内です。
-
正解:
http://又はhttps://で始まるURLだけを出力するようにする。 -
解説: refURLをHTML属性用にエスケープするだけでは、
javascript:という文字列自体は安全な文字列として残り、リンククリック時に実行されます。そこで、入力値をURLとして検証し、http://又はhttps://で始まる値だけを参考URLのリンクとして出力します。それ以外の値はリンクとして出力しないようにします。
実務上の補足: 試験解答は問題文に沿った前方一致です。実装時はURLを構文解析し、許可するスキーム、必要に応じて接続先ホスト名まで検証する方が堅牢です。
2. (2) 下線②で実行が許可されるスクリプトファイルについて
問題文からの引用
「
Content-Security-Policy: script-src 'self';というヘッダフィールドを、HTTPレスポンスのヘッダに追加することによって、Webブラウザに対して指定したスクリプトファイルの実行だけを許可する。」
着眼点・注目ポイント
CSPのscript-src 'self'における'self'の意味を答えます。解答条件は40字以内です。
- 正解: URLと同じオリジンであるスクリプトファイル
-
解説:
'self'は、対象ページと同じオリジンから取得するスクリプトを許可します。オリジンは、原則としてスキーム、ホスト名、ポート番号の組合せで区別されます。この指定では、画面のURLと同じオリジンに置かれた外部スクリプトファイルの実行が許可されます。
3. (3) 下線③で制限されるスクリプトと変更後の呼出し方法について
問題文からの引用
「Dシステムが用いている正規のスクリプトが意図したとおりに動作するように、実行が制限されてしまうスクリプトの有無を確認し、もしあれば、当該箇所の呼出し方法を変更する必要がある。」
着眼点・注目ポイント
script-src 'self'だけでは、HTML内へ直接記載したインラインスクリプトは許可されません。同じオリジンの別ファイルへ移して読み込みます。
-
正解:
- スクリプト: HTMLファイル中に記載されたスクリプト
- 呼出し方法: スクリプトを別ファイルとして同一オリジンに保存して、HTMLファイルから呼び出す。
-
解説:
<script>...</script>のようにHTML内へ直接記述したスクリプトは、'self'だけでは実行できません。正規のインラインスクリプトがある場合は、内容を別のJavaScriptファイルへ移し、Dシステムと同じオリジンに保存した上で、HTMLファイルのscript要素のsrc属性から読み込みます。
多層防御: CSPはXSSの影響を抑える補助対策です。一部の古いWebブラウザはCSPに対応しないため、Uアプリ側の入力・出力処理の修正も必要です。
| スクリプトの置き方 |
script-src 'self'での扱い |
|---|---|
| HTMLファイル中へ直接記述 | 実行が制限される |
同一オリジンの別ファイルをsrcで指定 |
実行が許可される |
| 別オリジンの外部ファイル | 実行が制限される |
設問3 〔SaaS移行時のセキュリティ評価〕について
1. (1) 空欄 d・e について
問題文からの引用
「クラウドサービスのための [ d ] の実践の規範であるISO/IEC 27017」
「パブリッククラウドにおける [ e ] の実践の規範であるISO/IEC 27018」
着眼点・注目ポイント
ISO/IEC 27017はクラウドサービスの情報セキュリティ管理策、ISO/IEC 27018はパブリッククラウドで処理される個人情報の保護に関する規範です。
-
正解:
- d:ウ(情報セキュリティ管理策)
- e:ア(個人情報保護)
選択肢の解説
- ア(個人情報保護): eの正解です。 ISO/IEC 27018に対応します。
- イ(システム監査): 不適切です。ISO/IEC 27017・27018の空欄には該当しません。
- ウ(情報セキュリティ管理策): dの正解です。 ISO/IEC 27017に対応します。
- エ(審査及び認証): 不適切です。認証取得に関連する語ですが、各規格が扱う実践の規範の内容ではありません。
| 規格 | 本問での位置付け |
|---|---|
| ISO/IEC 27017 | クラウドサービスの情報セキュリティ管理策の実践規範 |
| ISO/IEC 27018 | パブリッククラウドにおける個人情報保護の実践規範 |
2. (2) 下線④のファイル内容保護について
問題文からの引用
「F国では安全保障上の要請があれば、F国内に保存されているデータを、F国政府に強制的に提出させる国内法が存在する。」
「Gサービスを経由して協力会社との間で受け渡すファイルの内容を保護するという観点で、どのような措置が当社として取り得るか」
着眼点・注目ポイント
Gサービス側の暗号化では暗号鍵をG社が管理します。G社が復号可能な状態を避けるため、アップロード前にU社管理の鍵で暗号化します。解答条件は40字以内です。
- 正解: ファイルをU社が管理する鍵で暗号化してからアップロードする。
- 解説: Gサービス上の自動暗号化だけでは、暗号鍵をG社が管理するため、G社側で復号できる可能性があります。U社側で事前に暗号化し、U社が鍵を管理すれば、Gサービス上にはU社の鍵がなければ内容を読めない暗号文が保存されます。
鍵管理の論点: 事前暗号化を採用する場合、協力会社へ安全に鍵を渡す方法、鍵の更新、失効、紛失時の復旧も設計する必要があります。
設問4 〔SIEMによる不正アクセス検知〕について
1. (1) 表4の空欄 f について
問題文からの引用
「利用者IDを固定して、パスワードを総当たりする。」
「一定時間当たりの [ f ] の回数がしきい値を超えたら、不正アクセスとして検知する。」
着眼点・注目ポイント
利用者IDを固定して試行しているため、同一利用者IDでのログイン失敗回数を監視します。解答条件は20字以内です。
- 正解: 同一利用者IDでのログイン失敗
- 解説: 一つの利用者IDに対し、多数のパスワードを試す総当たり攻撃では、同じ利用者IDでログイン失敗が繰り返されます。一定時間内の回数がしきい値を超えたら検知します。
2. (2) 下線⑤で見逃すほかの場合について
問題文からの引用
項番2:「少数のパスワードについて、利用者IDを総当たりする。」
検知方法:「一定時間当たりの同一IPアドレスからの異なる利用者IDによるログイン失敗の回数がしきい値を超えたら、不正アクセスとして検知する。」
着眼点・注目ポイント
項番2では同一IPアドレスを条件にしています。攻撃者が送信元IPアドレスを分散・変更すると、IPアドレスごとの失敗回数がしきい値を超えません。解答条件は40字以内です。
- 正解: アクセス元IPアドレスを変えながら、不正アクセスを続けた場合
- 解説: 複数のIPアドレスから少数ずつ試行されると、一つのIPアドレス当たりの失敗回数はしきい値以下に抑えられます。ログ監視だけでは完全に防げないため、本文ではIDaaSと連携した多要素認証を追加しています。
| 攻撃 | 監視軸 | 見逃しやすい実行方法 |
|---|---|---|
| 一つのIDへ多数パスワードを試す | 同一利用者IDの失敗回数 | 長い時間をかけて少数ずつ試行する |
| 少数パスワードを多数IDへ試す | 同一IPからの異なるIDの失敗回数 | 送信元IPを変更・分散する |
設問5 〔IDaaSとFIDOによる多要素認証〕について
1. (1) 空欄 g について
問題文からの引用
「攻撃者が、[ g ]するための特別なサーバをインターネット上に用意し、何らかの方法で被害者をそのサーバに誘導し、認証情報を不正に入手して悪用するという攻撃を防御するため」
図10では、署名Mの生成と検証にWebブラウザがアクセスしているWebサイトのオリジンが使われている。
着眼点・注目ポイント
攻撃者のサーバは、被害者のWebブラウザとKサービスの間で認証メッセージを中継し、被害者をだまして認証させようとします。解答条件は20字以内です。
- 正解: メッセージをKサービスとの間で中継
- 解説: FIDOでは、認証器の署名にアクセス中のWebサイトのオリジンが結び付けられます。攻撃者サイトへ誘導された場合、署名に含まれるオリジンがKサービスのものと一致しないため、Kサービス側の検証に失敗します。これにより、攻撃者のWebサイトを経由して認証メッセージを中継するフィッシング攻撃を防ぎます。
2. (2) 表7の空欄 h~k について
問題文からの引用
スマートフォン及びOS内蔵の生体認証機能:「認証器の使用時に [ h ] が必要なので、不正利用される可能性は低い。」
「個人所有のスマートフォン [ i ] では、退職時又は退職後直ちに、[ j ]する必要がある。」
USB接続外部認証器:「第三者による不正利用を防ぐために、直ちに [ k ]する必要がある。」
着眼点・注目ポイント
表5の利用者確認、表6の認証器所有者、表7の退職・紛失時の運用を対応付けます。各空欄は10字以内です。
-
正解:
- h:生体認証
- i:Kサービス
- j:アカウントを削除
- k:アカウントを無効に
- 解説: スマートフォンとOS内蔵の生体認証機能は、認証器の使用時に生体認証による利用者確認を行います。このため、端末やPCだけを第三者が入手しても不正利用される可能性を下げられます。退職者が個人所有スマートフォンを使っていた場合でも、Kサービスのアカウントを削除すればEシステムへアクセスできません。USB認証器の紛失・盗難時は、対応するアカウントを直ちに無効化します。
| 認証器 | 認証器使用時の確認 | 主な運用リスク | 対策 |
|---|---|---|---|
| スマートフォン | 生体認証 | 個人所有端末を退職後も保持 | Kサービスのアカウントを削除 |
| USB接続外部認証器 | 利用者確認なし | 紛失・盗難時に第三者が利用 | アカウントを直ちに無効化 |
| OS内蔵の生体認証機能 | 生体認証 | 休眠アカウントの悪用 | PCログイン用アカウントを削除 |
削除と無効化の対象: jは、退職者が利用していたKサービスのアカウントを削除する対応です。kは、USB認証器の紛失・盗難時に、対応するアカウントを直ちに無効化して認証を止める対応です。設問では対象となる状況が異なるため、公式解答例の表現を区別して記述します。
3. (3) 下線⑥でOS内蔵の生体認証機能を選んだ理由について
問題文からの引用
「Dシステムの利用規約では、ファイル受渡し用PCには、各協力会社の社内への設置…を求めている。また、Dシステムには、ファイル受渡し用PCからだけアクセスすることを求めている。」
表5:「OS内蔵の生体認証機能」は、KサービスにアクセスするPCとの組合せが限定される。
着眼点・注目ポイント
従来のDシステムで求めていた「指定PCからだけアクセス」という要件を、認証器とPCの組合せ制限によって技術的に実現できます。解答条件は50字以内です。
- 正解: Gサービスへのアクセスを、ファイル受渡し用PCからのアクセスだけに限定できるから
- 解説: Gサービス自体には送信元IPアドレス制限がありません。しかし、OS内蔵の生体認証機能は利用するPCとの組合せが限定されるため、Kサービスでの認証をファイル受渡し用PCに結び付けられます。その結果、Eシステムへのアクセスを指定PCだけに限定し、Dシステムの利用規約で求めていた要件を技術的に実現できます。
問題全体のつながり
- DシステムのXSS診断で、descriptionは正しくエスケープされる一方、refURLに危険な
javascript:スキームを指定できることが判明します。 - UアプリでURLスキームを制限し、CSPの
script-src 'self'を追加して多層防御します。 - SaaS移行では、ISO/IEC 27017などの認証、国外保存データ、暗号鍵の管理主体を評価します。
- GサービスのログをSIEMへ取り込みますが、低速な攻撃や送信元分散による検知回避が残ります。
- IDaaSとFIDOを導入し、オリジンに結び付いた認証と多要素認証でなりすましを抑えます。
- OS内蔵の生体認証機能を選び、ファイル受渡し用PCだけにアクセスを限定します。
学習上の重要ポイント
1. エスケープだけで全てのXSSを防げるとは限らない
HTML属性として安全に出力できても、javascript:のような危険なURLスキームを許可すればXSSが成立します。出力文脈に応じたエスケープと、値の意味に応じた許可リスト検証を組み合わせます。
2. CSPはアプリ改修の代替ではなく多層防御
script-src 'self'はスクリプトの実行元を制限し、インラインスクリプトを止めます。ただし、CSP非対応ブラウザや設定不備も考慮し、脆弱な出力処理そのものも修正します。
3. SaaSの暗号化では鍵の管理主体を確認する
保存時暗号化があっても、鍵をサービス提供者が管理する場合、利用者だけが復号可能な状態とは限りません。必要に応じてアップロード前に自社管理鍵で暗号化します。
4. ログ検知には回避パターンがある
しきい値ベースの検知は、低速化や送信元分散で回避される可能性があります。ログ監視だけに依存せず、多要素認証で攻撃の成功自体を難しくします。
5. FIDOはオリジンへ認証を結び付ける
認証器による署名にアクセス先オリジンを含めるため、攻撃者サイトで生成した認証結果を正規サービスへ転用しにくくなります。
記述式設問の解答作成ポイント
-
設問2 (1): 単に「エスケープする」ではなく、
http://又はhttps://だけを出力するというURLスキームの制限を書きます。 - 設問2 (3): 制限されるスクリプトと、変更後の呼出し方法を分けて答えます。
- 設問3 (2): 「暗号化」だけでなく、U社が管理する鍵を使い、アップロード前に暗号化することを含めます。
- 設問4 (2): 検知回避の原因である「アクセス元IPアドレスを変える」を明記します。
- 設問5 (3): 生体認証の強さではなく、アクセスをファイル受渡し用PCだけに限定できる点を答えます。
解答一覧
-
設問1 (1): a
<、b> -
設問1 (2): c エ(
javascript:alert('XSS!')) -
設問2 (1):
http://又はhttps://で始まるURLだけを出力するようにする。 - 設問2 (2): URLと同じオリジンであるスクリプトファイル
- 設問2 (3): HTMLファイル中に記載されたスクリプト。別ファイルとして同一オリジンに保存し、HTMLファイルから呼び出す。
- 設問3 (1): d ウ、e ア
- 設問3 (2): ファイルをU社が管理する鍵で暗号化してからアップロードする。
- 設問4 (1): f 同一利用者IDでのログイン失敗
- 設問4 (2): アクセス元IPアドレスを変えながら、不正アクセスを続けた場合
- 設問5 (1): g メッセージをKサービスとの間で中継
- 設問5 (2): h 生体認証、i Kサービス、j アカウントを削除、k アカウントを無効に
- 設問5 (3): Gサービスへのアクセスを、ファイル受渡し用PCからのアクセスだけに限定できるから
関連記事
-
情報処理安全確保支援士 午後試験・過去問解説リンク集
年度・試験区分・大問ごとの解説記事を一覧から選べます。
参照資料
- IPA「令和3年度秋期 情報処理安全確保支援士試験 午後II試験 問1」(問題文)
- IPA「令和3年度秋期 情報処理安全確保支援士試験 解答例」(問1の解答例・出題趣旨)