‹ ぱすてく

情報処理安全確保支援士試験

平成29年度 春期 午後Ⅰ(旧試験)

平成29年度 春期に実施された情報処理安全確保支援士試験 午後Ⅰの全3問(記述式)の全設問に,運営者が独自に書いた解説を付けています。事例本文のどこが根拠になるかを示し,IPA の解答例・採点講評と並べています。

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

この年度を解いてみる

問1 社内で発生したセキュリティインシデント

社内で発生したセキュリティインシデントに関する次の記述を読んで,設問1~3に答えよ。

D 社は,従業員数 100 名のシステム開発会社である。D 社のネットワーク構成を図1に示す。

インターネットが FW(ファイアウォール)に接続され,FW の先にサーバセグメント 192.168.1.0/24 と PC セグメント 192.168.0.0/24 がある。サーバセグメントには L2SW(レイヤ2スイッチ)があり,LDAP サーバと CRM サーバ(顧客関係管理サーバ)がつながる。PC セグメントには L2SW があり,管理用 PC と複数の PC がつながる。各機器の MAC アドレスと IP アドレスは次のとおり。(ア)FW のサーバセグメント側:MAC yy:yy:yy:bb:bb:fe,IP 192.168.1.254。(イ)LDAP サーバ:MAC zz:zz:zz:bb:bb:01,IP 192.168.1.1。(ウ)CRM サーバ:MAC zz:zz:zz:bb:bb:02,IP 192.168.1.2。(エ)FW の PC セグメント側:MAC yy:yy:yy:aa:aa:fe,IP 192.168.0.254。(オ)管理用 PC:MAC xx:xx:xx:aa:aa:01,IP 192.168.0.1。(カ)PC(1台目):MAC xx:xx:xx:aa:aa:02,IP 192.168.0.2。(キ)PC(最後の1台):MAC xx:xx:xx:aa:aa:c8,IP 192.168.0.200。凡例:FW:ファイアウォール,L2SW:レイヤ2スイッチ,CRMサーバ:顧客関係管理サーバ。注記 192.168.0.0/24,192.168.1.0/24 は,ネットワークアドレスを示す。
図1 D 社のネットワーク構成

D 社のネットワークでは静的に IP アドレスが付与され,各セグメント間の通信はステートフルパケットインスペクション型の FW で制限されている。FW のフィルタリングルールを表1に示す。

列は項番,送信元,宛先,サービス,動作,ログの記録。項番1:送信元 PC セグメント,宛先 インターネット,サービス HTTP,HTTP over TLS,動作 許可,ログの記録 する。項番2:PC セグメント,LDAP サーバ,LDAP,許可,しない。項番3:PC セグメント,CRM サーバ,HTTP over TLS,許可,する。項番4:管理用 PC,サーバセグメント,SSH,許可,する。項番5:PC セグメント,サーバセグメント,全て,拒否,する。(項番6~19は省略)。項番20:全て,全て,全て,拒否,しない。注記 項番が小さいルールから順に,最初に一致したルールが適用される。
表1 FW のフィルタリングルール

従業員には,個人ごとに PC と利用者 ID が割り当てられており,自身の PC 上では,自身の利用者 ID に対して管理者権限が付与されている。利用者 ID は,LDAP サーバで一元管理されており,PC にログインする際,LDAP サーバで利用者認証が行われる。D 社の顧客情報は全て CRM サーバに保管されており,営業業務に携わる従業員は,PC から Web ブラウザで CRM サーバにアクセスして,顧客情報の登録・参照を行っている。

サーバ及び FW は,入退室管理されたサーバルーム内に設置されている。利用者 ID 作成などのサーバの運用は,サーバ管理者が,事前申請をした上で,管理用 PC から SSH でサーバにログインして行っている。SSH でログインする際も PC にログインする際と同様に,LDAP サーバで利用者認証が行われる。

D 社では,事前申請なしで CRM サーバへの SSH によるログインがあった場合,そのことを日次のバッチ処理によって顧客情報管理責任者である N 部長に電子メールで通知する仕組みを導入している。通知にはログイン時刻,SSH の接続元 IP アドレス及び利用者 ID が記載される。

〔セキュリティインシデントの発生〕

ある日,サーバ管理者の Y 主任の利用者 ID で,管理用 PC から CRM サーバにログインしたことを示す通知が N 部長に届いた。N 部長が,Y 主任に確認したところ,その時間帯にはログインしていないとのことであった。

Y 主任が CRM サーバの SSH 認証ログを確認すると,身に覚えがない自分のログイン(以下,不審ログインという)の記録が残っていた。Y 主任の報告を受けて,N 部長は,不正侵入のセキュリティインシデント(以下,インシデントという)が発生したと判断し,インターネット接続を遮断した上で,セキュリティ専門業者 Z 社に調査を依頼した。

Z 社の W 氏が,サーバへの不正侵入の有無,侵入手口及び顧客情報窃取の有無に関する調査を進めることになった。

〔サーバへの侵入手口の調査〕

W 氏は,まずサーバへの不正侵入の有無及び侵入手口の調査を行った。その調査結果を図2に示す。調査結果から,W 氏は図3に示す手順でサーバへの不正侵入が行われていたと推測した。

枠内の箇条書き。・従業員 A さんの PC が遠隔操作型マルウェアに感染していたが,その他のサーバ及び PC のマルウェア感染は確認されなかった。・A さんの PC に,ARP ポイズニングに使われるツールが削除された形跡があった。・不審ログインからログアウトまでの時間帯に,管理用 PC にログイン中の利用者はいなかった。・不審ログインがあった 5 分前に,LDAP サーバの SSH 認証ログに Y 主任の利用者 ID によるログインの記録があった。・LDAP サーバ及び CRM サーバの SSH 認証ログに記録された接続元 IP アドレスは,全て管理用 PC の IP アドレスであった。
図2 W 氏の調査結果
枠内の番号付きの手順。1. マルウェアに感染した A さんの PC を遠隔操作する。2. A さんの PC 上で ARP ポイズニングを用いて,通信を盗聴する。3. A さんの PC 上で通信を盗聴して,LDAP サーバ及び CRM サーバの IP アドレスを特定する。4. A さんの PC 上で LDAP 通信を盗聴して,従業員の利用者 ID とパスワードを収集する。5. A さんの PC から LDAP サーバ及び CRM サーバの SSH ポートへのアクセスを試みるが,アクセスに失敗する。6. A さんの PC 上で通信を盗聴して,管理用 PC の IP アドレスを特定する。7. A さんの PC 上で通信を盗聴して,サーバ管理者である Y 主任の利用者 ID とパスワードを入手する。8. A さんの PC 上で管理用 PC の IP アドレスを詐称して,LDAP サーバ及び CRM サーバの SSH ポートにアクセスし,Y 主任の利用者 ID とパスワードでログインする。
図3 W 氏が推測したサーバへの不正侵入手順(抜粋)

図3の2の通信が盗聴されている時点では,FW,管理用 PC 及び A さんの PC の ARP テーブルが,それぞれ表2~4に示すようになっていたと W 氏は推測した。

列は IP アドレス,MAC アドレス。192.168.0.1:xx:xx:xx:aa:aa:02。192.168.0.200:xx:xx:xx:aa:aa:02。
表2 盗聴されている時点の FW の ARP テーブル(抜粋)
列は IP アドレス,MAC アドレス。192.168.0.254:空欄 a。
表3 盗聴されている時点の管理用 PC の ARP テーブル(抜粋)
列は IP アドレス,MAC アドレス。192.168.0.1:空欄 b。192.168.0.254:空欄 c。
表4 盗聴されている時点の A さんの PC の ARP テーブル(抜粋)

図3の6の特定方法としては,管理用 PC の IP アドレスを総当たりで推測することも考えられるが,そのような方法が採られた場合に FW のフィルタリングルール d によって記録されるはずのログが残っていなかった。このことから,①通信の盗聴によって管理用 PC の IP アドレスが特定されたと W 氏は推測した。

〔顧客情報窃取の有無の調査〕

続いて,W 氏は顧客情報窃取の有無を調査した。CRM サーバの顧客情報を窃取する手口として三つ考えられたので,それぞれ調査を行った。

一つ目は,不正侵入された CRM サーバからの直接の情報窃取である。調査した結果,CRM サーバからの直接の情報窃取はなかったと判断した。

二つ目は,A さんの PC から A さんが CRM サーバにアクセスした際の,A さんの PC 又は通信からの情報窃取である。調査した結果,A さんは CRM サーバにはアクセスしていないことが FW のログ及び聞き取りから確認できた。

三つ目は,その他の PC から CRM サーバにアクセスした際の通信からの情報窃取である。D 社内の Web ブラウザの設定は,②サーバ証明書の検証に失敗した場合は接続しない設定にしている。このことから,CRM サーバにアクセスした際の通信からの情報窃取はなかったと判断した。

