‹ ぱすてく

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

平成30年度 春期 午後Ⅱ(旧試験)

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

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

この年度を解いてみる

問1 セキュリティ対策の評価

セキュリティ対策の評価に関する次の記述を読んで,設問 1〜4 に答えよ。

R 団体はある科学技術分野のノウハウを有する,職員数 300 名の一般社団法人である。特殊な用途に用いる精密機器のプロトタイプ製作,民間企業や教育機関への技術情報の提供,安全基準の助言などを行っている。R 団体とステークホルダとの関係を図 1 に,ステークホルダの概要を表 1 に示す。

R 団体は,会員組織(民間企業,教育機関)に情報提供とプロトタイプ貸出を行い,審議会(民間企業,教育機関の代表者)と要件協議を双方向で行う。R 団体は,製作パートナ(民間企業)にプロトタイプ発注を行い,製作パートナからプロトタイプ納品を受ける。
図 1 R 団体とステークホルダとの関係
名称と概要の 2 列の表。会員組織:R 団体に入会を申請し,R 団体が入会を認めた組織。会員組織は,自組織の活動を有利に進めるために,R 団体が提供する情報や貸し出すプロトタイプを活用する。審議会:一部の会員組織の代表者で構成される会議体。R 団体に製作を要請するプロトタイプの要件を取りまとめる。R 団体が要求仕様書や図面を作成するに当たって,R 団体と打合せを行う。打合せは不定期に R 団体の会議室で行われ,議事録などは主に電子メール(以下,メールという)で共有される。製作パートナ:要求仕様書と図面を基に,プロトタイプを製作する業者。原則として,プロトタイプごとに公募され,入札で選ばれる。R 団体と製作パートナとの契約後の情報のやり取りは,R 団体が運用するポータルサイト(以下,R ポータルという)で行う。
表 1 ステークホルダの概要

R 団体の各部署の業務内容を表 2 に示す。

部署名,業務名,業務内容の 3 列の表。システム企画課のシステム企画:R 団体の情報システムの要件をまとめ,設計や構築を開発業者に依頼する。システム企画課のセキュリティ管理:R 団体全体のセキュリティ維持に責任をもち,情報システムのセキュリティの見直しを行う。システム運用課の R ポータルのサーバ管理:システム運用課員が運用管理に利用する PC(以下,運用管理 PC という)から SSH で Web アプリケーションサーバ(以下,WebAP サーバという)やデータベースサーバ(以下,DB サーバという)にアクセスし,設定情報変更などを行う。設計第 1 課のプロトタイプ製作:審議会と打合せを行い,要求仕様書や図面を作成する。製作パートナと情報共有する場合,PC で作成した図面などのファイルを,R ポータルの Web インタフェースを用いて,アップロードする。人事総務課の人事サーバ管理:サーバセグメントに設置されている人事サーバのデータを更新する。
表 2 各部署の業務内容(抜粋)

プロトタイプ製作業務において扱う情報は全て機密性が高く,その中でも図面は特に機密性が高い。

R 団体では,一般業務用の PC が職員に 1 台ずつ貸与されており,Web 閲覧,メール送受信,図面作成などに利用されている。各 PC には固定 IP アドレスが割り当てられている。PC にログインする際には各職員の利用者 ID を入力する。R 団体のネットワーク構成を図 2 に示す。

インターネットはデータセンタの FW に接続される。FW は DMZ の L2SW に接続され,また R 団体の L3SW にも接続される。DMZ の L2SW には,R ポータル(WebAP サーバ,DB サーバ),プロキシサーバ,権威 DNS サーバ,SSL アクセラレータ,外部メールサーバが接続される。R 団体の L3SW は,利用者セグメントの L2SW(PC,運用管理 PC が接続)と,サーバセグメントの L2SW に接続される。サーバセグメントの L2SW には,人事サーバ,踏み台サーバ,内部メールサーバ,キャッシュ DNS サーバが接続される。凡例:FW はファイアウォール,L3SW はレイヤ 3 スイッチ,L2SW はレイヤ 2 スイッチ。
図 2 R 団体のネットワーク構成

R ポータルは,利用者の認証機能,利用者ごとに権限を定義できるアクセス制御機能,ファイルをアップロード及びダウンロードできる文書共有機能,問合せ内容や回答の履歴を記録する掲示板機能を備えている。R ポータルの利用者 ID は,職員,会員組織,及び製作パートナに発行される。

また,R ポータルは,フロントエンドの WebAP サーバと,会員組織情報,要求仕様書や図面が保存されるバックエンドの DB サーバで構成され,WebAP サーバと DB サーバは ODBC(Open Database Connectivity)を用いて特定のポート間で通信している。R 団体のセキュリティ対策基準にのっとり,DB サーバには,システム運用課員によるログインと,WebAP サーバからの接続だけが許可されている。利用者セグメントから DB サーバへのアクセスは,FW によって運用管理 PC の IP アドレスからのアクセスだけが許可されている。

人事サーバ管理での人事データの更新には二つの方法がある。通常の更新は,人事サーバの Web インタフェースを使用して PC 上で行う。期初などの大量の人事異動が発生するタイミングでは,PC からリモートデスクトップ機能を使い,一度,踏み台サーバの利用者 ID(以下,管理 ID という)を用いて踏み台サーバにログイン後,さらに,踏み台サーバからリモートデスクトップ機能を使い,共通の利用者 ID とパスワード(以下,共通管理者アカウントという)で人事サーバにログインして,一括で更新している。管理 ID は職員ごとに異なっている。R 団体では,踏み台サーバを除き,サーバセグメントと DMZ に置くサーバでは,運用負荷軽減の観点から,共通管理者アカウントが設定されている。

サーバセグメント内のサーバでは,表 3 のアクセスだけを許可している。

項番,アクセス元,アクセス先,アクセス制御方法,サービスの 5 列の表。項番 1:人事総務課の一部の職員の PC から踏み台サーバへ,管理 ID とパスワードによる認証,リモートデスクトップ。項番 2:運用管理 PC から踏み台サーバへ,管理 ID とパスワードによる認証,リモートデスクトップ。項番 3:踏み台サーバからサーバセグメントの全てのサーバへ,サーバの共通管理者アカウントによる認証,リモートデスクトップを含むメンテナンス用のサービス。項番 4:利用者セグメントの全ての PC からサーバセグメントの全てのサーバへ,IP アドレスによるフィルタリング,又は職員の利用者 ID とパスワードによる認証,職員に許可されている必要最小限のサービス。
表 3 サーバへのアクセス許可

踏み台サーバには操作記録機能があり,ログインした利用者のデスクトップ画面が数秒間隔で画像データとして記録され,実行したコマンドやキーボード入力がテキストで記録される。全てのサーバがアクセスログを取得しており,どの利用者 ID によっていつログイン,ログアウトしたかの記録が残る。踏み台サーバの利用者管理はシステム運用課が担当している。

FW のフィルタリングルールを表 4 に示す。

項番,送信元,宛先,サービス,動作の 5 列の表。項番 1:インターネットから SSL アクセラレータへ,HTTP over TLS,許可。項番 2:インターネットから外部メールサーバへ,SMTP,許可。項番 3:インターネットから権威 DNS サーバへ,DNS,許可。項番 4:プロキシサーバからインターネットへ,HTTP 及び HTTP over TLS,許可。項番 5:外部メールサーバからインターネットへ,SMTP,許可。項番 6:外部メールサーバから内部メールサーバへ,SMTP,許可。項番 7:権威 DNS サーバからインターネットへ,DNS,許可。項番 8:運用管理 PC から WebAP サーバへ,SSH,許可。項番 9:運用管理 PC から DB サーバへ,SSH,許可。項番 10:運用管理 PC からプロキシサーバへ,SSH,許可。項番 11:運用管理 PC から権威 DNS サーバへ,SSH,許可。項番 12:運用管理 PC から外部メールサーバへ,SSH,許可。項番 13:利用者セグメントからプロキシサーバへ,HTTP 及び HTTP over TLS,許可。(項番 14〜29 は省略)項番 30:全てから全てへ,全て,拒否。注記 1:FW はステートフルパケットインスペクション型である。注記 2:項番の小さいルールから順にマッチングし,最初に合致したルールが適用される。注記 3:項番 14〜29 には,送信元が DMZ の機器であり,かつ,宛先がサーバセグメントの機器であるルールは存在しない。
表 4 FW のフィルタリングルール

〔セキュリティ対策の評価〕

今年に入り,関連業界を狙ったサイバー攻撃が急増しているという話を聞き,R 団体の理事がセキュリティコンサルタント(以下,コンサルタントという)に相談したところ,セキュリティ対策の評価を勧められた。そこで,図面及び会員組織情報と,それらが保存されている DB サーバについて,セキュリティ対策が適切か,コンサルタントによる評価を受けることにした。

さらに,R 団体の理事は,かねてから付き合いのあるベンダに相談し,情報処理安全確保支援士(登録セキスペ)の M 氏に,R 団体のシステム企画課に主任として出向してきてもらい,同じシステム企画課の N さんとともに,コンサルタントの評価結果への対応を検討してもらうことにした。評価では,検査ツールを用いた R ポータルの脆弱性検査や,職員へのインタビューを通しての秘密情報の取扱状況確認と,セキュリティ対策基準の妥当性確認などが行われた。

2 か月後,コンサルタントは,評価結果を理事に報告した後,図 3 に示す評価結果の詳細を,M 主任と N さんに説明した。

検出事項 1:R ポータルの脆弱性検査を実施したところ,図 4 に示す 2 件のクロスサイトスクリプティング(以下,XSS という)脆弱性が存在する。(省略)検出事項 2:踏み台サーバを除く全てのサーバの管理者用アカウントに,共通管理者アカウントが使用されている。(省略)検出事項 3:DB サーバは,利用者セグメントからのアクセスを運用管理 PC からだけに限定している点は良いが,DMZ に設置されている点が課題である。DB サーバは,DMZ よりも安全性の高いセグメントに設置することが望まれる。(省略)検出事項 4:製作パートナに貸与する図面の機密性の担保が,包括的な基本契約の中の守秘義務条項だけであり,製作パートナが実施すべきセキュリティ対策の具体的内容が定められていない。(省略)(省略)
図 3 評価結果の詳細(抜粋)
脆弱性 1:図面を検索するページ(以下,検索ページという)に反射型 XSS が存在する。(省略)脆弱性 2:検索ページで使用されるスクリプトに DOM-based XSS が存在する。攻撃者が“#”から始まるフラグメント識別子に攻撃コードを記述できる。
図 4 2 件の XSS 脆弱性

理事から対応計画を策定するように指示があり,M 主任と N さんは,それぞれの検出事項について,一つ一つ対応方針を検討することにした。

〔検出事項 1 の対応方針の検討〕

