ファイナンス、情報通信技術のスキル・アグリゲーション・サイト
情報処理推進機構(IPA)が実施する情報処理技術者試験の「情報セキュリティスペシャリスト試験」(SC)午後Ⅰ試験・午後Ⅱ試験の過去の出題から、情報セキュリティへの考えを深めていきます。
過去の試験問題の全文と解答例、講評が、 https://www.jitec.ipa.go.jp
試験対策以外にも、情報セキュリティ学習をさらに進めるためのきっかけとなれば、と思います。
Q 社の社外向け情報システムは,販売システム(以下,E システムという)と広報システム(以下,F システムという)から成リ,G 社のデータセンタに設置されている。E システムは Q 社の販売チャネルの大部分を担っており,保守のための時間帯を除き,常時稼働している。F システムは投資家などに対する財務情報・会社情報を提供している。
図1 社外向け情報システムのネッ卜ワ一ク構成
表1 E サーバのソフ卜ウェア構成
ソフトウェア 現在の動作権限設定 備考 OS ー ー HTTP サーバ(WAF 含む) 管理者権限 ー WAS 管理者権限 ー Web アプリ E ー WAS の動作権限と同一 注記 HTTP リクエストは,LB → HTTP サーバ(WAF 含む) → WAS → Web アプリ E の順に処理される。
- ・ルールは,[検証対象],[パターン]及び[動作]の三つを 1 行に記述する。
- (例 : POST abc
¥.exe 検知) - ・[検証対象]には,次のいずれかを指定する。
- GET : GET メソッドのパラメタ名を検証対象とする。
- POST : POST メソッドのバラメタ名を検証対象とする。
- ANY : 任意のメソッドのパラメタ名を検証対象とする。
- COOKIE : Cookie の名前を検証対象とする。
- Multipart : Multipart
/form-data のフィールド名を検証対象とする。 - ・[パターン]には,次の要素で構成される正規表現を指定する。
- ^ : 文字列の先頭にマッチする。
- ¥W : 任意の非英数字にマッチする。
- x|y : x 又は y にマッチする。
- (x|y)z : xz 又は yz にマッチする。
- [xyz] : x,y 又は z のいずれかにマッチする。
- . : 任意の文字とマッチする。
- ¥. : “.” とマッチする。
- * : 直前の要素と 0 回以上マッチする。
- ・[動作]には,次のいずれかを指定する。
- 遮断 : 通信を遮断し,ログに記録する。
- 検知 : 通信を通過させ,ログに記録する。
- 許可 : 通信を通過させ,ログに記録しない。
図2 WAF のル一ルの記述形式
図3 WAF の動作
S 主 任 : E サーバに対して,攻撃者が脆弱性 X をどのように悪用できるのか具体的に説明してくれるかな。 T さ ん : 表2の攻撃コードの例を使って説明します。攻撃者は攻撃コードを表2の項番の順に E サーバに送ることで,任意のコマンド “XXXX” を実行できます。表2の攻撃コードの送信後,WAS のアクセスログ(以下,WAS ログという)のファイルが a に作成されます。 今回の脆弱性情報によると,GET メソッドに限らず POST メソッド,Multipart /form-data の POST メソッド,Cookie による攻撃の可能性もあります。さらに,攻撃者が WAS ログを細工する可能性もあります。
表2 攻撃コ一ドの例
項番 攻撃コード 説明 1 GET /app1 /app .action ? ▲▲ .directory =webapps /ROOT WAS ログの出力先を公開ディレクトリ上に変更する。 2 GET /app1 /app .action ? ▲▲ .prefix =shell WAS ログのファイル名を指定する。ファイル名のプレフィックスを “shell” という文字列にして,拡張子を jsp にする。 3 GET /app1 /app .action ? ▲▲ .suffix =.jsp 4 GET /app1 /app .action ? ▲▲ .fileDateFormat =1 WAS ログの日付フォーマットの設定を “1” という文字列にする。WAS ログのファイル名が,shell1.jsp となる。 5 GET /app1 /app .action ?a =<%Runtime .getRuntime() .exec ("XXXX");%> 任意のコマンド “XXXX” を実行させるためのコードが WAS ログに記録される。 6 GET /shell1 .jsp shell1.jsp を呼び出すことで,コマンド “XXXX” を WAS と同じ動作権限で実行する。 注記 ▲▲ は、“class
.classLoader .resources .context .parent .pipeline .first” という文字列を示す。
T さ ん : 表3のように記述します。表3の[パターン]列には,正規表現で示された文字列を指定します。当初,① “^class¥..*” というパターンがセキュリティ専門家によって公表されましたが,これでは遮断されない攻撃が見つかリました。その後,表3に示す正しい[パターン]が別のセキュリティ専門家によって公表されました。
表3 WAF のル一ル例
項番 [検証対象] [パターン] [動作] 1 b (^|¥W)[cC]lass ¥W c 2 d (^|¥W)[cC]lass ¥W e 3 f (^|¥W)[cC]lass ¥W g
T さ ん : 攻撃ではない HTTP リクエストを遮断してしまう h に注意する必要があります。例えば,表3のルールでは,“class.abc” を含む HTTP リクエストが遮断されてしまいます。さらに,WAF による対策に加えて,攻撃時のリスク軽減対策として,②現在の WAS の動作権眼設定を見直します。
S 主任は,修正モジュールが提供されている場合は,一般的には修正モジュール適用による対策が望ましいが,本ケースでは WAF による対策を選択すベきと判断し,経営陣に説明して了承を得た。開発検証用のシステムで③動作検証を実施し,問題ないことを確認後,本番環境のシステムで設定を行い,E システムを再稼働させた。
本来ならば,追加した WAF のルールで攻撃を遮断する前に,④本番環境のシステムに追加したルールの[動作]に “検知” を指定し,一定期間運用するのが望ましい。しかし,今回は緊急対応のため,そのような運用はしなかった。
その後,Q 社では,脆弱性 X の修正モジュール適用による悪影響がないことを確認し,それを適用した。
設問1 E システム及び F システムそれぞれについて,Q 社のビジネスを踏まえて,情報セキュリティの3要索のうち重視すベき要素とその理由を,重視すベき要索は 5 字以内,理由は 25 字以内でそれぞれ述ぺよ。
設問 解答例・解答の要点 設問1 E システム 要素 可用性 理由 販売チャネルの大部分を担い,常時可用が必要なため F システム 要素 完全性 理由 投資家に正確な財務情報,会社情報を提供するため
設問2 本文中の a に入れる適切な字句を,表2 中の字句を用いて 15 字以内で答えよ。
設問 解答例・解答の要点 設問2 a 公開ディレクトリ
設問3 〔脆弱性ヘの対策〕について,(1)~(4) に答えよ。
(1) 表3 中の b ~ g に入れる適切な字句を,図2 中の字句を用いて答えよ。
設問 解答例・解答の要点 設問3 (1) b ANY b,d,f は,順不同 c 遮断 d COOKIE e 遮断 f Multipart g 遮断
(2) 本文中の 下線① に示した[パターン]にマッチする文字列を解答群の中から全て選び,記号で答えよ。解答群
- ア anObject.class.classLoader
- イ class.ClassLoader
- ウ class.classLoader
- エ class['classLoader']
設問 解答例・解答の要点 設問3 (2) イ,ウ
(3) 本文中の h に入れる適切な字句を解答群の中から選び,記号で答えよ。解答群
- ア フェールセーフ
- イ フェールソフト
- ウ フォールスネガティブ
- エ フォールスボジティブ
設問 解答例・解答の要点 設問3 (3) h エ
(4) 本文中の 下線② について,設定をどのように見直すベきか。25 字以内で述べよ。
設問 解答例・解答の要点 設問3 (4) WAS を必要最小限の権限で動作させる。
設問4 本文中の 下線③ について,WAF に関して具体的に何を検証すべきか。二つ挙げ,それぞれ 30 字以内で述べよ。
設問 解答例・解答の要点 設問4 ① ・脆弱性 X を突く攻撃を妨げること ② ・ E システム利用のための正常な通信が許可されること
設問5 本文中の 下線④ について,WAF のルールの[動作]に “検知” を指定し,ー定期間運用することにはどのような利点があるか。45 字以内で述べよ。
設問 解答例・解答の要点 設問5 販売機会損失など,ビジネスへの影響を与えずに誤検知の検証ができる。