W 氏は更に調査した結果,顧客情報の窃取はなかったと N 部長に報告した。

〔セキュリティ対策の実施〕

Y 主任は今回のインシデントを受けて,まず,マルウェアの駆除,ARP テーブルの初期化,全利用者 ID のパスワード変更などの暫定対応を行った。その後,W 氏の助言を受けながら,今回のように社内ネットワークに侵入された場合の被害拡大を防ぐために,社内ネットワークにおいて,二つのセキュリティ対策を実施することにした。

第一に,図3の8を防ぐために,図4のようにネットワーク構成を変更し,表5のように FW のフィルタリングルールを変更することにした。これらの変更によって,③図3の6が行われることも防ぐことができる。また,④仮に図3の6とは異なる方法で管理用 PC の IP アドレスが特定され,図3の8が試みられた場合でも,TCP コネクションの確立を防ぐことができる。

第二に,図3の4を防ぐために,LDAP サーバへの通信では LDAP over TLS を利用することにした。

インターネットが FW に接続され,FW の先に三つのセグメントがある。サーバセグメント:FW から経路(A)で L2SW につながり,L2SW に LDAP サーバと CRM サーバがつながる。サーバ管理セグメント:FW から経路(B)で L2SW につながり,L2SW に管理用 PC がつながる。PC セグメント:FW から経路(C)で L2SW につながり,L2SW に複数の PC がつながる。
図4 変更後の D 社のネットワーク構成
列は項番,送信元,宛先,サービス,動作,ログの記録。項番1:送信元 PC セグメント,宛先 インターネット,サービス HTTP,HTTP over TLS,動作 許可,ログの記録 する。項番2:PC セグメント,LDAP サーバ,LDAP over TLS,許可,しない。項番3:PC セグメント,CRM サーバ,HTTP over TLS,許可,する。項番4:管理用 PC,サーバセグメント,SSH,許可,する。項番5:PC セグメント,サーバセグメント,全て,拒否,する。項番6:PC セグメント,サーバ管理セグメント,全て,拒否,する。項番7:サーバ管理セグメント,脆弱性修正プログラム提供元,ウイルス定義ファイル提供元,HTTP over TLS,許可,する。項番8:サーバ管理セグメント,LDAP サーバ,LDAP over TLS,許可,する。項番9:サーバ管理セグメント,PC セグメント,全て,拒否,する。(項番10~23は省略)。項番24:全て,全て,全て,拒否,しない。注記 項番が小さいルールから順に,最初に一致したルールが適用される。
表5 変更後の FW のフィルタリングルール

これらの対策は N 部長によって承認され,今回と同様のインシデントに対する社内ネットワークのセキュリティ耐性が高まることになった。

出題趣旨(IPA)

標的型攻撃メールなどによる社内PCのマルウェア感染を起点とした,社内ネットワークからの情報漏えいや社内ネットワークでのランサムウェア感染が度々報道されている。そうした事故では,社内ネットワークのセグメントが適切に分離されていなかったことが,被害拡大の要因の一つに挙げられることが多い。本問では,社内ネットワークへの不正侵入インシデントを題材に,ARPポイズニングによる盗聴の原理及びそれに対するセグメント分離の効果を理解し,社内ネットワークの安全性を適切に評価する能力を問う。

採点講評(問全体・IPA)

問1では,ARPポイズニングを題材に,通信の盗聴とその対策方法について出題した。

設問と解答例

設問1(1) 解答欄3つ

表3中の a 及び表4中の b,c に入れる適切な字句を,図1中の機器の MAC アドレスから選び,(ア)~(キ)の記号で答えよ。

〔a〕解答例

  • カ

〔b〕解答例

  • オ

〔c〕解答例

  • エ
解説

本文の根拠

表2

192.168.0.1:xx:xx:xx:aa:aa:02。192.168.0.200:xx:xx:xx:aa:aa:02。

図1

(カ)PC(1台目):MAC xx:xx:xx:aa:aa:02,IP 192.168.0.2。

図2

従業員 A さんの PC が遠隔操作型マルウェアに感染していたが,その他のサーバ及び PC のマルウェア感染は確認されなかった。

図3

2. A さんの PC 上で ARP ポイズニングを用いて,通信を盗聴する。

表2 では,FW の ARP テーブルが管理用 PC(192.168.0.1)も PC(192.168.0.200)も xx:xx:xx:aa:aa:02 に対応付けている。図1 でこの MAC アドレスは(カ)の 192.168.0.2 の PC で,マルウェアに感染していたのは A さんの PC だけなので,(カ)が A さんの PC である。FW は管理用 PC 宛ての通信を A さんの PC へ送っている。逆向きの通信も A さんの PC を通すには,管理用 PC の ARP テーブルで FW(192.168.0.254)を A さんの PC の MAC アドレスに書き換えればよい。よって a は(カ)である。

一方,A さんの PC は盗聴した通信を本来の宛先へ中継しなければ通信が途切れて気付かれる。そのため A さんの PC 自身の ARP テーブルは正しい対応のままで,192.168.0.1 は管理用 PC の本物の MAC アドレス(オ),192.168.0.254 は FW の PC セグメント側の本物の MAC アドレス(エ)になる。b はオ,c はエである。ARP は IP アドレスから MAC アドレスを求める仕組みで(RFC 826),受け取った ARP の内容で対応表を更新するため,偽の ARP を送り付けると書き換えられる。

字数制限の無い記号選択である。講評は a の正答率が b,c より低かったとしている。管理用 PC の ARP テーブルで書き換わるのは“通信相手(ゲートウェイである FW)”の行であり,管理用 PC 自身や攻撃者自身の対応は正しいままと考えると取り違えにくい。(ア)は FW のサーバセグメント側で,PC セグメントの機器の ARP テーブルには現れない。

採点講評(IPA)

設問1(1)はaがb,cと比較して正答率が低かった。他セグメントとの通信を盗聴される場合,ゲートウェイとの間の通信が攻撃者に中継されてしまうことを理解し,ARPの仕組みを理解していれば正答できる問題であった。ARPテーブルがどのように改ざんされると盗聴が成立するのか,理解しておいてほしい。

設問1(2) 解答欄1つ

本文中の d に入れる適切なフィルタリングルールを,表1中の項番1~5から選び,数字で答えよ。

〔d〕解答例

  • 5
解説

本文の根拠

本文(図3の6)

管理用 PC の IP アドレスを総当たりで推測することも考えられるが,そのような方法が採られた場合に FW のフィルタリングルール d によって記録されるはずのログが残っていなかった。

表1 項番5

項番5:PC セグメント,サーバセグメント,全て,拒否,する。

表1 項番4

項番4:管理用 PC,サーバセグメント,SSH,許可,する。

総当たりでは,A さんの PC が送信元 IP アドレスを次々に変えながらサーバの SSH ポートへアクセスし,通る IP アドレスを探すことになる。管理用 PC 以外の IP アドレスを名乗った通信は,表1 の項番4 に一致せず,項番5(PC セグメントからサーバセグメントへの全ての通信を拒否,ログを記録する)で拒否される。外れの試行がたくさん出るので,項番5 のログが大量に残るはずである。d は 5 である。

ログが残っていなかったので,総当たりではなく通信の盗聴で管理用 PC の IP アドレスを知った,と W 氏は推測した(下線①)。項番1~3 は宛先やサービスが SSH の試行とは合わず,項番2 はそもそもログを記録しない。

字数制限の無い数字の設問である。項番4 は当たったときに一致するルールで,外れの試行の多くが記録される先は項番5 である点に注意する。

設問1(3) 解答欄3つ

本文中の下線①について,攻撃者が管理用 PC の IP アドレスを特定するために盗聴したのはどのような通信か。送信元,宛先及びサービスを,それぞれ解答群の中から選び,記号で答えよ。解答群 ア ARP イ A さんの PC ウ FW エ HTTP over TLS オ LDAP カ LDAP サーバ キ SSH ク インターネット ケ 管理用 PC

〔送信元〕解答例

  • ケ

〔宛先〕解答例

  • カ

〔サービス〕解答例

  • キ
解説

本文の根拠

表1 項番4

項番4:管理用 PC,サーバセグメント,SSH,許可,する。

本文

利用者 ID 作成などのサーバの運用は,サーバ管理者が,事前申請をした上で,管理用 PC から SSH でサーバにログインして行っている。

本文

利用者 ID は,LDAP サーバで一元管理されており

図3

6. A さんの PC 上で通信を盗聴して,管理用 PC の IP アドレスを特定する。

PC セグメントからサーバセグメントへの SSH は,表1 の項番4 で管理用 PC にだけ許されている。そのため,PC セグメントからサーバへ向かう SSH の通信を盗聴できれば,その送信元 IP アドレスが管理用 PC のものだと分かる。送信元は管理用 PC(ケ),サービスは SSH(キ)である。宛先は,利用者 ID を一元管理し,利用者 ID 作成などの運用で管理用 PC から SSH でログインされる LDAP サーバ(カ)である。