次は,XSS 脆弱性についての N さんと M 主任の会話である。

N さんの質問に対して,M 主任は次の二つを説明した。

次は,XSS 脆弱性への対処についての N さんと M 主任の会話である。

〔検出事項 2 の対応方針の検討〕

共通管理者アカウントを用いてサーバにログインするプログラムも複数存在することから,共通管理者アカウントは,容易に変更できない。一方,④共通管理者アカウントが正しく利用されていることが確認できる証跡は取得している。共通管理者アカウントの利用は,時間を掛けて共通管理者アカウントをやめ,個別のアカウントにする対策を検討することにした。

〔検出事項 3 の対応方針の検討〕

M 主任は,DB サーバを DMZ とは別のセグメントに移動する案を検討するように N さんに指示した。N さんは,二つの案を検討した。

案 1 は,DMZ 内に新たに L3SW を設置して,DB サーバ専用のセグメントを設け,L3SW で DB サーバへの通信を業務上必要なものだけに限定する案である。

案 2 は,DB サーバをサーバセグメントに移動し,表 5 に示すルールを追加するなど,FW のフィルタリングルールを変更するとともに,図 2 の L3SW によって,利用者セグメントからのアクセスを禁止する案である。

項番,送信元,宛先,サービス,動作の 5 列の表。項番 14:送信元[ a ],宛先[ b ],サービス[ c ],動作は許可。
表 5 追加する FW のフィルタリングルール

次は,二つの案についての N さんと M 主任との会話である。

M 主任と N さんは,社内関係者の意見を集約し,現行システムへの影響などから案 1 を理事に提案することにした。

〔検出事項 4 の対応方針の検討〕

R 団体は,ISMS 適合性評価制度の認証を取得していることを公募要件とした上で,製作パートナが順守すべきルールを明確にした。そのルールを図 5 に示す。

・ R 団体の図面とプロトタイプについて,次の施策を管理策の中に含めること。施策 1:図面の管理責任者を定めること。施策 2:図面の取扱いやプロトタイプの製作は,入退室が管理されたエリアで行うこと。施策 3:図面を複製した場合は,複製物に対しても原本と同等の管理を行うこと。(省略)・ R 団体からの貸与品は,契約終了時に,管理責任者が確実に破棄し,証跡を提出すること。(省略)
図 5 製作パートナが順守すべきルール

さらに,M 主任は,製作パートナが図 5 に示すルールを逸脱するような,不正な方法で図面を取り扱うことを技術的対策によって防止しようと考えた。M 主任は技術的対策の候補を DRM(Digital Rights Management)方式とコンテナ方式の二つに絞り込んだ。

M 主任が検討した DRM 方式は,DRM に対応した図面編集用のアプリケーションソフトウェア(以下,図面アプリという)を用いて,図面にセキュリティ情報を埋め込んだ上で,図面を暗号化する方式である。暗号化した図面(以下,S 図面という)は,DRM に対応した図面アプリだけで開くことができる。市場に流通している図面アプリのうち,一部のアプリだけが DRM に対応している。この DRM 方式は,図面へのアクセスを主にアプリケーションソフトウェアのレイヤで制御する。

一方,M 主任が検討したコンテナ方式では,共有ファイルサーバ(以下,コンテナサーバという)上に図面を置く。コンテナサーバ上の図面は,PC 上でコンテナ方式専用ソフトウェア(以下,CC という)を起動すると編集可能になるが,同時にローカルドライブなど他のドライブや外部記憶媒体へのアクセスが禁止され,コンテナサーバ内から持ち出せなくなる。図面は,市場に流通している図面アプリの多くを使って開くことができる。このコンテナ方式は,図面へのアクセスを主にファイルシステムのレイヤで制御する。

DRM 方式の利用イメージを図 6 に,コンテナ方式の利用イメージを図 7 に示す。

・ R 団体は,DRM 対応の図面アプリを用いて S 図面を作成し,S 図面を R ポータルにアップロードする。・製作パートナが S 図面をダウンロードして,PC 上の DRM 対応の図面アプリで S 図面を開くと,PC と DRM サーバとの間で通信が行われ,認証ダイアログが表示される。DRM サーバは,R 団体の DMZ 上に設置され,利用者の認証機能や,利用者の図面へのアクセスを制御する機能をもっている。認証ダイアログに,あらかじめ R 団体から与えられた S 図面用の利用者 ID,パスワードを入力すると,S 図面が正常に開く。・ R 団体は,DRM サーバの設定によって,S 図面ごとに,アクセス可能な利用者 ID,及びアクセス可能な利用者 ID ごとの,閲覧期限,印刷可否,編集可否を設定できる。
図 6 DRM 方式の利用イメージ
・ R 団体は,DMZ にコンテナサーバを設置し,そのサーバ内のフォルダに図面を保存する。・コンテナサーバには,CC のインストーラ(以下,CCI という)を生成する機能がある。プロトタイプ製作の契約ごとに,R 団体は,必要な数の CCI を製作パートナにメディアで渡す。製作パートナに渡す CCI には,CC ごとの識別情報が組み込まれている。・製作パートナの PC で CCI を実行すると,PC に CC がインストールされる。CC は PC のプロセスとして常駐し,普段は PC の動作に影響を与えないが,機密モードログイン機能が起動されると認証ダイアログを表示する。認証ダイアログに,あらかじめ R 団体から利用者の人数分だけ与えられた CC 用の利用者 ID,パスワードを入力すると,PC が機密モードになる。機密モード時は,コンテナサーバのフォルダが専用のドライブ(以下,コンテナドライブという)として PC からアクセス可能になり,図面を,汎用の図面アプリで閲覧,編集,保存できる。機密モードでは,PC に次の制限が掛かる。(1)R 団体が定めたアプリケーションソフトウェアだけが起動できる。(2)PC はコンテナサーバだけにアクセスできる。それ以外のインターネット,ネットワークにはアクセスできない。(3)PC はコンテナドライブ以外,つまり PC の他のドライブや外部記憶媒体にはアクセスできない。そのため,PC 利用者が編集した図面を保存できるのは,コンテナドライブ上だけである。機密モードからログアウトすると,コンテナドライブは切断され,機密モード時に編集した図面にはアクセスできなくなる。また,クリップボードや一時ファイルなどの一時情報は,全て削除される。・ CC が,インストール後,最初にコンテナドライブにアクセスする際,CC の識別情報と PC の端末情報の組がコンテナサーバに登録される。仮に製作パートナが,同一の CC を複数台の PC にインストールしても,そのうち最初にコンテナドライブにアクセスした 1 台だけがコンテナドライブにアクセスできる。・仮想デスクトップ環境には CC をインストールすることはできない。
図 7 コンテナ方式の利用イメージ

次は,DRM 方式とコンテナ方式についての M 主任と N さんの会話である。

M 主任は両方式の比較結果をまとめ,理事に報告した。図面の流出防止の効果が決め手となり,R 団体は,最終的にはコンテナ方式を採用することにした。

M 主任は,評価結果への対応方針をまとめ,対応計画を策定した。対応計画は R 団体の理事会で承認され,M 主任は対応計画を実行に移すことになった。

出題趣旨(IPA)

セキュリティインシデントを未然に防ぐには,新しい攻撃方法の出現や,システムの変更,業務の変更など様々な環境の変化に合わせて,企業・組織がリスクを見直し,必要となる対応をしていくことが重要である。本問では,一般社団法人におけるセキュリティ対策の評価を題材に,脆弱性検査で検出された脆弱性や,リスクアセスメントによって新たに分かった情報漏えいリスクなどについて,評価し,対策を立案する能力を問う。

採点講評(問全体・IPA)

問1では,セキュリティ対策の評価について出題した。全体として,正答率は高かった。

設問と解答例

設問1(1) 35字以内

本文中の下線①について,サーバからのレスポンスの内容を見て脆弱性を判断するツールを用いた場合,脆弱性 2 を検知できないのはなぜか。その理由を 35 字以内で具体的に述べよ。

解答例

  • 脆弱性の有無によってサーバからのレスポンスに違いがないから
解説

本文の根拠

図4 脆弱性2

検索ページで使用されるスクリプトに DOM-based XSS が存在する。攻撃者が“#”から始まるフラグメント識別子に攻撃コードを記述できる。

〔検出事項1の対応方針の検討〕 Nさん

その文字列がレスポンス中にスクリプトとして出力されるかどうかで判断する方法(以下,検知方法 1 という)

〔検出事項1の対応方針の検討〕

検知方法 1 では脆弱性 2 を検知できない。

検知方法1は,スクリプトに相当する文字列を含むリクエストを送り,その文字列がレスポンスの中にスクリプトとして現れるかどうかでサーバ側の反射型XSSを判断する方法である。脆弱性2は,攻撃コードを“#”から始まるフラグメント識別子に書く形のDOM-based XSSである。RFC 3986は,フラグメント識別子は参照の前にURIの残りの部分から切り離され,その中身は利用者エージェント(ブラウザ)だけが解釈すると定めている。つまりフラグメントの値はサーバに送られず,レスポンスの内容も脆弱性の有無で変わらない。解答例は“脆弱性の有無によってサーバからのレスポンスに違いがないから”である。

脆弱性1(反射型XSS)は攻撃コードがレスポンスに出力されるので,レスポンスを見るツールで検知できる。脆弱性2は,ブラウザ上のスクリプトがフラグメントの値を読んで画面を書き換える点に問題があり,原因はサーバの応答ではなくクライアント側のスクリプトにある。WAFもサーバへ届くリクエストを調べる仕組みなので,フラグメントの値は見えない。

字数は35字以内で,解答例は29字である。“サーバからのレスポンス”と“違いがない”の二つを残す。“サーバに送られないから”だけでも筋は通るが,設問は“レスポンスの内容を見て判断するツール”が検知できない理由を問うので,レスポンスに違いが出ない点まで書く。

採点講評(IPA)

設問1(1),(2)は,DOM-based XSSに関する設問であったが,反射型XSSについて言及した解答が散見された。DOM-based XSSが引き起こされる原理についてよく理解しておいてほしい。また,設問1(3)は,正答率が低かった。HttpOnly属性はCookieの値を不正に操作されることを防ぐために有効なので,よく理解しておいてほしい。

設問1(2) 40字以内

本文中の下線②について,脆弱性の原理を踏まえ,攻撃者が分析する方法を 40 字以内で述べよ。

解答例

  • スクリプトを分析し,フラグメント識別子の値の変化による挙動を確認する。
解説

本文の根拠

〔検出事項1の対応方針の検討〕

R ポータルへのアクセスを繰り返すことなく,脆弱性 2 の有無を分析する方法

図4 脆弱性2

検索ページで使用されるスクリプトに DOM-based XSS が存在する。

