この記事は,令和7年度 秋期 情報処理安全確保支援士試験 午後問題 問1の解答速報です.
各解答予想,解説につきましては,独自の見解(予想)です.正確性を保証するものではありませんので,ご了承ください.(大手予備校の解答速報やIPAの公式解答例が公表されるまでの繋ぎとして,一参考程度にご覧ください.)
情報処理安全確保支援士試験に向けて勉強されている方の参考になれば幸いです.
本記事における出典:令和7年度 秋期 情報処理安全確保支援士試験 午後 問1
IPA(問題冊子・解答例・採点講評)のリンク
本記事内の解答例については,全てIPA公式からの引用になります.
設問1 本文中の a, b に入れる適切な字句
図1にあるSサービスのHTTPレスポンスヘッダーの例を参考に,空欄a,bに当てはまる字句(“できる”,“できない”のいずれか)を答える問題です.
・Sサービス以外のドメインからのリソースの読込み:a
・scriptタグに直接記述されたスクリプトの実行:b
解答例
・a:できない
・b:できない
解説
Sサービス以外のドメインからのリソースの読み込み(a)について,Content-Security-Policyのdefault-src 'self' により,Sサービス(同一オリジン)以外のドメインからの読み込みは原則禁止されます.
従って,空欄aはできないが適切であると考えられます.
scriptタグに直接記述されたスクリプトの実行(b)について,図1を参照する限り,unsafe-inline が指定されていません.従って,空欄bはできないが適切であると考えられます.
設問2 〔インシデントの発生とその調査〕について
一般利用者(権限)であった元従業員ZのローカルPC上に,元従業員Zが割り当てられていなかったプロジェクトのファイルが保存されていた(≒ 認証・認可の不備が疑われる)インシデントのようです.
(1) 図3のスクリプトについて
問題冊子5ページ中にある,図3のスクリプトは問題冊子3ページにある表1のどの機能を悪用したものか? という問題です.
解答予想
ロール管理
解説
図3の整形済みスクリプトの2行目・7行目に注目してみます.特に気になるのが以下の処理記述です.
const response = await fetch ("management/role");
await fetch("management/roleset", { ...呼び出している名称からして,既にロール管理系であることは察しが付くかと思います.
念のため,表1の「Sサービスの主な機能(抜粋)」を参照してみましょう.
「ロール管理」の行を見てみると,備考欄にはやはり「パス “management/role”」や「パス “management/roleset”」のような記述があります.
よって,悪用されたのはロール管理(機能)であると結論付けられます.
(2) 図4中の c に入れる適切なタスク項目
解答例
タスク名
解説
空欄dとセットで考えてみましょう.
まず,図2のHTMLソースを見てみましょう.期限切れタスク一覧に不審な文字列「個人タスク
<script src=”/files/F1234567890.xlsx”></script>」があります.
順番は前後しますが,空欄dには「個人タスク <script src=”/files/F1234567890.xlsx”></script>」(便宜上,一部を全角にしています.)が入ることが分かります.
続いて,表1のタスク管理の行を見てみましょう.「タスクには,次の項目を設定する。 ・タスク名 ・タスクの詳細説明 (後略)…」とあります.箇条書きの項目内で,空欄cに入りそうなのはタスク名であることが分かります.
表1最終行の記述「未完了のタスクのうち締切日を過ぎたものは,プロジェクト進捗管理画面にそのタスク名と締切日からの経過日数が表示される。」から裏付けが取れます.
(3) 図4中の d に入れる適切な文字列
解答例
個人タスク <script src=”/files/F1234567890.xlsx”></script>
解説
省略(前問の解説に,本問の解説を併記しておりますので,そちらをご参照ください.)
注)上記の解答例は,便宜上,一部の文字を全角にしています.
(4) 図4中の e~g に入れる適切な字句
これまでの流れで,図4の3~6(空欄e~g 相当)には,「何者かが特定の条件下でプロジェクト進捗管理画面にアクセスしたところ,元従業員Zの利用者IDに対するロールが一般利用者→管理者にオーバライドされた」旨が入ることが推察できます.
解答例
e:管理者
f:タスクの締切日を過ぎる。
g:利用者のロールを管理者に設定する。
解説
空欄 e について,表1よりロール管理権限を持つのは管理者であることが読み取れます.従って,空欄 e に入る字句として適切なものは,管理者であることが分かります.
空欄 f について,表1の最終行を見てみると,「未完了のタスクのうち締切日を過ぎたものは,プロジェクト進捗管理画面にそのタスク名と締切日からの経過日数が表示される。」とあります.
従って,空欄 f には,「タスクの締切日を過ぎる。」が入ります.
空欄 g について,図3(スクリプト)中のリクエスト Bodyを見てみると,“is_admin”フラグが1にセットされています.表1のロール管理に関する行の記述「(前略)パラメータ is_admin は指定した利用者のロールに応じて次のいずれかが設定される。 – 管理者:is_admin = 1 」より,空欄 g に入る趣旨としては,「利用者のロールを管理者に設定する。」になります.
(5) 下線①について,具体的な工夫内容
下線①は,問題冊子6ページにあります.
(前略)しかし,このタスクによる攻撃は,CSPの設定で防御できていた。
Uさんは,攻撃者がこの失敗の原因を分析し,失敗したときに使用した文字列に ① 工夫を加えることによって図 4の項番2の文字列を作成し,攻撃を成功させたと推測した。
解答例
図3のスクリプトをSサービス内にアップロードする工夫
解説
本問を解くにあたっては,設問1での状況把握並びに知識が必要になりますので,ここで改めて確認しておきましょう.
設問1より,SサービスではCSPの設定等により,Sサービス以外のドメインからのリソースの読込み&scriptタグに直接記述されたスクリプトの実行が不可能であることが分かります.
つまり,
・攻撃者がWebサーバを用意し,そこに攻撃用スクリプトを設置した上で,Sサービスから攻撃用スクリプトを読み込む.
・Sサービス内の入力フォームに攻撃用スクリプトを直書きする.
という2つの方法が封じられている状態です.
そこで,攻撃者は正当なExcelファイルを装って,(実体は攻撃スクリプトを)Sサービス内にアップロードしたと推測できます.
設問3 〔インシデント対応・攻撃への対策〕
(1) 空欄 h に入れる追加すべき処理
アップロードされたファイルが許可された拡張子であることのチェックに加え,どのような処理を追加すべきか? という問題です.
解答例
アップロードされたファイルの形式が拡張子と整合しているかをチェックする。
解説
解答の要点は,前問の解説の「攻撃者は正当なExcelファイルを装って,(実体は攻撃スクリプトを)Sサービス内にアップロードしたと推測できます」という部分です.
本件のように,正当なExcelファイルを装って,攻撃スクリプトをアップロードする攻撃は単なる拡張子(ホワイトリスト)チェックだけでは防げません.
ファイルの中身と拡張子の整合まで含めて,チェックを通す必要があります.
(2) 本文中の i に入れる適切な機能名
攻撃スクリプトを含むHTMLが利用者のブラウザ上に表示される脆弱性が無いか,Sサービス全体を確認したところ,問題は1ヶ所のみだったので,表1の機能のうち, i について,② 必要な処理を追加したとのことです.
解答例
プロジェクト進捗管理
解説
「本件インシデント(図4の項番4)以外で同様の脆弱性は発見されなかった」と読み取れますので,今回のインシデントが発生したプロジェクト管理機能について,必要な処理を施せばよいということになります.
(3) 下線②について,追加すべき必要な処理
「攻撃スクリプトを含むHTMLが利用者のブラウザ上に表示される脆弱性」への対策として,どのような措置を講じればよいか? という問題です.
解答例
出力時にエスケープ処理を施す。
解説
本問のキーワードである「エスケープ処理」は,ここ数年の情報処理安全確保支援士試験の午後問題で頻出となっています.
直近で出題された過去問を以下に示しますので,併せてご覧ください.
エスケープ処理:プログラミング言語において,特別な意味を持つ文字(本問でいう “<” や “>” など)を意味を持たない(≒ 無害な)別の文字に置き換えること.
例えば, HTMLにおける“<”は < に, “>”は > に 置き換えられる.
設問4 本文中の j に入る適切な検査方法
図4中の項番4にあるような脆弱性診断ツールXで検知されないものであっても,検知できる可能性のある検査として,SASTの他に何が挙げられるか? という問題です.
解答例
Sサービスの仕様を理解した専門家による脆弱性検査
解説
まずは,診断ツールXとSASTについて,おさらいしておきましょう.
診断ツールXについては,問題冊子4ページ上部に以下のような記述があります.
診断ツールXは,送信したリクエストとそれに対するレスポンスから脆弱性を検出する。
この記述から,診断ツールXはDAST(動的アプリケーションセキュリティテスト)であると読み取れます.つまり,稼働(実行)中のアプリケーションに対して疑似的な攻撃を行い,その挙動をもとに脆弱性を検出するというものです.
これと対になるのが,問題冊子7ページに記述されているSAST(静的アプリケーションセキュリティテスト)です.こちらは,アプリケーションを実行せずに,ソースコードを解析することで脆弱性を検出するものになります.
DASTとSASTは,お互いに拾いきれなかった脆弱性を補い合う相補的な関係ではありますが,両者をもってしても,ビジネスロジックに起因する脆弱性検出等は難しいのが現状です.
DAST・SASTツールは,テストの網羅性や効率性に優れる一方,ビジネスロジックのような柔軟性・独自性のあるものについては,やはり人間(専門家)によるチェックが向いています.