LDAP の通信は全ての PC から LDAP サーバへ流れる(表1 項番2)ので,それを盗聴しても管理用 PC とほかの PC の区別は付かない。区別の決め手は,管理用 PC だけが使うサービスの SSH である。ARP ポイズニングで管理用 PC と FW の間の通信が A さんの PC を経由していれば(設問1(1)),SSH の中身は暗号化されていても,IP ヘッダの送信元・宛先は見える。

字数制限の無い記号選択である。HTTP over TLS はどの PC からも CRM サーバへ流れ,インターネットや FW は SSH の宛先ではない。“盗聴したのはパスワードを得るための LDAP 通信”と考えるとオを選びがちだが,問われているのは IP アドレスを特定するための通信である。

設問2 解答欄2つ

本文中の下線②について,このような設定にすることは,A さんの PC に侵入した攻撃者によって行われるどのような攻撃への対策になるか。攻撃名を 10 字以内で答えよ。また,攻撃に際して詐称される対象の機器名を図1中から選び,答えよ。

〔攻撃名〕解答例

  • 中間者攻撃

〔機器名〕解答例

  • CRMサーバ
解説

本文の根拠

本文(下線②)

D 社内の Web ブラウザの設定は,②サーバ証明書の検証に失敗した場合は接続しない設定にしている。

本文

三つ目は,その他の PC から CRM サーバにアクセスした際の通信からの情報窃取である。

表1 項番3

項番3:PC セグメント,CRM サーバ,HTTP over TLS,許可,する。

A さんの PC は ARP ポイズニングで通信を中継できる位置にいる。そこで攻撃者が CRM サーバになりすまし,ほかの PC からの HTTP over TLS の通信をいったん自分で受けて復号し,改めて本物の CRM サーバへ暗号化して送れば,暗号化された通信でも中身を読める。これが中間者攻撃で,詐称される機器は CRM サーバである。

攻撃者は CRM サーバの正しいサーバ証明書と秘密鍵を持たないので,自分で用意した証明書を出すしかない。Web ブラウザがサーバ証明書の検証に失敗したら接続しない設定なら,なりすましの段階で通信が止まる。TLS ではサーバ証明書でサーバを認証する(RFC 8446)。講評も,サーバ証明書検証などで通信相手の真正性を確かめる必要を挙げている。

攻撃名は 10 字以内で,解答例は 5 字の“中間者攻撃”。講評は正答率が低かったとしている。機器名は図1 の名称どおり“CRMサーバ”と書く。FW や LDAP サーバは,PC が HTTP over TLS で接続する相手ではない。

採点講評(IPA)

設問2は正答率が低かった。中間者攻撃によって,通信を経路の途中で一度復号し,再度暗号化するという形で中継されると,暗号化通信を利用していても通信内容を盗聴され得る。そのような攻撃を防ぐためには,サーバ証明書検証などの手段で通信相手の真正性を確認する必要があることを理解しておいてほしい。

設問3(1) 35字以内

本文中の下線③について,防ぐことができる理由を 35 字以内で具体的に述べよ。

解答例

  • PCセグメント内に管理用PCとサーバ間の通信が流れなくなるから
解説

本文の根拠

本文(下線③)

第一に,図3の8を防ぐために,図4のようにネットワーク構成を変更し,表5のように FW のフィルタリングルールを変更することにした。これらの変更によって,③図3の6が行われることも防ぐことができる。

図4

サーバ管理セグメント:FW から経路(B)で L2SW につながり,L2SW に管理用 PC がつながる。

図3

6. A さんの PC 上で通信を盗聴して,管理用 PC の IP アドレスを特定する。

図4 では管理用 PC がサーバ管理セグメントに移り,管理用 PC とサーバの間の通信は(B)と(A)を通る。PC セグメント(C)には流れなくなるので,PC セグメントにある A さんの PC は,その通信を盗聴できない。図3 の6(盗聴による管理用 PC の IP アドレスの特定)はできなくなる。

ARP はセグメントの中だけで使われる仕組みで,ARP ポイズニングで書き換えられるのは同じセグメントにある機器の ARP テーブルだけである。そのため,セグメントを分けると,ほかのセグメントの機器の通信は A さんの PC を経由させられない。講評も,対象の通信が PC セグメントを通過しなくなり盗聴を防げることがよく理解されていた,としている。

字数は 35 字以内で,解答例は 31 字。“PC セグメント内に”“管理用 PC とサーバ間の通信が”“流れなくなる”の三つをそろえる。“セグメントを分離したから”だけでは,下線③の理由として何が変わったかが伝わらない。

採点講評(IPA)

設問3(1)は正答率が高かった。ネットワークセグメントを分離したことによって,対象通信がPCセグメントを通過しなくなり,盗聴を防げるようになることが良く理解されているようであった。

設問3(2) 解答欄2つ

本文中の下線④について,TCP コネクション確立開始時の SYN パケットと SYN-ACK パケットはそれぞれどのような経路をたどるか。図4中の経路を通過する順に選び,(A)~(C)の記号で答えよ。

〔SYNパケット〕解答例

  • (C)→(A)

〔SYN-ACKパケット〕解答例

  • (A)→(B)
解説

本文の根拠

本文(下線④)

④仮に図3の6とは異なる方法で管理用 PC の IP アドレスが特定され,図3の8が試みられた場合でも,TCP コネクションの確立を防ぐことができる。

図3

8. A さんの PC 上で管理用 PC の IP アドレスを詐称して,LDAP サーバ及び CRM サーバの SSH ポートにアクセスし,Y 主任の利用者 ID とパスワードでログインする。

図4

サーバセグメント:FW から経路(A)で L2SW につながり,L2SW に LDAP サーバと CRM サーバがつながる。

A さんの PC は PC セグメントにあるので,管理用 PC の IP アドレスを詐称した SYN パケットは(C)から FW に入り,(A)を通ってサーバに届く。サーバは SYN-ACK パケットを送信元 IP アドレス,つまり本物の管理用 PC 宛てに返すので,FW はそれをサーバ管理セグメントへ送る。SYN-ACK は(A)から(B)へ進み,A さんの PC には届かない。SYN パケットは“(C)→(A)”,SYN-ACK パケットは“(A)→(B)”である。

TCP のコネクションは SYN,SYN-ACK,ACK の3回のやり取りで確立する。攻撃者は SYN-ACK を受け取れないので,続きを正しく返せず,コネクションは確立しない。図1 の構成では管理用 PC も PC セグメントにあり,ARP ポイズニングで SYN-ACK を横取りできたが,図4 ではそれができなくなった。

字数制限は無く,経路を通過する順に記号で答える。SYN-ACK を“(A)→(C)”と答えるのは,サーバが送信元の実際の位置に返すと考える誤りである。返す先は IP アドレスで決まるので,管理用 PC のあるサーバ管理セグメントになる。

出典:平成29年度 春期 情報処理安全確保支援士試験 午後Ⅰ 問1(表記を一部改変)

問2 Webサイトのセキュリティ対策

Web サイトのセキュリティ対策に関する次の記述を読んで,設問1~3に答えよ。

E 社は,従業員数 200 名の情報サービス事業者である。E 社は,3 年前から Web サイトα(以下,サイトαという)を利用して,次のような機能をもつ会員制の飲食店情報提供サービスを行っている。

サイトαに対する脆弱性修正プログラムの適用や,コンテンツ作成などの日々の作業は,情報提供サービス担当チームが行っている。チームはリーダの Q さんと 5 名のメンバで構成されている。サイトαで稼働している Web アプリケーションソフトウェアは,情報提供サービス担当チームがベンダに開発と保守を委託している。サイトαの画面遷移図を図1に,画面遷移の仕様を表1に示す。