〔検出事項1の対応方針の検討〕 Nさん

攻撃者が脆弱性 1 の有無を分析しようと攻撃試行すると,検知できます。

下線②は,Rポータルへのアクセスを繰り返さずに脆弱性2の有無を分析する方法である。脆弱性1のようにリクエストを送ってレスポンスを見る方法ではサーバへのアクセスが要るが,DOM-based XSSの原因は検索ページが読み込むスクリプトの中にある。そこで攻撃者は,検索ページのスクリプトを手元に取得して読み,フラグメント識別子の値がどのように使われ,画面にどう反映されるか(挙動)を確認すればよい。解答例は“スクリプトを分析し,フラグメント識別子の値の変化による挙動を確認する。”である。

スクリプトはブラウザに配布されるので,攻撃者は一度取得すれば何度でも読める。サーバへの試行を繰り返さないので,WAFに攻撃試行として検知されることもない。これが,本文の“WAFでも脆弱性2を検知できない”の背景である。

字数は40字以内で,解答例は35字である。“スクリプトを分析し”と“フラグメント識別子の値の変化による挙動”の二つを残す。“脆弱性の原理を踏まえ”という指定があるので,単に“解析ツールで調べる”とせず,フラグメント識別子に着目していることを書く。

採点講評(IPA)

設問1(1),(2)は,DOM-based XSSに関する設問であったが,反射型XSSについて言及した解答が散見された。DOM-based XSSが引き起こされる原理についてよく理解しておいてほしい。また,設問1(3)は,正答率が低かった。HttpOnly属性はCookieの値を不正に操作されることを防ぐために有効なので,よく理解しておいてほしい。

設問1(3) 45字以内

本文中の下線③について,R ポータルがどのような実装方法を用いている場合に動作に影響があるか。45 字以内で述べよ。

解答例

  • Rポータルが利用しているスクリプトがCookieの値を利用している場合
解説

本文の根拠

〔検出事項1の対応方針の検討〕 M主任

R ポータルはセッション管理を Cookie で実現しているので,XSS 攻撃によって Cookie を窃取されないようにする必要もある。

〔検出事項1の対応方針の検討〕 M主任

R ポータルの動作に影響が出ないことを確認した上で,Cookie の発行時に HttpOnly 属性を付与する

HttpOnly属性は,Cookieをスクリプトからは読めないようにする属性である。RFC 6265の4.1.2.6は,HttpOnly属性がCookieの適用範囲をHTTPリクエストに限り,ブラウザのスクリプト用のAPIのような“HTTP以外”の経路にはCookieを渡さないようにするものだと定めている。したがって,Rポータルのスクリプトが(document.cookieなどで)Cookieの値を読んで使う実装になっていると,HttpOnly属性を付与した後にそのスクリプトがCookieの値を取得できなくなり,動作に影響が出る。解答例は“Rポータルが利用しているスクリプトがCookieの値を利用している場合”である。

下線③の“Rポータルの動作に影響が出ないことを確認した上で”は,まさにこの副作用を確かめるという意味である。HttpOnly属性はXSSそのものを防ぐ対策ではなく,XSSが起きても,スクリプトによるCookieの窃取を防ぐ対策である。採点講評も,HttpOnly属性はCookieの値を不正に操作されることを防ぐために有効なので,よく理解しておいてほしいと述べている。

字数は45字以内で,解答例は35字である。“スクリプト”が“Cookieの値を利用している”の二つを残す。“JavaScriptを使っている場合”のように範囲を広げすぎると,Cookieを読まないスクリプトまで含んでしまうので,Cookieの値を使うことまで書く。

採点講評(IPA)

設問1(1),(2)は,DOM-based XSSに関する設問であったが,反射型XSSについて言及した解答が散見された。DOM-based XSSが引き起こされる原理についてよく理解しておいてほしい。また,設問1(3)は,正答率が低かった。HttpOnly属性はCookieの値を不正に操作されることを防ぐために有効なので,よく理解しておいてほしい。

設問2 70字以内

本文中の下線④について,サーバセグメント内のサーバで共通管理者アカウントを用いる R 団体では,どのような機能を使ってどのような証跡を取得しているか。本文中の字句を用いて,70 字以内で具体的に述べよ。

解答例

  • 踏み台サーバの操作記録機能によって,ログインした利用者のデスクトップ画面,実行したコマンド,及びキーボード入力を記録する。
解説

本文の根拠

〔検出事項2の対応方針の検討〕

共通管理者アカウントが正しく利用されていることが確認できる証跡は取得している

表3 項番3

踏み台サーバからサーバセグメントの全てのサーバへ,サーバの共通管理者アカウントによる認証

本文(踏み台サーバの操作記録)

踏み台サーバには操作記録機能があり,ログインした利用者のデスクトップ画面が数秒間隔で画像データとして記録され,実行したコマンドやキーボード入力がテキストで記録される。

本文

管理 ID は職員ごとに異なっている。

サーバセグメントのサーバには共通管理者アカウントでログインするので,サーバのログだけでは,誰がログインしたのかが分からない。ところが,そのログインは必ず踏み台サーバを経由し(表3の項番3),踏み台サーバには職員ごとに異なる管理IDでログインしている。そして踏み台サーバには操作記録機能があり,ログインした利用者のデスクトップ画面,実行したコマンド,キーボード入力が記録される。この機能で共通管理者アカウントの利用の中身(誰が何をしたか)を確認できる。解答例は“踏み台サーバの操作記録機能によって,ログインした利用者のデスクトップ画面,実行したコマンド,及びキーボード入力を記録する。”である。

設問は“どのような機能を使ってどのような証跡を取得しているか”の二点を問うので,“操作記録機能”という機能と,“デスクトップ画面,コマンド,キーボード入力”という証跡の両方を書く。アクセスログ(誰が,いつログイン,ログアウトしたか)も取得されているが,それだけでは共通管理者アカウントを使った人の特定と操作内容の確認には足りない。

字数は70字以内で,解答例は61字である。“本文中の字句を用いて”と指示されているので,機能名は“踏み台サーバの操作記録機能”,証跡は“デスクトップ画面”“コマンド”“キーボード入力”と本文の語をそのまま使う。

設問3(1) 解答欄4つ

表 5 中のa〜cに入れる適切な字句を答えよ。また,表 4 のルールのうち不要となるものを項番で答えよ。

〔a〕解答例

  • WebAPサーバ

〔b〕解答例

  • DBサーバ

〔c〕解答例

  • ODBC

〔ルール〕解答例

  • 9
解説

本文の根拠

〔検出事項3の対応方針の検討〕 案2

案 2 は,DB サーバをサーバセグメントに移動し,表 5 に示すルールを追加するなど,FW のフィルタリングルールを変更するとともに,図 2 の L3SW によって,利用者セグメントからのアクセスを禁止する案である。

表4 注記3

項番 14〜29 には,送信元が DMZ の機器であり,かつ,宛先がサーバセグメントの機器であるルールは存在しない。

本文

WebAP サーバと DB サーバは ODBC(Open Database Connectivity)を用いて特定のポート間で通信している。

表4 項番9

項番 9:運用管理 PC から DB サーバへ,SSH,許可。

案2ではDBサーバがDMZからサーバセグメントに移るので,DMZにあるWebAPサーバからDBサーバへの通信が,FWを通ってサーバセグメントに入ることになる。表4の注記3のとおり,DMZからサーバセグメントへのルールは今は存在しないので,これを許可するルールを足す。送信元はWebAPサーバ(a),宛先はDBサーバ(b),サービスはWebAPサーバとDBサーバが使っているODBC(c)である。

不要になるルールは,表4の中でDBサーバを宛先にする項番9(運用管理PCからDBサーバへのSSH)である。DBサーバがサーバセグメントに入ると,運用管理PC(利用者セグメント)からDBサーバへの接続はFWを通らなくなる。表3のとおり,運用管理PCからサーバセグメントのサーバには,踏み台サーバを経由してアクセスする(項番2,3)。ルールの項番を問う設問なので,“ルール9”ではなく“9”と項番だけを答える。

字数制限は無い。abcは“送信元”“宛先”“サービス”の欄で,表5の行(項番14)の意味から機器名とサービス名を入れる。cはポート番号ではなくサービス名(ODBC)で,WebAPサーバとDBサーバの通信が本文でODBCと書かれていることから決まる。

採点講評(IPA)

設問3は,全体的に正答率が高かった。本文中に示したデータベースサーバの移設に伴うリスクについて,正しく理解できていることがうかがわれた。

設問3(2) 55字以内

本文中の下線⑤について,誰がどのようなアクセス経路で何を行うと,セキュリティ対策基準違反になるか。違反になる行為を本文の内容を基に,55 字以内で具体的に述べよ。

解答例

  • 人事総務課の職員が踏み台サーバを経由してDBサーバに共通管理者アカウントでログインする行為
解説

本文の根拠

本文

DB サーバには,システム運用課員によるログインと,WebAP サーバからの接続だけが許可されている。

表3 項番1

項番 1:人事総務課の一部の職員の PC から踏み台サーバへ,管理 ID とパスワードによる認証,リモートデスクトップ。

表3 項番3

踏み台サーバからサーバセグメントの全てのサーバへ,サーバの共通管理者アカウントによる認証

本文

人事総務課の人事サーバ管理:サーバセグメントに設置されている人事サーバのデータを更新する。

R団体のセキュリティ対策基準では,DBサーバにログインできるのはシステム運用課員だけである。案2でDBサーバをサーバセグメントに移すと,表3の項番3により,踏み台サーバからサーバセグメントの全てのサーバに共通管理者アカウントで接続できる。しかも項番1は人事総務課の一部の職員のPCから踏み台サーバへのリモートデスクトップを許可している。つまり人事総務課の職員が踏み台サーバを経由して,共通管理者アカウントでDBサーバにログインできてしまい,これが基準違反になる。解答例は“人事総務課の職員が踏み台サーバを経由してDBサーバに共通管理者アカウントでログインする行為”である。

設問の“誰が,どのようなアクセス経路で,何を行うと”に合わせて,誰(人事総務課の職員),経路(踏み台サーバ経由),何を(共通管理者アカウントでDBサーバにログイン)の三つを書く。人事総務課の職員は人事サーバを管理する立場なので,本来はDBサーバに入る立場ではない。

字数は55字以内で,解答例は45字である。経路を“踏み台サーバを経由して”と書き,リモートデスクトップやFWのルールの細部までは書かない。

採点講評(IPA)

設問3は,全体的に正答率が高かった。本文中に示したデータベースサーバの移設に伴うリスクについて,正しく理解できていることがうかがわれた。

設問3(3) 解答欄1つ

本文中のdに入れる,適切な検出事項の番号を答えよ。

〔d〕解答例

  • 2
解説

本文の根拠