画面遷移図。ログインページから画面遷移(あ)でマイページへ遷移する。ログインページからはパスワード再設定へも遷移する。マイページからは検索ページ,掲示板,会員メニューへ遷移する。掲示板 → 掲示板投稿確認 → 掲示板投稿完了。会員メニューからは次の四つへ遷移する。メールアドレス変更 → メールアドレス変更確認 → メールアドレス変更完了。パスワード変更 →(画面遷移(い))→ パスワード変更完了。プロフィール入力・変更 →(画面遷移(う))→ プロフィール確認 → プロフィール登録完了。退会処理 →(画面遷移(え))→ 退会確認 →(画面遷移(お))→ 退会完了。注記1 ログインページ以外からのマイページへの画面遷移,エラー時の画面遷移,画面を戻るための遷移,ログアウトの画面遷移は省略している。注記2 全画面とも同一ドメイン(www.e-sha.co.jp)で提供されている。
図1 サイトαの画面遷移図(抜粋)
列は画面遷移,PC での操作例,URL 及び POST データ,操作の結果。画面遷移(あ):操作例:利用者 ID(例:user0302)とパスワード(例:aBcD1234)を入力し,ログインボタンを押す。URL:https://www.e-sha.co.jp/login POST データ:action_id=login&user_id=user0302&passwd=aBcD1234 操作の結果:・user_id と,passwd のハッシュ値がサイトαに登録されたものと同じ場合,新しいセッション ID(JSESSIONID)とセッションオブジェクトが取得され,マイページが表示される。JSESSIONID は Cookie に格納される。それ以外の場合,セッション ID とセッションオブジェクトは取得されず,ログインページに戻る。・ログイン記録(利用者 ID と時刻)が取得される。画面遷移(い):操作例:現在のパスワード(例:aBcD1234)と新しいパスワード(例:aBcD5678)を入力し,変更ボタンを押す。新しいパスワードは確認のために,2 回入力する。URL:https://www.e-sha.co.jp/member/changepasswd POST データ:action_id=submit&old_passwd=aBcD1234&new_passwd1=aBcD5678&new_passwd2=aBcD5678 操作の結果:・次を全て満たす場合はパスワードが new_passwd1 の値に変更され,次画面が表示される。- old_passwd のハッシュ値が,サイトαに登録された現在のセッションをもつ利用者のパスワードのハッシュ値と同じである。- old_passwd と new_passwd1 の値が異なる。- new_passwd1 と new_passwd2 の値が同じで,かつ,定められた複雑さを満たす。・それ以外の場合はパスワードが変更されず,エラー画面が表示される。画面遷移(う):操作例:名前(例:Bob)とコメント(例:よろしく)を入力し,確認ボタンを押す。URL:https://www.e-sha.co.jp/member/profile POST データ:action_id=confirm&nickname=Bob&comment=%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F(注1) 操作の結果:・nickname と comment に入力された値がセッションオブジェクトに格納され,次画面が表示される。profile_token が生成されてセッションオブジェクトに格納され,profile_token(例:CACC321A638BBC11DE9352EB8D5E56A3)がプロフィール確認画面の hidden に格納される。・プロフィール入力・変更画面では一部の HTML の要素の入力が許可されている。(許可されている要素:b,font,i,s,sub,sup,u)・コメントに URL を記載するとリンクとして表示される。画面遷移(え):操作例:退会理由(例:特になし)を入力し,退会確認ボタンを押す。URL:https://www.e-sha.co.jp/member/taikai POST データ:action_id=confirm&taikai_message=%E7%89%B9%E3%81%AB%E3%81%AA%E3%81%97(注2) 操作の結果:・taikai_message に入力された値がセッションオブジェクトに格納され,次画面が表示される。taikai_token(例:B582DF03524FBB9DBCCE0BA0610F2EA1)が生成されてセッションオブジェクトに格納され,退会確認画面の hidden に格納される。(注3)
表1 サイトαの画面遷移の仕様(抜粋)
表1の続き。画面遷移(お):操作例:退会ボタンを押す。URL:https://www.e-sha.co.jp/member/taikai POST データ:action_id=submit&taikai_token=B582DF03524FBB9DBCCE0BA0610F2EA1 操作の結果:・taikai_token の値がセッションオブジェクト内の値と同じ場合,退会処理が行われ,次画面が表示される。違う場合,退会処理が行われず,エラー画面が表示される。・退会処理時にセッション ID とセッションオブジェクトが無効にされ,ログアウトされる。注1)“よろしく”を URL エンコードした値 注2)“特になし”を URL エンコードした値 注3)taikai_token の値が 0 になることはない。
表1 サイトαの画面遷移の仕様(抜粋)(続き)

〔利用者からの問合せ〕

ある日,サイトαの利用者 L 氏から,“今朝 9 時にログインし,サイトαを利用していたら,10 時に急にログアウトさせられ,その後ログインできなくなった。パスワードを再設定しようとしたが,エラーが表示され,再設定できない。”という内容のメールが E 社宛てに届き,他にも同様の問合せが数件来た。

情報提供サービス担当チームの X さんがサイトαの会員情報データベースにアクセスし,L 氏の情報を確認したところ,退会処理が完了していた。X さんは,誰かが嫌がらせ目的で L 氏のアカウントで不正ログインし,退会処理を行った可能性を疑った。①X さんは,L 氏に詳細な利用状況を確認し,その確認内容とログイン記録を照合した結果から,L 氏のアカウントは少なくとも今日は不正ログインされていないとの結論に至った。

X さんが,ログインできなくなる前にどのような操作をしたかを L 氏に聞いたところ,サイトα内の掲示板に投稿していた人のプロフィール画面を見て,そこに記載されていたリンクをクリックしたとのことであった。リンク先は,別サイトの URL であり,かつ,X さんが確認した時点ではリンク先は既に削除されていた。

X さんは,今回の事象が起きたのはサイトαに脆弱性があるからかもしれないと考え,セキュリティ専門業者 J 社に Web アプリケーションソフトウェアの脆弱性検査(以下,WebAP 検査という)を依頼することにした。WebAP 検査の結果,脆弱性が二つ(以下,脆弱性1,脆弱性2という)検出された。

〔脆弱性1について〕

脆弱性1は a の脆弱性であった。脆弱性1を確認した手順を表2に示す。

列は項番,手順,画面遷移(お)を試みる際の POST データ,表示された画面。項番1:手順 画面遷移(え)を行った後,画面遷移(お)を試みる。POST データ action_id=submit&taikai_token=B582DF03524FBB9DBCCE0BA0610F2EA1(注1)。表示された画面 退会完了。項番2:画面遷移(え)を行った後,画面遷移(お)を試みる。action_id=submit&taikai_token=0。エラー画面。項番3:画面遷移(え)を行った後,画面遷移(お)を試みる。action_id=submit。退会完了。項番4:画面遷移(え)を経ずに,ログイン後すぐに画面遷移(お)に相当するアクセスを試みる。action_id=submit&taikai_token=0。エラー画面。項番5:画面遷移(え)を経ずに,ログイン後すぐに画面遷移(お)に相当するアクセスを試みる。action_id=submit。エラー画面。注1)画面遷移(え)で生成された taikai_token の値とする。
表2 脆弱性1を確認した手順

次は,X さんが J 社の情報処理安全確保支援士 K 氏から,脆弱性1についての報告を受けた時の会話である。

枠内の HTML(20行)。1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 </head> 5 <body> 6 <iframe src="ifrm1.html" width="1" height="1" name="ifrm1"></iframe> 7 <iframe src="ifrm2.html" width="1" height="1" name="ifrm2"></iframe> 8 <form target="ifrm1" method="POST" action="https://www.e-sha.co.jp/member/taikai"> 9 <input type="text" name="action_id" value="[ e ]"> 10 <input type="text" name="taikai_message" value="OK"> 11 <input type="submit"> 12 </form> 13 <form target="ifrm2" method="POST" action="https://www.e-sha.co.jp/member/taikai"> 14 <input type="text" name="action_id" value="[ f ]"> 15 <input type="submit"> 16 </form> 17 <script>setTimeout('document.forms[0].submit()',0);</script> 18 <script>setTimeout('document.forms[1].submit()',1000);</script> 19 </body> 20 </html>
図2 退会処理が行われてしまう HTML

〔脆弱性2について〕

脆弱性2は“クロスサイトスクリプティング”であった。脆弱性2を確認したのはプロフィール入力・変更画面であった。次は K 氏と X さんとの会話である。

X さんは,二つの脆弱性について,対策をベンダに依頼した。対策後,J 社に WebAP 検査を依頼し,問題がないことを確認した。X さんは,リリース前の WebAP 検査の義務化を Q さんに提案し,採用された。

出題趣旨(IPA)

Webサイトは安全な状態で公開されることが望まれているので,脆弱性対策を積極的に進めている企業が増えてきている。しかし,開発者やシステム管理者の,Webアプリケーションソフトウェアの脆弱性に対する理解が不足しているために,対策しているつもりであっても脆弱性が存在した状態でWebサイトが公開されている場合がある。本問では,クロスサイトリクエストフォージェリを題材に,Webアプリケーションソフトウェアに潜む脆弱性を理解し,対策が適切に実装されているかを評価する能力を問う。

採点講評(問全体・IPA)

問2では,Webサイトにおける脆弱性を題材に,脆弱性に関する知識とその対策方法について出題した。全体として正答率は低かった。

設問と解答例

設問1 解答欄2つ

本文中の下線①について,L 氏のアカウントが不正ログインされていないとの結論に至るには,L 氏に確認した内容から分かる何の値と,ログイン記録から分かる何の値を抽出して,一致していることが確認できればよいか。それぞれ 25 字以内で述べよ。

〔L氏に確認した内容〕解答例

  • L氏が今日ログインしたと言っている回数

〔ログイン記録〕解答例

  • L氏の利用者IDを用いた今日のログイン回数
解説

本文の根拠

表1 画面遷移(あ)

ログイン記録(利用者 ID と時刻)が取得される。

〔利用者からの問合せ〕

“今朝 9 時にログインし,サイトαを利用していたら,10 時に急にログアウトさせられ,その後ログインできなくなった。

本文(下線①)

L 氏のアカウントは少なくとも今日は不正ログインされていないとの結論に至った

ログイン記録に残るのは利用者 ID と時刻だけである。L 氏の利用者 ID による今日のログインが何回記録されているかを数え,L 氏本人が今日ログインしたと言っている回数と一致すれば,L 氏以外の者によるログインは無かったことになる。L 氏に確認するのは“L氏が今日ログインしたと言っている回数”,ログイン記録から抜き出すのは“L氏の利用者IDを用いた今日のログイン回数”である。

L 氏は 9 時にログインし,10 時に急にログアウトさせられて,その後はログインできなくなったと言っている。本人の言う回数より記録が多ければ,誰かが L 氏のアカウントでログインしたことになる。下線①は“少なくとも今日は”と範囲を区切っているので,比べるのは今日のログインに限られる。講評も,何と何の値が一致すればよいかを本文から読み取ってほしかった,としている。

字数はそれぞれ 25 字以内で,解答例は 19 字と 21 字。二つの欄で“今日”“L 氏の利用者 ID”“回数”の対応をそろえる。ログイン記録に無い項目(接続元 IP アドレスなど)は,表1 の仕様では比べられない。

採点講評(IPA)

設問1は,正答率が低かった。ログイン記録が取得する情報から何をL氏に確認すればよいかが分かれば正答できる問題であった。不正ログインされていないことを結論づけるために,何と何の値が一致していることが確認できればよいかを本文中から読み取ってほしかった。

設問2(1) 解答欄1つ

本文中の a に入れる脆弱性の名称を,カタカナ 20 字以内で答えよ。

〔a〕解答例

  • クロスサイトリクエストフォージェリ
解説

本文の根拠

〔脆弱性1について〕

脆弱性1は a の脆弱性であった。

図2

<form target="ifrm1" method="POST" action="https://www.e-sha.co.jp/member/taikai">

表1 画面遷移(え)

taikai_token(例:B582DF03524FBB9DBCCE0BA0610F2EA1)が生成されてセッションオブジェクトに格納され,退会確認画面の hidden に格納される。

L 氏は別サイトのリンクをクリックしただけで,ログイン中の自分のアカウントの退会処理が行われてしまった。図2 の HTML は,別サイトから E 社の退会処理の URL へ POST を送らせるものである。利用者の意図しない処理要求を,ログイン済みの利用者の Web ブラウザから送らせる攻撃なので,脆弱性1 はクロスサイトリクエストフォージェリである。

表1 で画面遷移(え)・(う) が taikai_token・profile_token を生成して hidden に入れ,次の画面遷移でその値を照合しているのは,この攻撃への対策(秘密の値をフォームに埋め込んで照合する方法)である。K 氏が言うとおり対策は試みられていたが,実装に不備があった(設問2(2))。

字数は 20 字以内のカタカナで,解答例は 17 字の“クロスサイトリクエストフォージェリ”。カタカナで答える指示なので“CSRF”とは書かない。クロスサイトスクリプティングと取り違えないこと(そちらは脆弱性2)。

設問2(2) 解答欄1つ

本文中の b に入れる表2中の項番を 1~5 から選び,数字で答えよ。

〔b〕解答例

  • 3
解説

本文の根拠

表2 項番3

項番3:画面遷移(え)を行った後,画面遷移(お)を試みる。action_id=submit。退会完了。

図2 9~10行目

<input type="text" name="action_id" value="e"> 10 <input type="text" name="taikai_message" value="OK">

図2 14行目

<input type="text" name="action_id" value="f">

図2 17~18行目

<script>setTimeout('document.forms[0].submit()',0);</script> 18 <script>setTimeout('document.forms[1].submit()',1000);</script>

図2 は,1つ目のフォームで action_id と taikai_message を送って画面遷移(え) を行わせ,1秒後に2つ目のフォームで action_id だけを送って画面遷移(お) を試みさせる。2つ目のフォームには taikai_token が無い。これは表2 の項番3((え) の後,action_id=submit だけで (お) を試みる)と同じで,表示された画面は退会完了である。b は 3 である。

攻撃者は L 氏のセッションで生成された taikai_token の値を知り得ないので,項番1 のように正しいトークンを送ることはできない。項番2・4 は taikai_token=0 でエラーになる。ところが項番3 のように taikai_token のパラメータ自体を送らないと,照合をすり抜けて退会処理が行われてしまう。これが K 氏の言う実装の不備である。

字数制限の無い数字の設問である。項番5 も action_id=submit だけだが,(え) を経ていないのでエラーになる。図2 は先に (え) を行わせているので,項番5 ではなく項番3 に当たる。

設問2(3) 解答欄2つ

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

〔c〕解答例

  • 現在のパスワード

〔d〕解答例

  • 知り得ない
解説

本文の根拠

表1 画面遷移(い)

old_passwd のハッシュ値が,サイトαに登録された現在のセッションをもつ利用者のパスワードのハッシュ値と同じである。

K 氏の発言

パスワード変更画面では表1にあるように,c を入力させる仕様です。c は攻撃者が d 情報であることを前提としてよいので,問題ありません。

表1 の画面遷移(い) では,現在のパスワード(old_passwd)を入力させ,そのハッシュ値が登録された値と一致しなければパスワードを変更しない。攻撃者が別サイトに用意したフォームでパスワード変更の要求を送らせようとしても,利用者の現在のパスワードを知らなければ正しい要求を作れない。c は“現在のパスワード”,d は“知り得ない”である。

クロスサイトリクエストフォージェリの対策は,攻撃者が知り得ない値を要求に含めさせ,サーバ側で照合することである。退会処理では taikai_token がその役目を担うが,パスワード変更では現在のパスワードがトークンの代わりになる。講評も,現在のパスワードを入力させることがなぜ CSRF の対策になるかを理解していれば正答できる,としている。

字数はそれぞれ 10 字以内で,解答例は c が 8 字,d が 5 字。d は空欄の後ろの“情報であることを前提としてよい”に続くように“知り得ない”と書く。“新しいパスワード”は攻撃者が自分で決められる値なので,対策にならない。

採点講評(IPA)

設問2(3)dは,パスワード変更画面で現在のパスワードを入力させることがなぜCSRF(クロスサイトリクエストフォージェリ)の対策になるかを理解していれば正答できる問題であった。CSRFの対策についてよく理解しておいてほしい。

設問2(4) 解答欄2つ

図2中の e,f に入れる適切な文字列を,それぞれ 10 字以内で答えよ。

〔e〕解答例

  • confirm

〔f〕解答例

  • submit
解説

本文の根拠

表1 画面遷移(え)

POST データ:action_id=confirm&taikai_message=%E7%89%B9%E3%81%AB%E3%81%AA%E3%81%97(注2)

表1 画面遷移(お)

POST データ:action_id=submit&taikai_token=B582DF03524FBB9DBCCE0BA0610F2EA1

表2 項番3

項番3:画面遷移(え)を行った後,画面遷移(お)を試みる。action_id=submit。退会完了。

図2 の1つ目のフォームは taikai_message を含むので,表1 の画面遷移(え) に当たる。(え) の POST データの action_id は confirm なので,e は“confirm”である。2つ目のフォームは action_id だけを送るので,表2 項番3 の画面遷移(お) に当たり,f は“submit”である。

1つ目のフォームの送信で,L 氏のセッションオブジェクトに taikai_token が生成される。1秒後に2つ目のフォームで taikai_token を付けずに action_id=submit を送ると,実装の不備によって退会処理が行われる(設問2(2))。iframe は幅・高さとも 1 なので,利用者には送信の結果が見えない。

字数はそれぞれ 10 字以内で,解答例は e が 7 字,f が 6 字。表1 の値をそのまま小文字で写す。action_id=confirm は (う) にも使われるが,(う) の送り先は /member/profile で,図2 の送り先は /member/taikai である。

設問3(1)

本文中の下線②に該当する属性を解答群の中から全て選び,記号で答えよ。解答群 ア accesskey イ class ウ hidden エ id オ lang カ onclick キ onmouseover ク title

解答例

  • カ,キ
解説

本文の根拠

K 氏の発言

しかし,例えば“<b>”タグ中に,②特定の属性を指定することによってスクリプトの実行が可能です。

表1 画面遷移(う)

プロフィール入力・変更画面では一部の HTML の要素の入力が許可されている。(許可されている要素:b,font,i,s,sub,sup,u)