図3 検出事項2

検出事項 2:踏み台サーバを除く全てのサーバの管理者用アカウントに,共通管理者アカウントが使用されている。

〔検出事項3の対応方針の検討〕 M主任

案 2 を採用する場合は,検出事項

案2を採用すると,設問3(2)のとおり,人事総務課の職員が踏み台サーバ経由で共通管理者アカウントを使ってDBサーバにログインできてしまう。この問題の原因は,サーバが共通管理者アカウントで運用されている点である。図3で共通管理者アカウントの使用を指摘しているのは検出事項2なので,案2は検出事項2(共通管理者アカウントを個別のアカウントにする対策)と併せて実施する必要がある。解答は2である。

共通管理者アカウントを個別のアカウントに変えれば,誰がどのサーバにログインできるかをアカウントごとに制御でき,DBサーバにシステム運用課員以外が入れないようにできる。検出事項3(DBサーバがDMZにある点)は案1・案2そのものが対策であり,併せて実施する相手ではない。検出事項1はXSS,検出事項4は製作パートナへの貸与図面の管理で,DBサーバの管理者アカウントとは関係しない。

字数制限は無く,番号だけを答える。“検出事項 d の対策”と,空欄の前後が“番号”の形になっているので,“2”と数字だけを書く。

採点講評(IPA)

設問3は,全体的に正答率が高かった。本文中に示したデータベースサーバの移設に伴うリスクについて,正しく理解できていることがうかがわれた。

設問4(1) 解答欄1つ

本文中のeに入れる,製作パートナに確認する必要がある事項を 20 字以内で具体的に述べよ。

〔e〕解答例

  • 製作パートナに渡すCCIの数
解説

本文の根拠

図7 コンテナ方式の利用イメージ

プロトタイプ製作の契約ごとに,R 団体は,必要な数の CCI を製作パートナにメディアで渡す。

図7 コンテナ方式の利用イメージ

仮に製作パートナが,同一の CC を複数台の PC にインストールしても,そのうち最初にコンテナドライブにアクセスした 1 台だけがコンテナドライブにアクセスできる。

〔検出事項4の対応方針の検討〕 Nさん

第一に,製作パートナが使用している図面アプリなど,機密モードで起動できるアプリケーションソフトウェアを確認する必要があります。

コンテナ方式では,製作パートナの契約ごとに,R団体が必要な数のCCI(CCのインストーラ)をメディアで渡す。CCには識別情報があり,インストール後に最初にコンテナドライブにアクセスしたPC1台だけが使える(図7)。したがって,何台のPCで図面を扱うか(CCIをいくつ渡すか)をあらかじめ確認しておく必要がある。解答例は“製作パートナに渡すCCIの数”である。DRM方式にはCCもCCIも無いので,これはコンテナ方式だけに当てはまる確認事項である。

設問は“コンテナ方式だけに該当する確認事項”を問うている。採点講評も,DRM方式とコンテナ方式の両方に該当する確認事項を答えた誤答が一部にあったと述べている。たとえば“製作パートナが使用している図面アプリ”は,DRM方式でも対応しているかの確認が要るので,両方に当てはまり,コンテナ方式だけの事項ではない。第一の確認事項(機密モードで起動できるアプリ)が先に挙げられているので,第二はコンテナ方式固有の“CCIの数”になる。

字数は20字以内で,解答例は14字である。“製作パートナに渡すCCIの数”と,CCIの数が何で決まるかが分かるように書く。PCの台数や利用者数と書いても,CCIの数に結び付けて書けていれば考え方は同じである。

採点講評(IPA)

設問4は,全体的に正答率が高かった。

設問4(2) 解答欄1つ

本文中のfに入れる,コンテナ方式における不正行為の手口を 30 字以内で述べよ。

〔f〕解答例

  • CCをインストールしたPCを協力者宛てに輸送
解説

本文の根拠

図7 コンテナ方式の利用イメージ

仮に製作パートナが,同一の CC を複数台の PC にインストールしても,そのうち最初にコンテナドライブにアクセスした 1 台だけがコンテナドライブにアクセスできる。

図7 コンテナ方式の利用イメージ

仮想デスクトップ環境には CC をインストールすることはできない。

〔検出事項4の対応方針の検討〕 Nさん

基本的には DRM 方式と同じですが,コンテナ方式の場合は,まずは

DRM方式では,S図面をメールで協力者に送り,利用者IDとパスワードを電話などで伝えれば,協力者が自分のPCで開ける。コンテナ方式では,CCは最初にコンテナドライブにアクセスしたPC1台にひも付くので,CCを協力者のPCにインストールしても使えない。さらに機密モードのPCは,PCの他のドライブや外部記憶媒体,ネットワークにはアクセスできない。そこで協力者が図面を扱えるようにするには,製作パートナのPC(CCをインストール済みのPC)そのものを協力者宛てに輸送するしかない。解答例は“CCをインストールしたPCを協力者宛てに輸送”である。

輸送後,利用者IDとパスワードを電話で協力者に伝えれば,協力者が機密モードにログインして図面を閲覧できる。M主任の“コンテナ方式の方が,不正行為はより困難だ”という評価は,ファイルを送るだけでは済まず,PCごとの輸送という手間が要ることを指している。

字数は30字以内で,解答例は22字である。“CCをインストールしたPC”と“協力者宛てに輸送”を残す。“CCIを送る”とすると,CCは最初にアクセスしたPC1台にひも付くのでインストールし直しても使えず,不正行為が成立しない。

採点講評(IPA)

設問4は,全体的に正答率が高かった。

設問4(3) 解答欄1つ

本文中のgに入れる,適切な技術的対策を,45 字以内で述べよ。

〔g〕解答例

  • DRMサーバへの通信を製作パートナのグローバルIPアドレスからだけに制限する
解説

本文の根拠

図6 DRM方式の利用イメージ

DRM サーバは,R 団体の DMZ 上に設置され,利用者の認証機能や,利用者の図面へのアクセスを制御する機能をもっている。

図6 DRM方式の利用イメージ

PC と DRM サーバとの間で通信が行われ,認証ダイアログが表示される。

〔検出事項4の対応方針の検討〕 M主任

このような不正行為への技術的対策としては,FW での対策が効果的だな。

DRM方式のS図面は,DRM対応の図面アプリで開くときにPCとDMZ上のDRMサーバが通信し,認証ダイアログで利用者IDとパスワードを入れて初めて開ける。Nさんが述べた不正行為(協力者がS図面を受け取り,利用者IDとパスワードを電話で教えてもらって開く)は,協力者のPCがDRMサーバと通信できることが前提である。そこでFWで,DRMサーバへの通信を製作パートナのグローバルIPアドレスからだけに制限すれば,協力者のPC(製作パートナのネットワークの外)はDRMサーバに接続できず,S図面を開けなくなる。解答例は“DRMサーバへの通信を製作パートナのグローバルIPアドレスからだけに制限する”である。

設問は“FWで…することができる”の形で,技術的対策を問う。接続元の制限は,FWのフィルタリングルール(送信元IPアドレスによる許可)で実現できる対策である。協力者は製作パートナとは別の組織の第三者なので,通信元のグローバルIPアドレスが製作パートナのものとは異なると考えられる。

字数は45字以内で,解答例は38字である。“DRMサーバへの通信”と“製作パートナのグローバルIPアドレスからだけ”の二つを残す。“不正な通信を遮断する”のような一般論では,何を条件に遮断するのかが書けていないので誤りになる。

採点講評(IPA)

設問4は,全体的に正答率が高かった。

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

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

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

A 社は,従業員数 1,200 名のマスメディア関連会社である。A 社では,提供するサービスごとに Web サイトを用意し,インターネット上に公開している。Web サイトには,情報提供サイトやショッピングサイトなど様々なものがある。Web サイトでは,Web アプリケーションソフトウェア(以下,Web アプリという)が動作し,その設計,実装,テスト(以下,この 3 工程を開発という)及び運用は,Web サイトごとに情報システム子会社 B 社又は外部の業者に委託されている。多くの Web サイトでは,キャンペーンなどのたびに,開発とリリースを繰り返している。

〔現状のセキュリティ施策〕

A 社では,脆弱性を作り込まないようにするために,Web サイトのライフサイクルの五つの工程(要件定義,設計,実装,テスト,運用)に関するセキュリティガイドライン(以下,Web セキュリティガイドという)を整備している。現行の Web セキュリティガイド第 1 版を図 1 に示す。

(省略)工程 3. 実装:Web アプリの実装時に,次の脆弱性について対策すること。1. クロスサイトスクリプティング(以下,XSS という)2. SQL インジェクション(省略)工程 4. テスト:リリース前に Web アプリの脆弱性診断(以下,診断という)を実施すること。(省略)
図 1 Web セキュリティガイド第 1 版

Web セキュリティガイドは,開発及び運用を委託している外部の業者にも順守を義務付けている。

〔Web サイトの運用について〕

A 社のカスタマサポートサービス提供用の Web サイト X は,A 社のデータセンタ X に設置されている。Web サイト X は,B 社に開発と運用を委託している。データセンタ X と B 社本社のシステム構成を図 2 に示す。

データセンタ X の Web サイト X は,DMZ(L2SW に Web サーバ X,外部メールサーバ,DNS サーバが接続)と DB ネットワーク(DB サーバ X)から成る。L2SW は FW に接続され,DB サーバ X も FW に接続される。FW はインターネットに接続される。B 社本社は,FW を介してインターネットに接続され,FW は B 社 PC-LAN の L2SW に接続される。L2SW には複数の PC が接続される。凡例:FW はファイアウォール,DB はデータベース,L2SW はレイヤ 2 スイッチ。
図 2 データセンタ X と B 社本社のシステム構成

Web サーバ X 上では,Web アプリ X が稼働している。Web アプリ X は,Web アプリケーションフレームワーク(以下,WF という)の一つである WF-K を使用して開発されている。

Web サイト X とシステム構成が全く同じ Web サイト Y を,別のデータセンタ Y に災害対策用として設置している。Web サイト X 稼働時には Web サイト Y は,インターネットに公開しておらず,ホットスタンバイの状態で運用している。

Web サイト X と Web サイト Y のソフトウェアの脆弱性修正プログラム(以下,パッチという)は,3 か月ごとの定期メンテナンス日に B 社運用チームの C さんが適用している。C さんは,新しいパッチが公開されているかを定期メンテナンス日の前に確認し,もしあれば,まず Web サイト Y にパッチを適用している。Web サイト Y での稼働に問題がなければ,Web サイト X にもパッチを適用している。コンテンツも,まず Web サイト Y を更新し,問題がなければ,Web サイト X を更新している。パッチ適用とコンテンツ更新は,B 社 PC-LAN 上の C さんの PC から行っている。