HTML の要素には,利用者の操作などをきっかけに,属性の値に書いたスクリプトを実行するイベントハンドラの属性がある。解答群のうち onclick(クリックされたとき)と onmouseover(マウスポインタが重なったとき)がこれに当たる。下線②の属性はカとキである。例えば <b onmouseover="…"> と書けば,b 要素の入力しか許されていなくてもスクリプトが動く。

サイトαは使える要素を b,font など7種類に制限しているが,その要素に付ける属性までは制限していなかった。イベントハンドラの属性は b 要素にも付けられる(WHATWG HTML Living Standard の“event handler content attributes”)。

“全て選び”の設問で,解答例は“カ,キ”。片方だけでは足りない。accesskey,class,hidden,id,lang,title も HTML の属性だが,ショートカットキー,スタイルの分類,非表示,識別子,言語,補足情報を指定するもので,スクリプトは実行しない。

設問3(2) 解答欄1つ

本文中の g に入れる攻撃の名称を 15 字以内で答えよ。

〔g〕解答例

  • セッションハイジャック
解説

本文の根拠

K 氏の発言

スクリプト実行の結果,Cookie の属性の設定によっては,Cookie の情報が盗まれます。これを用いて,g が行われ,勝手にプロフィールを閲覧されたり,変更されたりするおそれがあります。

表1 画面遷移(あ)

JSESSIONID は Cookie に格納される。

サイトαのセッション ID(JSESSIONID)は Cookie に格納されている。スクリプトで Cookie を盗まれると,攻撃者はそのセッション ID を自分の Web ブラウザに設定して,利用者になりすませる。セッション ID を奪ってセッションを乗っ取る攻撃なので,g はセッションハイジャックである。

本文が“Cookie の属性の設定によっては”と断っているのは,Cookie に HttpOnly 属性を付ければ,スクリプトから Cookie を読めなくできるからである(RFC 6265)。HttpOnly 属性が付いていなければ,クロスサイトスクリプティングで盗まれたセッション ID を使って,プロフィールを勝手に閲覧・変更される。

字数は 15 字以内で,解答例は 11 字。“セッション ID の窃取”は乗っ取りの手段であって,空欄の“が行われ,勝手にプロフィールを閲覧されたり”に続く攻撃の名称としては“セッションハイジャック”と書く。

設問3(3) 解答欄1つ

本文中の h に入れる仕様を 25 字以内で具体的に述べよ。

〔h〕解答例

  • タグの中で利用できる属性を制限する
解説

本文の根拠

X さんの発言

では,利用者が入力できる HTML の要素の制限は変えずに,h という仕様に変更したいと思います。

K 氏の発言

しかし,例えば“<b>”タグ中に,②特定の属性を指定することによってスクリプトの実行が可能です。

スクリプトが実行されたのは,許可された要素(b など)のタグの中に,onclick などのイベントハンドラの属性を書けたからである。要素の制限は変えないと X さんが言っているので,残る手段はタグの中で使える属性を制限することである。h は“タグの中で利用できる属性を制限する”である。

サイトαは一部の HTML の要素の入力を許す仕様なので,全ての < や > をエスケープすると,b や font などの装飾も使えなくなる。講評は,エスケープ処理などの一般的な XSS 対策を答えた受験者が多かったが,仕様によっては一般的な対策が適切とは限らない,としている。

字数は 25 字以内で,解答例は 17 字。“要素の制限は変えずに”に続くので,制限する対象を“属性”と明記する。“イベントハンドラの属性を禁止する”のように,問題の属性を絞って書く答えも趣旨は同じである。

採点講評(IPA)

設問3(3)は,正答率が低かった。利用者が一部のHTMLの要素の入力を許可されているという仕様を考慮した対策を期待したが,エスケープ処理を行うなどの一般的なXSS(クロスサイトスクリプティング)の対策を解答した受験者が多かった。アプリケーションソフトウェアの仕様によっては,一般的な対策が必ずしも適切な対策とはならないことを理解しておいてほしい。

出典:平成29年度 春期 情報処理安全確保支援士試験 午後Ⅰ 問2(表記を一部改変)

問3 クラウドサービスの認証連携

クラウドサービスの認証連携に関する次の記述を読んで,設問1~3に答えよ。

F 社は,従業員数 300 名のソフトウェア開発会社である。F 社では,社外のクラウドサービスを試行的に導入し始めており,交通費精算サービス,グループウェアサービス,オンラインストレージサービスの三つを現在利用している。これらのクラウドサービスには,各クラウドサービスの利用者 ID とパスワードを用いてログインする。これらのクラウドサービスは,社内からの利用に限定するという社内ルールを定めている。

従業員が利用する端末は,社内ネットワークに設置されており,ウイルス対策ソフトが導入され,最新のウイルス定義ファイルが毎日適用されている。社外から社内ネットワークへの通信はファイアウォールによって禁止されている。端末からクラウドサービスを利用する際には,プロキシサーバを経由する必要がある。

〔クラウドサービスへの不正アクセス〕

ある日,交通費精算サービスで従業員の振込先口座が勝手に変更されたとの相談が,経理部から情報システム部の C 主任にあった。R さんの振込先口座が F 社指定の銀行以外の口座に変更されていたので,R さんに確認したところ,本人による変更ではないことが分かったとのことであった。

C 主任は,社外の攻撃者による不正アクセスの可能性を考え,交通費精算サービスに記録されているログイン記録を調査した。F 社で利用しているクラウドサービスではログイン記録として,アクセス日時,利用者 ID,接続元 IP アドレス,接続先 URL が記録されている。調査の結果,R さんの利用者 ID によるログイン記録には,接続元 IP アドレスとして,F 社の IP アドレス以外に,海外の IP アドレスが一つあった。R さんに話を聞いたところ,このログインには心当たりがないということであった。R さんに更に詳しく話を聞いたところ,4 月 9 日に交通費精算サービスから登録情報の確認を促す電子メール(以下,メールという)が 1 通,R さんの私用メールアドレスに届いており,R さんが 4 月 10 日にそのメールを自宅で読み,記載内容に従って自宅からログイン操作を行ったことが分かった。そのメールを R さんから転送してもらい,C 主任がメールに記載されていた URL を確認したところ,交通費精算サービスを模したフィッシングサイトであった。C 主任はこのフィッシングサイトから利用者 ID とパスワードが盗まれた可能性が高いと判断した。そこで,R さんがパスワードを使い回している可能性も考慮して,他のクラウドサービスに対する R さんのログイン記録も調査した。その結果,他のクラウドサービスに対する R さんの利用者 ID を用いたログインは,F 社からのものだけであることを確認した。

今回は金銭的な損害に至らなかったが,情報システム部の B 部長は早急な対策が必要と考え,C 主任に暫定対策の実施と根本的な対策の検討を指示した。

〔暫定対策の実施と根本的な対策の検討〕

C 主任はまず,暫定対策として三つの対策を行うことにした。第一に,フィッシングメールに注意するよう従業員に周知した。第二に,F 社で利用している各クラウドサービスに対するログイン記録を C 主任が調査して,①F 社以外からのログインがあった利用者 ID を特定し,その利用者 ID を利用する者にはパスワードを変更させることにした。第三に,F 社以外からのログインを検知できるよう,ログイン記録の監視を行うことにした。C 主任は暫定対策が完了したことを確認し,根本的な対策の検討を開始した。

C 主任は,今回の不正アクセスの原因の一つが,F 社の IP アドレス以外からクラウドサービスへのログインが可能になっていたことにあると考え,F 社の IP アドレス以外からのログインを制限することが可能か調査した。F 社で利用しているクラウドサービスのうち,グループウェアサービスだけは,接続元 IP アドレスを制限する機能を備えていたので,その機能を有効化し,社内からだけログインできるように設定した。しかし,残りのクラウドサービスは接続元 IP アドレスの制限機能を備えていなかった。

C 主任は,接続元を制限する他の方法を検討した。その結果,クラウドサービスへログインする際,F 社に既に設置してある LDAP サーバでの認証を必要とすることにすれば,接続元を制限できるようになると考えた。そこで,F 社で利用しているクラウドサービスを調べたところ,全て SAML(Security Assertion Markup Language)を用いた認証連携に対応していることが分かった。C 主任は,クラウドサービスと LDAP サーバとの間で,SAML を用いた認証連携による接続元の制限を検討することにした。

〔SAML を用いた認証連携と接続元制限方式の概要〕

SAML は,認証,認可などの情報を安全に交換するためのフレームワークである。SAML を用いることによって,利用者にサービスを提供するサービスプロバイダ(以下,SP という)と,ID プロバイダ(以下,IdP という)との間で利用者の認証結果などの情報を安全に連携することができる。SAML には複数の処理方式が存在する。今回 F 社で導入を検討している方式のシーケンスを図1に示す。図1中の各通信のプロトコルは,IdP と LDAP サーバ間は LDAP であり,それ以外は HTTP over TLS である。

シーケンス図。左から順に空欄 a,空欄 b,空欄 c,空欄 d の四つの登場者が並ぶ。(1) サービス要求:b から a へ。a で処理1。(2) リダイレクト指示:a から b へ。(3) ログイン画面要求:b から c へ。c で処理2。(4) ログイン画面応答:c から b へ。(5) 認証要求:b から c へ。(6) 認証要求:c から d へ。(7) 認証結果を応答:d から c へ。c で処理3。(8) SAML Response の送信フォームを応答:c から b へ。(9) SAML Response を送信:b から a へ。a で処理4。(10) サービス提供:a から b へ。
図1 導入を検討している方式のシーケンス

SAML を用いた認証連携を行うためには,事前に IdP と SP との間で様々な情報を共有することによって,信頼関係を構築しておく必要がある。事前に共有する情報としては,通信の方式や連携する属性情報などが記述されたメタデータ,e で生成して送出する URL,f において必要な IdP のディジタル証明書などがある。

図1中の処理1~4の処理内容を表1に示す。

列は処理番号,処理内容。処理1:・IdP に認証を要求する SAML Request を生成する。・SAML Request をエンコードする。・エンコード結果を IdP のログイン画面の URL と組み合わせて,リダイレクト先 URL を生成する。処理2:・URL 内の空欄 g から SAML Request を取得する。・信頼関係が構築された SP からの認証要求であることを検証する。処理3:・利用者の認証が成功した場合,認証結果や SP との間で連携する属性情報,有効期間,それらの情報に対するディジタル署名を含めた SAML Response を生成する。処理4:・SAML Response に含まれるディジタル署名を検証することによって,ディジタル署名が空欄 h によって署名されたものであること,及びデータの空欄 i がないことを確認する。・SAML Response 内の属性情報も検証することによって,サービスを提供すべきか決定する。
表1 処理内容

C 主任は図1のシーケンスから,②IdP を社内ネットワークに設置しても認証情報の連携が成立することを確認した。そこで,IdP は社内ネットワークに設置し,IdP のログイン画面の URL の FQDN には,社内の FQDN を割り当てることにした。

〔SAML を用いた認証連携と接続元制限の動作検証〕

最後に C 主任は,F 社で利用しているクラウドサービスを用いて,SAML による認証連携の動作を検証することにした。C 主任は IdP を社内ネットワークに設置して必要な設定を行い,各クラウドサービス上に,既に利用しているものとは別の検証用アカウントを作成し,社内からのクラウドサービスへのログインが可能であることを確認した。また,③社外からクラウドサービスへのログインを試みると,失敗することも確認した。

C 主任は検証結果を B 部長に説明し,承認を得て,SAML を用いた認証連携と接続元制限を開始した。また,シングルサインオンも併せて実現したことによって,クラウドサービスを利用する従業員の利便性も向上させることができた。

出題趣旨(IPA)

近年,企業においても外部のクラウドサービスの利用が増加しており,企業が保有する情報資産もクラウドサービスへの移行が進んでいる。クラウドサービス上の情報資産を保護する上では,クラウドサービスでの認証とアクセス制限が重要である。本問では,クラウドサービス側での対応が拡大しつつあるSAMLを用いた認証連携を題材とし,認証とアクセス制限を設計する能力について問う。

採点講評(問全体・IPA)

問3では,クラウドサービスに対する認証連携を題材に,SAMLを用いた認証連携と,その仕組みを利用したアクセス制御の方法について出題した。全体として正答率は高かった。

設問と解答例

設問1 35字以内

本文中の下線①について,条件を満たす利用者 ID を特定するためには,どのような条件を満たすログイン記録を抽出すればよいか。満たすべき条件を 35 字以内で述べよ。

解答例

  • 接続元IPアドレスがF社のグローバルIPアドレスではないこと
解説

本文の根拠

〔クラウドサービスへの不正アクセス〕

F 社で利用しているクラウドサービスではログイン記録として,アクセス日時,利用者 ID,接続元 IP アドレス,接続先 URL が記録されている。

〔クラウドサービスへの不正アクセス〕

接続元 IP アドレスとして,F 社の IP アドレス以外に,海外の IP アドレスが一つあった。

本文(下線①)

①F 社以外からのログインがあった利用者 ID を特定し

下線①で特定したいのは,F 社以外からログインされた利用者 ID である。クラウドサービスのログイン記録には接続元 IP アドレスが残るので,接続元 IP アドレスが F 社のものでない記録を抜き出し,その利用者 ID を拾えばよい。条件は“接続元IPアドレスがF社のグローバルIPアドレスではないこと”である。

R さんの不正アクセスも,接続元 IP アドレスに F 社以外(海外)のものがあったことで見つかった。端末はプロキシサーバを経由してクラウドサービスを使うので,社内からのログインは F 社のインターネット側の IP アドレス(グローバル IP アドレス)から来る。講評も,クラウドサービス側に記録されるログイン記録がよく理解されていた,としている。

字数は 35 字以内で,解答例は 30 字。クラウドサービス側から見えるのは F 社の社内の IP アドレスではなく,インターネット側の“グローバル IP アドレス”なので,そう明記する。アクセス日時や接続先 URL は,社外からのログインかどうかの判断には使えない。

採点講評(IPA)

設問1は正答率が高かった。クラウドサービス側に記録されるログイン記録について,よく理解されているようであった。

設問2(1) 解答欄4つ

図1中の a~d に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群 ア IdP イ LDAP サーバ ウ SP エ 利用者端末の Web ブラウザ

〔a〕解答例

  • ウ

〔b〕解答例

  • エ

〔c〕解答例

  • ア

〔d〕解答例

  • イ
解説

本文の根拠

図1

(1) サービス要求:b から a へ。a で処理1。(2) リダイレクト指示:a から b へ。(3) ログイン画面要求:b から c へ。

図1

(6) 認証要求:c から d へ。(7) 認証結果を応答:d から c へ。

表1 処理1

エンコード結果を IdP のログイン画面の URL と組み合わせて,リダイレクト先 URL を生成する。

本文

図1中の各通信のプロトコルは,IdP と LDAP サーバ間は LDAP であり,それ以外は HTTP over TLS である。

(1) でサービスを要求するのは利用者端末の Web ブラウザで,要求を受けて処理1(SAML Request を作り,IdP のログイン画面へのリダイレクト先 URL を作る)を行うのは SP である。よって a は SP(ウ),b は利用者端末の Web ブラウザ(エ)。(3) でログイン画面を要求され,処理3 で SAML Response を作るのは IdP なので c は IdP(ア),IdP から認証要求を受けて結果を返す d は LDAP サーバ(イ)である。

b は (1)(3)(5)(9) の送り手であり,リダイレクトの指示を受けて別のサーバへ要求を出し直す役目をもつので,Web ブラウザと分かる。d と c の間だけが LDAP で,F 社は既存の LDAP サーバでの認証を必要とすることにしたと本文にあるので,d は LDAP サーバである。

字数制限の無い記号選択である。リダイレクト((2))を指示するのは SP で,ログイン画面を返すのは IdP である。最初の要求先を IdP と考えると a と c を取り違える。

採点講評(IPA)

設問2は全体的に正答率が高かった。ただし,設問2(5)については,IdPとSPが直接通信できない点を考慮していない解答が散見された。SAMLではIdPとSP間での認証情報の連携方式が複数存在し,本文中に記載した通信内容は一例である。今回の方式だけでなく,SAMLの認証連携の仕組みを広く理解しておいてほしい。

設問2(2) 解答欄2つ

本文中の e,f に入れる適切な処理番号を,表1中の処理1~4の中から選び,答えよ。

〔e〕解答例

  • 処理1

〔f〕解答例

  • 処理4
解説

本文の根拠

本文

事前に共有する情報としては,通信の方式や連携する属性情報などが記述されたメタデータ,e で生成して送出する URL,f において必要な IdP のディジタル証明書などがある。

表1 処理1

エンコード結果を IdP のログイン画面の URL と組み合わせて,リダイレクト先 URL を生成する。

表1 処理4

SAML Response に含まれるディジタル署名を検証することによって,ディジタル署名が空欄 h によって署名されたものであること,及びデータの空欄 i がないことを確認する。

SP は処理1 で,IdP のログイン画面の URL を使ってリダイレクト先 URL を作る。そのため IdP のログイン画面の URL を事前に知っておく必要がある。e は処理1 である。また SP は処理4 で SAML Response のディジタル署名を検証するので,IdP の公開鍵を含むディジタル証明書が要る。f は処理4 である。

どちらも SP が IdP の情報を事前に持っておく例である。処理2 と処理3 は IdP 側の処理で,処理3 のディジタル署名は IdP 自身の秘密鍵で行うので,IdP のディジタル証明書を前もって受け取っておく必要は無い。

字数制限は無く,表1 の“処理番号”の書き方どおり“処理1”“処理4”と答える。e の“生成して送出する URL”は IdP のログイン画面へのリダイレクト先 URL で,(2) のリダイレクト指示で送出される。