なお,B 社では,全従業員に PC が 1 台ずつ貸与されており,その PC で Web サイトを閲覧して情報を収集したり,電子メール(以下,メールという)を送受信したりしている。

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

ある日,Web サイト X の利用者から,Web サイト X のダウンロードページでファイルをダウンロードしたところ,マルウェア対策ソフトが警告を表示したという連絡があった。C さんがダウンロードページを確認したところ,あるダウンロードファイルへのリンクが外部の URL に改ざんされていた。C さんは運用チームのリーダである D さんに報告し,Web サイト Y に切り替えるべきかを相談した。D さんは,切り替えると Web サイト Y も改ざんされてしまうことを懸念して,Web サイト Y には切り替えないよう C さんに伝えた。代わりに,DNS サーバの設定を変更して,メンテナンス中であることを表示するサーバに切り替えるよう C さんに指示した。D さんは,すぐに A 社に連絡し,ファイルへのリンクが改ざんされたと伝えた。その後,A 社の Web サイト X 及び Web サイト Y の担当部署の E さんがセキュリティ専門業者に連絡して,今後の対応について相談することになった。

〔セキュリティ専門業者による調査〕

セキュリティ専門業者の情報処理安全確保支援士(登録セキスペ)である F 氏が,被害の状況を調査した。調査内容と調査結果を表 1 に示す。

No.,調査内容,調査結果の 3 列の表。No.1:外部の URL に改ざんされているリンクが他にもあるかを Web サーバ X の全ページについて調査。結果:他に外部の URL に改ざんされているものはなかった。No.2:外部からの改ざんに悪用される既知の脆弱性が Web サイト X にあるかを調査。結果:WF-K に脆弱性 K が存在する。そのため,特定の文字列を含む HTTP リクエストを送信すると,Web アプリの実行ユーザ権限で任意のファイルの読出しと書込みができる可能性がある(以下,この攻撃手法を攻撃手法 K という)。なお,脆弱性 K については WF-K のパッチが提供されている。No.3:Web サーバ X のアクセスログに攻撃手法 K の痕跡があるかを調査。結果:ダウンロードページの更新日に当たる 3 日前のアクセスログを確認したところ,Web サイト X への外部からのアクセスがあったが,攻撃手法 K の痕跡は見付けられなかった。ただし,攻撃手法 K に使われる文字列が Web サーバ X の標準設定では①アクセスログに残らないので,脆弱性 K が原因である可能性は否定できない。(“アクセスログに残らない”に下線①が付いている)No.4:DB サーバ X とその DB が改ざんされているかを調査。結果:DB サーバ X のコマンド履歴と DB サーバ X の DB の操作ログを確認したところ,改ざんされた痕跡は見付けられなかった。No.5:Web サイト Y が改ざんされているかを調査。結果:アクセスログを確認したところ,外部からのアクセスはなく,改ざんされた痕跡も見付けられなかった。
表 1 F 氏の調査内容と調査結果

F 氏は,D さんと E さんに調査結果を伝えた。次は,その時の F 氏,D さん,E さんの会話である。

F 氏が,まず,Web サイト X に対して,攻撃手法 K による攻撃を実施したところ,実際に Web サーバ X を改ざんできることが確認できた。

次に,他に脆弱性がないか,Web サイト Y に対して B 社 PC-LAN から OS 及びミドルウェア(以下,プラットフォームという)の診断並びに Web アプリ X の診断を実施した。

プラットフォームの診断では,メンテナンスで使っている SSH サービスに対して辞書攻撃が容易に成功することが確認された。F 氏が C さんにセキュリティ上の問題がないか確認したところ,“SSH サービスは B 社 PC-LAN からだけアクセスできるように設定しているので問題はないと考えている”とのことであった。F 氏によると B 社 PC-LAN 内に攻撃者が侵入できると,Web サイト Y に不正にログインできる。そこで,F 氏は,②SSH の認証方式をパスワード認証方式以外に設定するよう D さんにアドバイスした。また,この設定をしたとしても,メンテナンスに自分の PC を利用するのはセキュリティ上の問題があるので,新たにメンテナンス専用 PC を準備し,それを B 社運用チームだけが利用できるようにすることをアドバイスした。

次に,Web アプリ X を診断したところ,XSS の脆弱性が 5 件検出された。

F 氏の調査結果を基に,D さんは,脆弱性 K に対するパッチ適用,SSH サービスの設定変更,メンテナンス専用 PC の準備,XSS が検出されたプログラムの修正及び Web サイト X の復旧を行うよう C さんに指示した。C さんは 1 週間で対応を完了し,Web サイト X が再稼働した。

〔全社の Web サイトのセキュリティ強化〕

セキュリティインシデントの発生及び F 氏の調査結果を受けて,A 社の情報システム担当役員である G 取締役は,全社の Web サイトのセキュリティを強化するよう,A 社情報システム部長を通じて同部の H 課長に指示した。H 課長は,WF,プラットフォーム及び Web アプリの脆弱性について調査を開始し,対策を検討することにした。

WF 及びプラットフォームの脆弱性については,Web サイトの改ざんなどの被害につながるので,全社の Web サイトについて脆弱性への対応状況を調査した。その結果,対応漏れがある Web サイトが 5 サイト見つかった。漏れがあった理由を各 Web サイト担当者にヒアリングしたところ,脆弱性が発表されていることを知らなかったとのことであった。

そこで,今後は情報システム部が一括して脆弱性情報を収集し,各 Web サイト担当者にその情報を提供することにした。それに先立って,効率的な情報収集ができるよう,各 Web サイト担当者には,bを報告させた。また,Web サイトの更改などに伴ってbに変更がある場合は,その都度報告させることにした。

パッチ適用は従来どおり各 Web サイト担当者に任せることにしたが,脆弱性情報を提供するだけでは,パッチ適用の遅れによって被害が出ることも考えられるので,パッチ適用期限を Web セキュリティガイドに追加することにした。

Web アプリの脆弱性については,まず,今回検出された XSS を作り込んだ原因について,B 社にヒアリングした。その結果,Web セキュリティガイドの記載が抽象的なので,誤った実装をしてしまったことが分かった。そこで,全ての担当者が正しい実装方法を理解できるように,Web セキュリティガイドを改訂して具体的な実装方法を追加することにした。改訂後の Web セキュリティガイド第 2 版を図 3 に示す。

(省略)工程 3. 実装:Web アプリの実装時に,次の脆弱性について対策すること。1. XSS:・ Web ページに出力する全ての要素に対して,エスケープ処理を施すこと(破線の下線)。(省略)2. SQL インジェクション:・ SQL 文の組立ては全てプレースホルダで実装すること(破線の下線)。(省略)工程 5. 運用:・ Web サイトのメンテナンス用にメンテナンス専用 PC を準備すること。メンテナンス専用 PC は,Web サイト担当者だけが利用できるようにすること(破線の下線)。・運用している Web サイトに脆弱性が発見された場合は,次の基準で対応すること(破線の下線)。-リスクが高の場合は,9 日以内に対応すること。-リスクが中の場合は,1 か月以内に対応すること。-リスクが低の場合は,3 か月以内に対応すること。(省略)注記:第 1 版から追加された部分を破線の下線で示す。
図 3 Web セキュリティガイド第 2 版

また,Web アプリの診断の実施状況について各 Web サイト担当者にヒアリングしたところ,“Web サイトの開発スケジュールが短くて,診断をセキュリティ専門業者に依頼するとリリースに間に合わないので,診断できずにリリースすることがある”とのことであった。そこで,H 課長は情報システム部が中心となって,いつでもすぐに診断を実施できるように,A 社内に Web アプリを診断できる体制を作ることを G 取締役に提案し,採用された。

〔自社による診断の実施検討〕

的確な診断を実施できる体制を作るには,A 社内で診断する項目(以下,A 社診断項目という)を定め,その項目の診断手順に診断員が習熟する必要があり,H 課長は,診断手順の作成と習熟には,1 年は掛かると考えた。それを少しでも短くするために,診断経験があり,登録セキスペでもある部下の Q さんと一緒に A 社診断項目と診断手順を検討した。

検討の結果,外部で公開されていた診断項目を参考にして,Web アプリに関する A 社診断項目を図 4 のとおり定めた。

・ XSS ・ SQL インジェクション ・ OS コマンドインジェクション ・[ c ]トラバーサル ・[ d ]リクエストフォージェリ ・セッション管理の不備 1) ・アクセス制御の不備や認可制御の欠落 ・[ e ]ヘッダインジェクション ・メールヘッダインジェクション ・クリック[ f ]。注 1) セッション ID が推測可能,セッション ID を URL 内に格納,HTTP over TLS 通信で利用する Cookie に Secure 属性がない,ログイン成功後にセッションを継続利用の 4 項目
図 4 A 社診断項目

診断方法には,自動診断ツールによる診断と手動による診断がある。A 社では自動診断ツールとして,自動診断ツール J を使う予定である。自動診断ツールによる診断は効率的だが,ツールによっては診断できない項目もある。そこで,2 人は両方の診断方法を組み合わせることにした。それを踏まえて作成した診断手順書第 1 版を図 5 に示す。

1. 診断準備(省略)2. 自動診断ツール J による診断(省略)3. 手動による診断:・診断項目 -[ d ]リクエストフォージェリ -セッション ID が推測可能 -セッション ID を URL 内に格納 -アクセス制御の不備や認可制御の欠落 ・診断方法:ローカルプロキシを用いて通信ログを取得しながら診断する。必要に応じて,リクエスト中のパラメタの値を変更して,リクエストを送る。(省略)
図 5 診断手順書第 1 版

その後,A 社の情報システム部のメンバ 3 名が,Q さんのトレーニングを受け,診断チームを結成した。しかし,トレーニングを受けただけでは,最初から精度の高い診断結果を安定して出せないかもしれない。そこで,当初はセキュリティ専門業者が診断を実施する際に同時に診断を実施することとし,両者の診断結果を比較・検証して,経験を積むことにした。

〔Web サイト Z に対する診断の実施〕

A 社のある部署が,新規に構築したショッピング用の Web サイト Z をリリースするに当たり,セキュリティ専門業者に診断を依頼した。その際に,診断チームのメンバの L さんにも診断を担当させることにした。Web サイト Z の開発は,外部の業者の P 社に委託しており,委託時に Web セキュリティガイドの最新版を渡している。Web サイト Z の画面遷移図を図 6 に,画面遷移の仕様を表 2 に示す。