採点講評(IPA)

設問2は全体的に正答率が高かった。ただし,設問2(5)については,IdPとSPが直接通信できない点を考慮していない解答が散見された。SAMLではIdPとSP間での認証情報の連携方式が複数存在し,本文中に記載した通信内容は一例である。今回の方式だけでなく,SAMLの認証連携の仕組みを広く理解しておいてほしい。

設問2(3) 解答欄1つ

表1中の g に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群 ア Cookie イ HTML ウ クエリ文字列 エ スキーム オ リファラ

〔g〕解答例

  • ウ
解説

本文の根拠

表1 処理1

エンコード結果を IdP のログイン画面の URL と組み合わせて,リダイレクト先 URL を生成する。

表1 処理2

URL 内の空欄 g から SAML Request を取得する。

処理1 は,エンコードした SAML Request を IdP のログイン画面の URL と組み合わせてリダイレクト先 URL にする。Web ブラウザはその URL で IdP にアクセスするので,IdP は URL の中の SAML Request を読み取る。URL の中でパラメータを運ぶのは“?”の後ろのクエリ文字列なので,g はウである。

SAML 2.0 の仕様(OASIS の Bindings)の HTTP Redirect Binding では,SAML のメッセージを圧縮・Base64 エンコードし,URL のクエリ文字列の SAMLRequest パラメータに入れて運ぶ。図1 の (8)(9) のように,SAML Response はフォームで送らせる方式(HTTP POST Binding)が使われることが多い。

字数制限の無い記号選択である。Cookie は IdP のドメインに SP が書き込めないので運べない。リファラは Web ブラウザが付けるもので,SP が中身を決められない。スキームは“https”などの部分で,データを入れる場所ではない。

採点講評(IPA)

設問2は全体的に正答率が高かった。ただし,設問2(5)については,IdPとSPが直接通信できない点を考慮していない解答が散見された。SAMLではIdPとSP間での認証情報の連携方式が複数存在し,本文中に記載した通信内容は一例である。今回の方式だけでなく,SAMLの認証連携の仕組みを広く理解しておいてほしい。

設問2(4) 解答欄2つ

表1中の h,i に入れる適切な字句を,それぞれ 5 字以内で答えよ。

〔h〕解答例

  • IdP

〔i〕解答例

  • 改ざん
解説

本文の根拠

表1 処理3

利用者の認証が成功した場合,認証結果や SP との間で連携する属性情報,有効期間,それらの情報に対するディジタル署名を含めた SAML Response を生成する。

表1 処理4

SAML Response に含まれるディジタル署名を検証することによって,ディジタル署名が空欄 h によって署名されたものであること,及びデータの空欄 i がないことを確認する。

SAML Response のディジタル署名は,処理3 で IdP が付けたものである。SP は事前に共有した IdP のディジタル証明書(公開鍵)で署名を検証し,署名が IdP によって付けられたこと(h),署名の後に中身が書き換えられていないこと,つまりデータの改ざんがないこと(i)を確かめる。h は IdP,i は改ざんである。

ディジタル署名の検証で確かめられるのは,署名者の真正性とデータの完全性の二つである。SAML Response は Web ブラウザを経由して届く((8)(9))ので,途中で利用者や攻撃者が書き換えていないことを署名で確かめる必要がある。

字数はそれぞれ 5 字以内で,解答例は h が 3 字,i が 3 字。h は“SP”ではない。SP は検証する側である。i は“改ざん”と書き,“漏えい”としない(署名は秘匿の手段ではない)。

採点講評(IPA)

設問2は全体的に正答率が高かった。ただし,設問2(5)については,IdPとSPが直接通信できない点を考慮していない解答が散見された。SAMLではIdPとSP間での認証情報の連携方式が複数存在し,本文中に記載した通信内容は一例である。今回の方式だけでなく,SAMLの認証連携の仕組みを広く理解しておいてほしい。

設問2(5) 35字以内

本文中の下線②について,SP と IdP が直接通信できないにもかかわらず,認証情報の連携が成立するのはなぜか。その理由を,35 字以内で述べよ。

解答例

  • 認証に関する情報を利用者端末のWebブラウザが中継するから
解説

本文の根拠

本文(下線②)

C 主任は図1のシーケンスから,②IdP を社内ネットワークに設置しても認証情報の連携が成立することを確認した。

図1

(8) SAML Response の送信フォームを応答:c から b へ。(9) SAML Response を送信:b から a へ。

図1

(2) リダイレクト指示:a から b へ。(3) ログイン画面要求:b から c へ。

図1 では,SP(a)と IdP(c)が直接通信する矢印が無い。SAML Request は (2)(3) のリダイレクトで,SAML Response は (8)(9) のフォームの送信で,どちらも利用者端末の Web ブラウザ(b)を経由して運ばれる。Web ブラウザが社内にあれば,社内の IdP にも社外の SP にも接続できるので,IdP を社内に置いても連携が成立する。理由は“認証に関する情報を利用者端末のWebブラウザが中継するから”である。

SP はインターネット上のクラウドサービスで,社外から社内ネットワークへの通信はファイアウォールで禁止されているので,SP から社内の IdP へは直接通信できない。それでも Web ブラウザが両方と通信できれば足りる。講評は,IdP と SP が直接通信できない点を考慮していない解答が散見された,としている。

字数は 35 字以内で,解答例は 29 字。“SAML を使うから”のような一般論でなく,“Web ブラウザが中継する”ことを書く。SAML には IdP と SP が直接通信する方式もあると講評が触れており,本問の図1 の方式に即して答える。

採点講評(IPA)

設問2は全体的に正答率が高かった。ただし,設問2(5)については,IdPとSPが直接通信できない点を考慮していない解答が散見された。SAMLではIdPとSP間での認証情報の連携方式が複数存在し,本文中に記載した通信内容は一例である。今回の方式だけでなく,SAMLの認証連携の仕組みを広く理解しておいてほしい。

設問3 解答欄4つ

本文中の下線③について,社外から交通費精算サービスとグループウェアサービスにアクセスしたとき,それぞれのサービスは,異なる理由でログインに失敗する。それらは,図1中のどの通信ができないことによるものか。図1中の(1)~(10)から選び,答えよ。また,その理由を,それぞれ 35 字以内で述べよ。

〔交通費精算サービスの番号〕解答例

  • (3)

〔交通費精算サービスの理由〕解答例

  • 社外からIdPへの通信がファイアウォールによって遮断されるから

〔グループウェアサービスの番号〕解答例

  • (1)

〔グループウェアサービスの理由〕解答例

  • クラウドサービス側で接続元IPアドレスの制限が行われているから
解説

本文の根拠

本文(下線③)

また,③社外からクラウドサービスへのログインを試みると,失敗することも確認した。

本文

社外から社内ネットワークへの通信はファイアウォールによって禁止されている。

〔SAML を用いた認証連携と接続元制限方式の概要〕

IdP は社内ネットワークに設置し,IdP のログイン画面の URL の FQDN には,社内の FQDN を割り当てることにした。

〔暫定対策の実施と根本的な対策の検討〕

グループウェアサービスだけは,接続元 IP アドレスを制限する機能を備えていたので,その機能を有効化し,社内からだけログインできるように設定した。

交通費精算サービスには接続元 IP アドレスの制限が無いので,社外からでも (1)(2) は通り,Web ブラウザは IdP のログイン画面へリダイレクトされる。しかし IdP は社内ネットワークにあり,社外から社内への通信はファイアウォールで禁止されているので,(3) のログイン画面要求が届かない。番号は (3),理由は“社外からIdPへの通信がファイアウォールによって遮断されるから”である。

グループウェアサービスは,接続元 IP アドレスを制限して社内からだけログインできるように設定してある。社外から (1) のサービス要求を送ると,その時点で拒否される。番号は (1),理由は“クラウドサービス側で接続元IPアドレスの制限が行われているから”である。講評は,交通費精算サービスの理由で IdP と LDAP サーバの役割を混同した解答が一部に見られた,としている。社外の Web ブラウザが直接通信しようとして失敗する相手は IdP で,LDAP サーバと通信するのは IdP である。

理由の字数はそれぞれ 35 字以内で,解答例はどちらも 31 字。交通費精算サービスは“どこで(ファイアウォール)”“何が(社外から IdP への通信)”止まるかを,グループウェアサービスは“クラウドサービス側の接続元 IP アドレス制限”を書く。二つは異なる理由と設問にあるので,同じ理由を書かないこと。

採点講評(IPA)

設問3は正答率が低かった。特に交通費精算サービスへのログインに失敗する理由については,IdPとLDAPサーバの役割を混同した解答が一部に見られた。SAMLにおける各主体の役割を理解しておいてほしい。

出典:平成29年度 春期 情報処理安全確保支援士試験 午後Ⅰ 問3(表記を一部改変)