ログインページから(あ)でマイページへ遷移する。ログインページからは,新規会員情報入力と問合せにも遷移する。新規会員情報入力からメール送信完了へ遷移する。新規会員登録完了は,メール送信完了画面への遷移時に会員に送付されるメールに記載された URL に利用者がアクセスすると表示される(注 1)。マイページから,会員メニュー,検索,商品一覧,限定商品一覧(注 2:有料会員の場合だけ表示する)に遷移する。検索から(い)で検索結果へ遷移し,検索結果からカート内容へ遷移する。商品一覧から(う)でカート内容へ遷移し,カート内容から商品購入情報入力,商品購入完了へ遷移する。限定商品一覧から(え)でカート内容へ遷移し,カート内容から商品購入情報入力,商品購入完了へ遷移する。注記 1:ログインページ画面以外からマイページ画面への画面遷移,エラー時の画面遷移,前の画面に戻るための画面遷移などは省略している。注記 2:全ての画面を同一ドメイン(www.z-site.com)で提供している。注 1) メール送信完了画面への遷移時に会員に送付されるメールに記載された URL に利用者がアクセスすると表示される。注 2) 有料会員の場合だけ表示する。
図 6 Web サイト Z の画面遷移図(抜粋)
画面遷移,PC での操作例・ URL 及び POST データ,操作の結果の 3 列の表。(あ)操作例:利用者 ID(例:user0001)とパスワード(例:9a8b7c6d)を入力し,“ログイン”ボタンをクリックする。URL:https://www.z-site.com/login POST データ:user_id=user0001&passwd=9a8b7c6d。操作の結果:・利用者認証が成功した場合,新しいセッション ID(JSESSIONID)とセッションオブジェクトを取得し,マイページ画面を表示する。それ以外の場合,セッション ID とセッションオブジェクトは取得せず,エラー内容を記載したログインページ画面に戻る。・セッション ID は Cookie に格納する。・ user_id の値が有料会員の利用者 ID の場合には,マイページ画面に限定商品一覧へのリンクを追加する。(い)操作例:検索画面でキーワード(例:New)を選び,“検索”ボタンをクリックする。URL:https://www.z-site.com/kensaku POST データ:keyword=New。操作の結果:・ keyword の値を DB から検索し,該当する商品を次画面に表示する。・該当する商品数が n 件の場合,画面上部に“該当商品数:n 件”と表示する。・該当する商品がない場合は 0 件と表示する。また,キーワードが指定されていない場合は全件を表示する。(う)操作例:商品一覧画面で商品を選び,“選択”ボタンをクリックする。URL:https://www.z-site.com/kounyu POST データ:code=0001344。操作の結果:・ code の値で DB を検索し,該当する商品をカートに入れ,次画面に表示する。また,code の値をセッションオブジェクトに格納する。該当する商品が存在しない場合はエラーを表示する。(え)操作例:有料会員の場合だけ表示される限定商品一覧画面で商品を選び,“選択”ボタンをクリックする。URL:https://www.z-site.com/kounyu POST データ:code=1000021。操作の結果:・ code の値で DB を検索し,該当する商品をカートに入れ,次画面に表示する。また,code の値をセッションオブジェクトに格納する。該当する商品が存在しない場合はエラーを表示する。
表 2 Web サイト Z の画面遷移の仕様(抜粋)

L さんは,Web サイト Z に対して診断を実施し,結果をとりまとめた。L さんは,L さんの診断結果と,セキュリティ専門業者の診断結果とを比較した。すると,両者ともに検出したものが 1 件,セキュリティ専門業者だけが検出したものが 3 件あった。Web サイト Z の診断結果を表 3 に示す。

項番,脆弱性の名称,検出箇所,L さんの診断方法・結果,セキュリティ専門業者の診断方法・結果の 5 列の表。(ア)SQL インジェクション,検索画面からの遷移,L さん:診断方法は表 4 に示す自動診断ツール J の入出力結果を基に判定,診断結果は検出。セキュリティ専門業者:診断方法は(省略),診断結果は検出。(イ)XSS,配達希望日を入力するためのカレンダ機能,L さん:診断方法は自動診断ツール J を利用,診断結果は未検出。セキュリティ専門業者:診断方法は図 8 の URL をアドレスバーに入力して診断,診断結果は検出。(ウ)アクセス制御の不備や認可制御の欠落,商品一覧画面からの遷移,L さん:診断方法は(省略),診断結果は未検出。セキュリティ専門業者:診断方法は表 5 の方法で確認,診断結果は検出。(エ)[ d ]リクエストフォージェリ,商品購入情報入力画面からの遷移,L さん:診断方法は(省略),診断結果は未検出。セキュリティ専門業者:診断方法は(省略),診断結果は検出。
表 3 Web サイト Z の診断結果
No.,対象画面,keyword の値,ステータスコード,画面に表示された該当商品数の 5 列の表。No.1:検索画面,bag' and '1'='1,200,該当商品数:[ g ]件。No.2:検索画面,bag' and '1'='2,200,該当商品数:[ h ]件。No.3:検索画面,bag,200,該当商品数:30 件。注記:診断時に DB には商品が 100 件登録されていた。
表 4 自動診断ツール J の入出力結果(抜粋)

(イ)の脆弱性については,商品購入情報入力画面から,配達希望日を入力するために起動するカレンダ機能で検出された。カレンダ機能を図 7 に示す。

・次に示す URL にアクセスするためのポップアップウィンドウが開き,カレンダが表示される。https://www.z-site.com/calendar?inputfieldid=haitatsukiboubi ・カレンダ上で利用者が任意の日付を選択する。・その日付が商品購入情報入力画面の配達希望日に設定される。
図 7 カレンダ機能

セキュリティ専門業者が脆弱性を確認するためにカレンダを開き,そのカレンダが表示されているポップアップウィンドウのアドレスバーに入力した URL を図 8 に,警告ダイアログに“NG”を表示させたレスポンスの該当箇所を図 9 に示す。

https://www.z-site.com/calendar?inputfieldid=[ i ]
図 8 脆弱性を確認するためにアドレスバーに入力した URL
1 行目:<script type="text/javascript"> 2 行目:var returnobj = window.opener.document.getElementById('[ i ]'); 3 行目:(省略) 4 行目:returnobj.value = selected_date; 5 行目:(省略) 6 行目:</script>
図 9 警告ダイアログに“NG”を表示させたレスポンスの該当箇所

なお,(イ)の脆弱性は,Web サイト Z とは異なるドメインのサイトから,図 8 の URL にアクセスさせられるような攻撃を受けた場合でも,現在普及している Web ブラウザの多くでは,スクリプトの実行時にエラーが発生し,攻撃が失敗する。しかし,Web ブラウザの種類やバージョンによっては被害が発生するおそれがあるので,セキュリティ専門業者は修正することを提言した。

(ウ)の脆弱性は,有料会員だけが購入できることになっている限定商品を一般会員が購入できてしまうというものであった。セキュリティ専門業者が確認した方法を表 5 に示す。

No.,操作の内容,操作の結果の 3 列の表。No.1:一般会員アカウントでログインして,商品一覧画面の URL にアクセスする。結果:商品一覧画面が表示される。No.2:商品一覧画面で[ j ]。結果:カートに限定商品が入った状態となる。No.3:商品購入処理を行う。結果:限定商品を購入できる。
表 5 (ウ)の脆弱性をセキュリティ専門業者が確認した方法

表 3 の診断結果から,Q さんは脆弱性を作り込まないよう Web セキュリティガイドに項目を追加した。さらに,XSS の脆弱性をよく作り込むパターン,アクセス制御の不備や認可制御の欠落及びdリクエストフォージェリについて,診断手順書を改訂して,診断手順を追加した。改訂された診断手順書第 2 版を図 10 に示す。

1. 診断準備:(省略)・アクセス制御の不備や認可制御の欠落を確認する場合には,事前に[ k ]アカウントを用意し,[ l ]を確認する。(この部分は第 1 版から追加された破線の下線)2. 自動診断ツール J による診断(省略)3. 手動による診断:・診断項目と確認手順(破線の下線)-XSS(省略)-[ d ]リクエストフォージェリ:処理を実行するページで,次のいずれかを満たす場合に脆弱性ありと判定する。・トークンなどのパラメタが存在しない。・トークンなどを削除しても処理が実行される。・トークン文字列の推測が可能である。・別の利用者のトークンが使用できる。処理が実行されたかどうかは,画面に表示されるメッセージなどから判断する。-セッション ID が推測可能 -セッション ID を URL 内に格納 -アクセス制御の不備や認可制御の欠落:[ k ]アカウントそれぞれについて,パラメタの値を変更するなどして,許可されていない操作ができる場合に脆弱性ありと判定する。・診断方法:ローカルプロキシを用いて通信ログを取得しながら診断する。必要に応じて,リクエスト中のパラメタの値を変更して,リクエストを送る。(省略)注記:第 1 版から追加された部分を破線の下線で示す。
図 10 診断手順書第 2 版

Web サイト Z で検出された脆弱性は,リリース前に修正するよう A 社の Web サイト Z の担当者から P 社に伝えた。Q さんが,脆弱性が作り込まれた原因を P 社に確認したところ,いずれも確認不足であるとのことであった。

〔改善案の検討〕

Q さんは,各工程でのレビューポイントを Web セキュリティガイドに記載することを H 課長に提案した。改訂された Web セキュリティガイド第 3 版を図 11 に示す。

注意事項:各工程の最後にレビューを行い,作業の妥当性を確認すること(破線の下線)。工程 1. 要件定義:(省略)レビューポイント:A 社のセキュリティポリシ及び想定される脅威に対して,必要なセキュリティ要件が盛り込まれていること。工程 2. 設計:(省略)レビューポイント:セキュリティ要件が機能又は運用によって満たされていること。工程 3. 実装:(省略)レビューポイント:Web セキュリティガイドに基づき,実装されていること。工程 4. テスト:(省略)レビューポイント:セキュリティ機能及びセキュリティに関する運用が設計どおりになっているかがテストされていること,適切な診断が実施されていること,並びに検出された脆弱性が修正されていること。工程 5. 運用:(省略)注記:第 2 版から追加された部分を破線の下線で示す。
図 11 Web セキュリティガイド第 3 版

しかし,今回のように開発を外部の業者に委託する場合,図 11 に従って開発されていることを確認するには工夫が必要である。そこで,H 課長は,③外部に開発を委託する契約の検収条件に追加すべき記載内容を検討した。

H 課長は,その後も Web セキュリティガイドの改善を続けた。迅速なパッチ適用の効果もあり,A 社では,今のところ Web サイトへの攻撃による被害は起きていない。

出題趣旨(IPA)

Webサイトのセキュリティは,向上してきてはいるものの,セキュリティインシデントはいまだに後を絶たない。脆弱性診断の実施や,設計,実装,テスト及び運用のガイドラインの利用といったセキュリティ対策に改善の余地があると考えられる。本問では,Webサイトのセキュリティを題材に,Webサイトで発生したセキュリティインシデントについて調査し,対策を立案する能力,脆弱性診断を実施する場合にWebサイトの仕様に基づいて診断手順を検討する能力,及び診断結果から得られた知見を基にガイドラインを改善する能力を問う。

採点講評(問全体・IPA)

問2では,Webサイトのセキュリティガイドラインの整備やセキュリティ診断の内製化を題材に,脆弱性に関する知識,管理方法及び検出方法について出題した。

設問と解答例

設問1(1) 35字以内

表 1 中の下線①について,アクセスログに残らないのは,どのような攻撃の場合か。35 字以内で述べよ。

解答例

  • 攻撃に使われる文字列がPOSTデータ内に含まれている場合
解説

本文の根拠

表1 No.3

攻撃手法 K に使われる文字列が Web サーバ X の標準設定では①アクセスログに残らないので,脆弱性 K が原因である可能性は否定できない。

表1 No.2

特定の文字列を含む HTTP リクエストを送信すると,Web アプリの実行ユーザ権限で任意のファイルの読出しと書込みができる可能性がある

表2 (い)

POST データ:keyword=New

攻撃手法Kは,特定の文字列を含むHTTPリクエストを送る攻撃である。一般的なWebサーバのアクセスログは,リクエストの1行目(メソッド,URL,HTTPバージョン)を記録する書式が標準で,たとえばApache HTTP Serverのログ書式の%rは“First line of request”(リクエストの最初の行)を記録し,共通ログ書式(CLF)もこの%rを使う。GETのパラメタはURLの一部なのでこの行に残るが,POSTデータはリクエストの本文に入るので,標準設定ではアクセスログに残らない。表2のとおり,WebサイトZの操作例でもPOSTデータでパラメタを送っている。攻撃に使われる文字列がPOSTデータに含まれていれば,ログを見ても痕跡は見付からない。解答例は“攻撃に使われる文字列がPOSTデータ内に含まれている場合”である。

表1のNo.3は,ログに痕跡が無くても,攻撃手法Kが使われた可能性を否定できないと述べている。ログに残らない場合があるので,ログに痕跡が無いことは“攻撃されなかった”ことの証明にならない。

字数は35字以内で,解答例は28字である。“POSTデータ内に文字列が含まれる場合”と攻撃の条件を書く。“ログが取得されていない場合”のように設定の不備と書くと,“標準設定では残らない”という本文の前提とずれる。採点講評は,HTTPメソッドとWebサーバのアクセスログの関係を理解しておいてほしいと述べている。

採点講評(IPA)

設問1(1),(3)は,正答率が低かった。HTTPメソッドとWebサーバのアクセスログの関係は攻撃の監視・分析において,SSHの認証方式はシステム運用管理において,それぞれ必要となる知識であるので,よく理解しておいてほしい。

設問1(2) 解答欄1つ

本文中のaに入れる適切な確認方法を,表 1 の結果を考慮し,20 字以内で具体的に述べよ。

〔a〕解答例

  • WebサイトYの全ファイルと比較
解説

本文の根拠

〔Webサイトの運用について〕

Web サイト X とシステム構成が全く同じ Web サイト Y を,別のデータセンタ Y に災害対策用として設置している。

表1 No.5

アクセスログを確認したところ,外部からのアクセスはなく,改ざんされた痕跡も見付けられなかった。

〔Webサイトの運用について〕

コンテンツも,まず Web サイト Y を更新し,問題がなければ,Web サイト X を更新している。

F氏の会話

スクリプトを埋め込まれるなど,他の形でページが改ざんされている可能性もあるので確認が必要です。

表1のNo.1の調査はリンクの書き換えを探したもので,スクリプトの埋め込みなど他の形の改ざんは見付けられない。確認の方法として,WebサイトXの全ファイルを,改ざんされていないWebサイトYの全ファイルと比較する方法が挙げられる。WebサイトYはXと構成が同じで,コンテンツもXより先に更新して問題が無いことを確かめてからXに反映しているので,Yのファイルは正しい内容の基準になる。さらに表1のNo.5のとおり,Yには外部からのアクセスも改ざんの痕跡も無い。解答例は“WebサイトYの全ファイルと比較”である。

全ファイルを比較すれば,ページ単位の目視確認と違って,リンク以外の変更(埋め込まれたスクリプトなど)も漏れなく見付けられ,機械的にできるので効率も良い。F氏の“漏れがなく,効率も良い”はこの意味である。

字数は20字以内で,解答例は16字である。“全ファイルを”の続きとして“WebサイトYの全ファイルと比較”と,比較の相手と動作を書く。“表1の結果を考慮し”という指定は,Yが改ざんされていないという結果をさしている。比較の相手にXのバックアップなど別のものを書くと,この結果を踏まえた答えにならない。

設問1(3) 10字以内

本文中の下線②について,設定すべき認証方式の名称を,10 字以内で答えよ。

解答例

  • 公開鍵認証方式
解説

本文の根拠

〔セキュリティ専門業者による調査〕

メンテナンスで使っている SSH サービスに対して辞書攻撃が容易に成功することが確認された。

〔セキュリティ専門業者による調査〕

SSH の認証方式をパスワード認証方式以外に設定する

〔セキュリティ専門業者による調査〕

B 社 PC-LAN 内に攻撃者が侵入できると,Web サイト Y に不正にログインできる。

辞書攻撃は,パスワードの候補を次々に試す攻撃なので,パスワード認証を使うかぎり成立する。SSHの認証方式のうちパスワード以外の代表的なものは公開鍵認証方式である。SSHの認証プロトコルを定めたRFC 4252は,7節でパスワード認証とは別に公開鍵認証(publickey)を定めており,クライアントが利用者の秘密鍵で署名し,サーバが公開鍵で署名の正しさを確かめる。パスワードを推測して入るという攻撃が使えなくなる。解答は“公開鍵認証方式”である。

B社PC-LAN内に攻撃者が侵入した場合に備えるための助言なので,PC-LAN内からはSSHにアクセスできても,秘密鍵を持っていなければログインできない形にするのが狙いである。採点講評は,SSHの認証方式はシステム運用管理において必要となる知識なので,よく理解しておいてほしいと述べている。

字数は10字以内で,解答例は7字である。“公開鍵認証”でも意味は通じるが,設問は“認証方式の名称”なので,“公開鍵認証方式”と答える。“ワンタイムパスワード”のようにSSHで一般的でない方式や,“パスワード認証方式以外”という答えは名称にならない。

採点講評(IPA)

設問1(1),(3)は,正答率が低かった。HTTPメソッドとWebサーバのアクセスログの関係は攻撃の監視・分析において,SSHの認証方式はシステム運用管理において,それぞれ必要となる知識であるので,よく理解しておいてほしい。

設問2 解答欄1つ

本文中のbに入れる適切な報告内容を,50 字以内で具体的に述べよ。

〔b〕解答例

  • Webサイトで使用しているOS,ミドルウェア及びWFの名称並びにそれぞれのバージョン情報
解説

本文の根拠

〔全社のWebサイトのセキュリティ強化〕

漏れがあった理由を各 Web サイト担当者にヒアリングしたところ,脆弱性が発表されていることを知らなかったとのことであった。

〔全社のWebサイトのセキュリティ強化〕

今後は情報システム部が一括して脆弱性情報を収集し,各 Web サイト担当者にその情報を提供することにした。

〔セキュリティ専門業者による調査〕

OS 及びミドルウェア(以下,プラットフォームという)

〔Webサイトの運用について〕

Web アプリケーションフレームワーク(以下,WF という)

情報システム部が脆弱性情報を一括して収集するには,どのWebサイトがどの製品のどの版を使っているかを把握している必要がある。対応が漏れたのは,担当者が脆弱性の公表を知らなかったためである。WFやプラットフォーム(OS,ミドルウェア)の脆弱性は,製品名と版が分かれば公表情報と照らせるので,担当者には“Webサイトで使用しているOS,ミドルウェア及びWFの名称並びにそれぞれのバージョン情報”を報告させる。解答例はこれである。

この情報は,ソフトウェアの構成の台帳にあたる。採点講評は,脆弱性管理にはソフトウェア構成管理が必要なことについて,受験者の理解が進んでいることがうかがわれる,としている。更改などで構成が変わったら,その都度報告させるのも,台帳を最新に保つためである。

字数は50字以内で,解答例は44字である。対象を“OS,ミドルウェア,WF”の三つ,内容を“名称とバージョン情報”の二つに分けて書く。“使用しているソフトウェア一覧”とまとめると,何を指すのかが曖昧になる。

採点講評(IPA)

設問2は,正答率が高かった。脆弱性管理にはソフトウェア構成管理が必要なことについて,受験者の理解が進んでいることがうかがわれる。

設問3 解答欄4つ

図 4 中のc,本文中,図 4 中,図 5 中,表 3 中及び図 10 中のd,図 4 中のe,図 4 中のfに入れる適切な字句を,それぞれ 10 字以内で答えよ。

〔c〕解答例

  • ディレクトリ

〔d〕解答例

  • クロスサイト

〔e〕解答例

  • HTTP

〔f〕解答例

  • ジャッキング
解説

本文の根拠

図4 A社診断項目

cトラバーサル

図10 診断手順書第2版

トークンなどを削除しても処理が実行される。

図4 A社診断項目

eヘッダインジェクション

図4 A社診断項目

メールヘッダインジェクション

図4 A社診断項目

クリックf

cは“ディレクトリ”(ディレクトリトラバーサル)である。パス名を操作して意図しないファイルを読み書きする攻撃で,OSコマンドインジェクションと同じく,入力値の扱いの不備を診断する項目である。dは“クロスサイト”(クロスサイトリクエストフォージェリ)である。図10の診断手順に“トークンなどのパラメタが存在しない”“トークンなどを削除しても処理が実行される”とあり,利用者が意図しない処理を実行させられるかを診断している。eは“HTTP”(HTTPヘッダインジェクション)で,次の項目がメールヘッダインジェクションなので対になる。fは“ジャッキング”(クリックジャッキング)である。

設問はc,d,e,fを“それぞれ10字以内”で答えるもので,いずれも空欄の前後と合わせて名称になる字句を入れる。dは図4,図5,表3,図10と本文の複数の箇所で同じ語が入り,いずれも“リクエストフォージェリ”の前に付く。“クロスサイトリクエストフォージェリ”のうち,空欄の外にある“リクエストフォージェリ”は書かない。

字数はそれぞれ10字以内で,解答例は6字,6字,4字,6字である。空欄の外にある語まで含めて“ディレクトリトラバーサル”などと答えると,10字を超えるか,語が重なる。

設問4(1) 解答欄2つ

表 4 中のg,hに入れる適切な数値を答えよ。

〔g〕解答例

  • 30

〔h〕解答例

  • 0
解説

本文の根拠

表4 No.3

検索画面,bag,200,該当商品数:30 件。

表4 注記

診断時に DB には商品が 100 件登録されていた。

表2 (い)

keyword の値を DB から検索し,該当する商品を次画面に表示する。

表4のNo.3は,keywordの値がbagのとき30件だった。No.1のbag' and '1'='1は,bagの条件に“'1'='1”という常に成り立つ条件をANDでつないだものである。SQLインジェクションが存在すれば,この入力がSQL文の条件の一部として実行されるので,絞り込みの結果は変わらず,gは30である。No.2のbag' and '1'='2は,“'1'='2”という常に成り立たない条件をANDでつないだものなので,bagに該当する商品も含め1件も該当せず,hは0である。ステータスコードは3件とも200で,画面の表示だけで違いが分かる。

診断ツールJは,この結果の差(30件と0件)から,入力が条件として実行されている,つまりSQLインジェクションが存在すると判定する。採点講評は,gに,DBに登録されていた全件数である100件という解答が散見されたと述べている。100件になるのはOR条件のように常に成り立つ条件が絞り込みを無くす場合で,ここのようにANDでつなぐと元の結果(30件)が保たれる。

字数制限は無く,数値だけを答える。表3の(ア)の診断方法は“表4に示す自動診断ツールJの入出力結果を基に判定”なので,No.1とNo.2の結果の違いを読む。

採点講評(IPA)

設問4(1)gは,DBに登録されていた全件数である100件という解答が散見された。SQLインジェクションが存在する場合にどのようなSQL文が実行されるかを考えて,解答してほしかった。

設問4(2) 解答欄1つ

図 8 中及び図 9 中のiに入れる適切な文字列を解答群の中から選び,記号で答えよ。 解答群 ア "><script>alert('NG');</script> イ ');alert('NG ウ 'alert('NG'); エ <script>alert('NG');</script>

〔i〕解答例

  • イ
解説

本文の根拠

図8

https://www.z-site.com/calendar?inputfieldid=i

図9

var returnobj = window.opener.document.getElementById('i');

図7 カレンダ機能

https://www.z-site.com/calendar?inputfieldid=haitatsukiboubi

図7のとおり,カレンダのURLのパラメタinputfieldidの値(通常はhaitatsukiboubi)が,図9のスクリプトのgetElementByIdの引数の文字列にそのまま埋め込まれる。この文字列リテラルの中に,引用符を閉じる文字を含む値を入れると,スクリプトを書き足せる。イ(');alert('NG)を入れると,図9は getElementById('');alert('NG'); となり,引用符が対応して構文が崩れず,alert('NG') が実行されて警告ダイアログに“NG”が出る。解答は“イ”である。

ほかの選択肢は,埋め込んだ後の文字列が構文として成り立たない。ア("><script>alert('NG');</script>)は,先頭の引用符が文字列を閉じないまま続くので,getElementById('"><script>alert(' のあとに NG という識別子が現れて構文エラーになる。エ(<script>alert('NG');</script>)も同じ理由で,文字列リテラルの途中で'が現れて構文エラーになる。ウ('alert('NG');)は getElementById(''alert('NG');'); となり,空の文字列の直後に識別子が続いて構文エラーになる。

字数制限は無く,記号で答える。引用符が閉じていて,かつ後ろの ');(図9の元の閉じ括弧と引用符)とつながって文が成立するかを,実際に埋め込んで確かめるとよい。

設問4(3) 解答欄1つ

表 5 中のjに入れる適切な操作内容を,表 2 中の画面遷移を指定して 40 字以内で述べよ。

〔j〕解答例

  • (う)の操作を実行するときに,codeの値を限定商品の値に書き替える
解説

本文の根拠

〔WebサイトZに対する診断の実施〕

有料会員だけが購入できることになっている限定商品を一般会員が購入できてしまうというものであった。

表5 No.1

一般会員アカウントでログインして,商品一覧画面の URL にアクセスする。

表2 (え)

操作例:有料会員の場合だけ表示される限定商品一覧画面で商品を選び,“選択”ボタンをクリックする。

表2 (う)

code の値で DB を検索し,該当する商品をカートに入れ,次画面に表示する。

表2の(う)(一般の商品一覧)と(え)(有料会員だけに表示される限定商品一覧)は,どちらもURLがhttps://www.z-site.com/kounyuで,POSTデータはcodeだけである。サーバは,codeの値でDBを検索して商品をカートに入れるが,操作した利用者が有料会員かどうかを確認していない(認可制御の欠落)。したがって,一般会員がログインして商品一覧画面を開き,(う)の操作を実行するときにcodeの値を限定商品の値(たとえば(え)の例の1000021)に書き替えれば,限定商品がカートに入る。表5のNo.2はこの操作で,結果の“カートに限定商品が入った状態となる”と合う。解答例は“(う)の操作を実行するときに,codeの値を限定商品の値に書き替える”である。

限定商品一覧画面は有料会員だけに表示され,一般会員には画面上のリンクが出ない。しかし購入処理は一覧画面と同じURLで共通なので,リンクを隠すだけでは防げない。

字数は40字以内で,解答例は34字である。“表2中の画面遷移を指定して”とあるので,“(う)の操作”と書き,操作の中身(codeの値を限定商品の値に書き替える)をあわせて述べる。画面遷移の記号(う)を書かずに“商品選択時に”とすると,指定を満たさない。

設問4(4) 解答欄2つ

図 10 中のkに入れる適切な字句を,表 5 の方法を踏まえて,15 字以内で答えよ。また,図 10 中のlに入れる適切な字句を,表 5 の方法を踏まえて,20 字以内で具体的に述べよ。

〔k〕解答例

  • 権限が異なる複数の

〔l〕解答例

  • 許可されている操作の違い
解説

本文の根拠

図10 診断手順書第2版

アクセス制御の不備や認可制御の欠落を確認する場合には,事前にkアカウントを用意し,lを確認する。

図10 診断手順書第2版

kアカウントそれぞれについて,パラメタの値を変更するなどして,許可されていない操作ができる場合に脆弱性ありと判定する。

表5 No.1

一般会員アカウントでログインして,商品一覧画面の URL にアクセスする。

表5の確認方法は,一般会員のアカウントで操作して,有料会員にだけ許される操作(限定商品の購入)ができるかを調べるものだった。これを手順書に一般化すると,診断の準備として“権限が異なる複数のアカウント”(kは,一般会員と有料会員など)を用意し,lとして“許可されている操作の違い”(アカウントごとに何が許されているか)を確認しておく。診断のときは,各アカウントについてパラメタの値を変更するなどして,許可されていない操作ができるかを調べる。解答例は,kが“権限が異なる複数の”,lが“許可されている操作の違い”である。

kは“アカウント”の直前に入る語句で,図10にkが2回出てくるので,どちらにも当てはまる。“複数の”と“権限が異なる”の二つが要る。単に“一般会員の”とするのは,この診断では有料会員も必要なので不足である。

字数は,kが15字以内で解答例は9字,lが20字以内で解答例は12字である。lは,何を確認するのかを“許可されている操作”と書き,アカウントごとの“違い”まで入れる。採点講評は,アクセス制御や認可制御の診断方法について,よく理解しておいてほしいと述べている。

採点講評(IPA)

設問4(4)k,lは,正答率が低かった。アクセス制御や認可制御の診断方法について,よく理解しておいてほしい。

設問5 40字以内

本文中の下線③について,検収条件に追加すべき記載内容は何か。40 字以内で具体的に述べよ。

解答例

  • 作業の妥当性を確認できる詳細なレビュー記録を委託先が提出していること
解説

本文の根拠

図11 Webセキュリティガイド第3版

注意事項:各工程の最後にレビューを行い,作業の妥当性を確認すること

〔改善案の検討〕

今回のように開発を外部の業者に委託する場合,図 11 に従って開発されていることを確認するには工夫が必要である。

〔Webサイトの運用について〕

Web セキュリティガイドは,開発及び運用を委託している外部の業者にも順守を義務付けている。

図11のWebセキュリティガイド第3版は,各工程の最後にレビューを行って作業の妥当性を確認することを求めている。社内で開発するなら,その過程を確認できるが,外部に委託すると,委託先が実際にレビューをして,その妥当性を確認したのかが分からない。そこで,検収条件(成果物を受け取るときの条件)に,作業の妥当性を確認できる詳細なレビュー記録を委託先が提出していること,を加える。解答例は“作業の妥当性を確認できる詳細なレビュー記録を委託先が提出していること”である。

WebサイトZの開発は外部のP社に委託しており,委託時にはWebセキュリティガイドの最新版を渡している。ところが脆弱性は作り込まれていて,その原因はいずれも確認不足だった。ガイドを渡して順守を義務付けるだけでは,守られたかどうかが分からないので,検収で証拠(記録)を求める。

字数は40字以内で,解答例は34字である。“レビュー記録”と“委託先が提出”の二つを残す。“詳細な”を落とすと,“レビューをした”という形式的な記録で済んでしまう。レビューの妥当性を確認できる内容だという点を入れる。

設問6 40字以内

診断で見つかった個々の脆弱性は Web セキュリティガイドを改善するためにどのように利用できるか。40 字以内で述べよ。

解答例

  • 脆弱性の作り込み原因を調査して,注意すべきポイントを追加する。
解説

本文の根拠

〔自社による診断の実施検討〕

表 3 の診断結果から,Q さんは脆弱性を作り込まないよう Web セキュリティガイドに項目を追加した。

〔WebサイトZに対する診断の実施〕

Q さんが,脆弱性が作り込まれた原因を P 社に確認したところ,いずれも確認不足であるとのことであった。

〔全社のWebサイトのセキュリティ強化〕

Web セキュリティガイドの記載が抽象的なので,誤った実装をしてしまったことが分かった。

WebサイトZの診断で見つかった脆弱性は,Webセキュリティガイドを渡してあったにもかかわらず,作り込まれたものである。つまりガイドが対策として十分に働いていない部分がある。そこで,個々の脆弱性について作り込まれた原因(どの工程の何が抜けていたか)を調べ,同じ原因で脆弱性を作り込まないための注意すべきポイントをガイドに追加する。解答例は“脆弱性の作り込み原因を調査して,注意すべきポイントを追加する。”である。

本文でも,XSSを作り込んだ原因をヒアリングして,記載が抽象的だったことが分かり,実装方法を具体的に書き足した(図3)。表3の診断結果から項目を追加する対応も同じ考え方である。診断の結果を“見つかった脆弱性を直して終わり”にせず,ガイドに反映して,次の開発で作り込まないようにする。

字数は40字以内で,解答例は31字である。“作り込み原因の調査”と“注意すべきポイントをガイドに追加”の二つを残す。“脆弱性を修正する”だけでは,その場の対応であって,ガイドの改善に利用する答えにならない。

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