指摘事項 A で予想される攻撃である,セッション ID の盗聴については,ログから検出することは困難である。次善の策として,盗聴されたセッション ID が不正に使用されたことを検出するために,同一のセッション ID が,複数の送信元 IP アドレスから送信されているリクエストをログから抽出することにした。この方法では,①正当なアクセスを誤って検出してしまう場合と,②不正なアクセスを検出できない場合があるが,それらの場合については容認することにした。
指摘事項 B に対する攻撃は,③HTTP アクセスログから検出することにした。ただし,この方法では b メソッドが使用された場合にしか検出できない。
以上の方法で過去のログを確認したところ,不正使用や攻撃は検出されなかった。
〔改修方法の検討〕
Y 主任は,脆弱性への対応を行うために,まず,指摘事項 B に該当する複数のプログラムのソースコードを再度確認した。該当するプログラムの一つを図 4 に示す。
図 4 指摘事項 B に該当するプログラム図 4 指摘事項 B に該当するプログラム(続き)
このプログラムは,利用者が入力した文字列をダイアログに表示するために,受け取ったパラメタの値をスクリプトに埋め込み,動的にスクリプトを生成する。図 4 の c 行目では,通常の HTML にパラメタの値を埋め込むときと同じ方法で,エスケープ処理を行っていたことから,生成されるスクリプトに問題が生じてしまうことが分かった。
Y 主任は,以上の検討結果から,指摘事項 A と指摘事項 B に対する改修方針を,表 2 のとおりにまとめた。
表 2 指摘事項に対する改修方針
特に,表 2 中の指摘事項 B の改修方針を実現するために,図 4 の c 行目の escape 関数呼出しを,新たに作成する escape2 関数(図 5)呼出しに変更することにした。escape2 関数では,意図したスクリプトが生成されるように,まず,スクリプト言語の文法上必要なエスケープ処理を行った後,更に escape 関数でエスケープ処理を行う。
b は,指摘事項 B に対する攻撃を HTTP アクセスログから検出する方法の限界を問う空欄である。図 2 の攻撃は,スクリプトが GET のリクエスト行(URL のクエリ文字列)に含まれている。アクセスログに残るのはリクエスト行の情報なので,クエリ文字列にスクリプトを入れる GET の場合にしか検出できず,パラメタをリクエストボディに入れる POST の場合は検出できない。解答例は GET である。
ここでの検出条件は“同一のセッション ID が,複数の送信元 IP アドレスから送信されている”ことである。この条件に当てはまるのに,不正ではないアクセスが下線①である。セッション ID を盗んだ攻撃者ではなく,正規の利用者自身のリクエストが複数の IP アドレスから届く場合を考えればよい。
つまり,同じ利用者の端末の IP アドレスが,セッションの途中で変わった場合である。解答例は“端末のIPアドレスがセッションの途中で変わるようなアクセスの場合”(32 字)で,抽出条件(同一セッション ID・複数 IP アドレス)と,それなのに正当である理由(同一端末で IP アドレスが変わる)を組み合わせて書く。
下線②は,不正なアクセスなのに,検出条件の“複数の送信元 IP アドレス”に当てはまらない場合である。不正なアクセスと正規の利用者のアクセスが,ログ上は同じ送信元 IP アドレスに見えれば,同一のセッション ID が複数の IP アドレスから届いたことにならず,検出できない。
そうなるのは,攻撃者と被害者が同じプロキシサーバや NAT を経由してアクセスする場合で,外部から見える送信元 IP アドレスが同じになる。解答例は“攻撃者と被害者が同一のプロキシサーバやNATを経由してアクセスした場合”(35 字)である。講評は,“IP アドレスを詐称した”とする解答が多かったが,本問での状況では IP アドレスの詐称は起き得ないことに気づいてほしかったと述べている。
40 字以内の指定に対し,解答例は 35 字。(1) とは逆に,同じ IP アドレスに見える状況を書く。
O 社は従業員数 20 名のインターネット通販会社であり,通販サイト(以下,X サイトという)で会員向けに化粧品を販売している。X サイトは O 社が開発し,運用している。
ある日,会員からの問合せがあり,X サイトで管理している会員の個人情報が流出していることが判明した。O 社は,被害拡大防止のために X サイトを一旦停止した上で,流出件数,原因などを明らかにするために,情報システム担当者である V さんから,セキュリティ専門会社 D 社の S 氏に調査を依頼した。
S 氏は,V さんから X サイトのシステム構成を聞いた後,関係するログを調査した。
X サイトでは,会員 ID 及びパスワードを,データベースの m_user テーブルの cust_id 及び pwd という列にそれぞれ格納しており,ログイン機能(login.cgi プログラム)では cid,pw という引数とデータベースに格納されている値を照合している。表 1 は,Web サーバの HTTP アクセスログのうち不正アクセスに関連する部分の抜粋であり,左から順に,便宜上付けた番号,クライアントの IP アドレス,HTTP のアクセスメソッド,cgi プログラム名,クエリ文字列である。
〔調査結果〕
S 氏が表 1 の HTTP アクセスログを調査した結果,次の攻撃が判明した。
攻撃 1:IP アドレスが a の攻撃者が, b .cgi に対し SQL インジェクションによって全会員分に当たる約 8,000 件の会員 ID 及びパスワードを窃取していた。
攻撃 2:SQL インジェクションによって X サイトのデータが改ざんされ,その後アクセスした会員の PC にマルウェアを強制的にダウンロードさせられていた。(表 1 中の 20 番)
攻撃 3:SQL インジェクションによってデータが改ざんされ,会員 ID 及びパスワードを詐取されていた。(表 1 中の 22 番)
攻撃 4:不正ログインを試行されていた。
S 氏は,調査結果を V さんに説明した。次は,そのときの会話の一部である。
V さん:攻撃 2 ですが,IP アドレスが ipJ の攻撃者(以下,攻撃者 ipJ という)によって,画面の一部であるバナーとして表示されるデータ(ban_url)が改ざんされていたということですね。X サイトにアクセスした一部の会員から“ウイルス対策ソフトが警告を表示する”という問合せがあったのは,それが原因ですね。
S 氏:はい。会員が,改ざんされたデータを含む画面に表示された“重要なお知らせ”をクリックすると,攻撃者 ipJ が用意した外部サイトに誘導されて,ブラウザが誘導先ページのコンテンツと一緒に,不正な動作を引き起こすファイルをダウンロードします。それから,そのファイルが,ブラウザの c で処理される過程で,ブラウザの c の脆弱性を突くコードを実行することで,PC が感染し,その後,別のファイルがダウンロードされます。もし途中で PC のウイルス対策ソフトが検知,駆除しなければ,最終的にはキーロガーとして存在していました。
表 1 Web サーバの HTTP アクセスログ(不正アクセスに関連する部分の抜粋)
V さん:なるほど。では,攻撃 3 についても説明をお願いします。
S 氏:攻撃 3 も同じくデータ改ざんによるものですが,攻撃 2 の後しばらくしてから攻撃を受けており,①攻撃 1 とは異なる手口で会員 ID とパスワードの詐取が試みられていました。
続いて S 氏は V さんに,攻撃 3 の具体的な手口や攻撃 4 のログの特徴についても説明した。
〔パスワード格納方法の検討〕
S 氏は V さんに,HTTP アクセスログの調査結果から判明した不正アクセスについて説明した後,SQL インジェクションに関係していた m_user テーブルを調査して気付いたことを指摘した。次は,そのときの会話である。
S 氏:m_user テーブルを見ていて気付いたのですが,パスワードは暗号化されていますよね。どのような暗号アルゴリズムで暗号化しているのですか。
V さん:暗号アルゴリズムは自作しました。例えば,元の文字列が password の場合,まず, d 式暗号で drowssap に変換し,次に, e 式暗号で espxttbq に変換します。
S 氏:そのアルゴリズムは変更すべきです。CRYPTREC(暗号技術評価プロジェクト)が電子政府推奨暗号リストに公開している暗号アルゴリズムと異なり,自作アルゴリズムは, f について公的な機関の評価を受けていないので推奨できません。
V さん:なるほど。それでは,修正を検討します。
S 氏:それから,攻撃者が何度も会員登録した上で,攻撃者の指定したパスワードとそれに対する暗号文から解読する g 攻撃によって会員のパスワードを解読された可能性が高いので,サイトの再開前に全会員のパスワードを初期化し,初期化する前のパスワードへの変更を禁止すべきです。
V さん:承知しました。会員にはパスワードを初期化したことを通知します。
S 氏:それだけではなく,②初期化する前のパスワードが解読されている可能性が高いことも通知してください。
その他,S 氏は V さんに,改ざんされたデータの復旧方法や攻撃に対するプログラムの修正方法などを説明した。
O 社は,S 氏の指摘に従って,被害の状況や再発防止策などの情報を自社の Web サイトで公表した。その後,プログラム修正,パスワードの格納方法の改善などの対策を完了させ,全会員のパスワードを初期化して会員に連絡した上で,X サイトを再開させた。
ipB のログは,表 1 の 2,4,5,6,8,9,10,11,13 番で,いずれも login.cgi に対し,会員 ID(cid)は cust51 のまま,パスワード(pw)だけを password,pass,cust51,空,15tsuc,a,b,c,d と変えて繰り返している。同一の IP アドレスから,一つの会員 ID に対して様々なパスワードでログインを試みているのが,不正ログイン試行と判断できる特徴である。
対策は,このような総当たり的なログインを続けさせないことで,連続してログインに失敗した会員 ID をロックする(アカウントロック)。解答例は,特徴が“一つの会員IDに対して様々なパスワードでログインを試みている。”(31 字),対策が“連続してログインに失敗した時は,その会員IDをロックする。”(29 字)である。特徴の欄には,解答用紙に“同一 IP アドレスから,”が印刷されていて,その続きを書く。
字数は特徴・対策のそれぞれ 35 字以内。特徴は,印刷された“同一 IP アドレスから,”に続けて“一つの会員 ID”“様々なパスワード”の二点,対策は“連続失敗”と“ロック”を落とさない。
f は,CRYPTREC が電子政府推奨暗号リストに載せるアルゴリズムと自作アルゴリズムの違いで,“公的な機関の評価を受けていない”のは安全性(ウ)である。g は,“攻撃者の指定したパスワードとそれに対する暗号文から解読する”攻撃で,攻撃者が選んだ平文と暗号文の組を使うので選択平文(ク)である。講評は,g(選択平文)の正答率が著しく低かったと述べ,基本用語については理解を確実にしておいてほしいとしている。
記号で答える設問で,解答例は d がコ,e がエ,f がウ,g がク。d と e は変換の順序(逆順にしてから文字をずらす)に対応させる。
S 氏は,初期化する前のパスワードへの変更を禁止することに加えて,“初期化する前のパスワードが解読されている可能性が高いこと”も通知するよう求めている。会員のパスワードが解読されている可能性が高いなら,会員が他のサイトでも同じ会員 ID とパスワードを使っていれば,そのサイトにも不正にログインされるおそれがある。
攻撃 2 では,改ざんされたバナーの“重要なお知らせ”をクリックした会員が外部サイトに誘導され,ブラウザが不正な動作を引き起こすファイルをダウンロードする。そのファイルは,“ブラウザの c で処理される過程で”,“ブラウザの c の脆弱性を突くコード”を実行して PC を感染させる。
設問の注記は,会員の PC の OS 及びブラウザ本体への攻撃は実施されなかったものとしている。ブラウザ本体でないのに,ブラウザの中でダウンロードしたファイルを処理するものは,ブラウザに組み込まれて動く拡張機能のプラグインである。解答例は“プラグイン”(5 字)。講評は,外部サイトに誘導される場合にブラウザやそのプラグインの脆弱性を突かれるケースを題材にしており,誘導からマルウェアの感染とその後の活動までの仕組みを理解しておいてほしいと述べている。
M 社は,従業員数 900 名の保険会社である。M 社は損害保険業務を支援する保険システムを稼働させている。保険システムの利用者は,M 社の従業員である。M 社は,保険システムの開発をソフトウェア開発会社の Z 社に委託している。また,保険システムは M 社のグループ会社が運営するデータセンタ(以下,DC という)に設置し,主に M 社が運用と保守を行っているが,一部の保守作業については Z 社に委託している。保険システムは,20 台のサーバ(以下,保険サーバという)から構成されており,保険システムのサービス(以下,保険サービスという)を提供するための様々なソフトウェアが稼働している。保険システムの構成を図 1 に示す。
Z 社が請け負っている保守作業は,機能追加などに基づく保険システムのプログラムモジュールの更新,保険システムに障害が発生した場合の原因調査,本番システムへの設定変更などの作業が主である。Z 社は M 社から作業依頼書を受け取ると,保険システムを担当する 5 名の保守チームの中から当該作業担当者を 1 名選び,作業担当者氏名や作業期間などを記載した作業計画書を M 社に提出する。作業計画が承認されると,作業で使用するために,OS の特権 ID が使用可能な状態に有効化され,通知される。特権 ID とは,OS に対する全てのシステム管理特権を付与された利用者 ID のことである。作業担当者は通知された特権 ID を使い,Z 社 PC から保険サーバにリモートアクセスを行って作業を実施する。Z 社内の M 社保険システム保守用 LAN,M 社 LAN 及び DC 内の DCLAN は IP-VPN で接続されている。
M 社の同業の C 社で情報漏えい事件が起きた。C 社の保守作業委託先の従業員が,保険加入者のデータを不正に持ち出して名簿業者に売却したと報じられた。事件は,C 社が事態をすぐに把握できなかった管理上の不備に対する指摘とともに,連日報道された。M 社の経営幹部は,C 社の事件をきっかけに,自社の保険システムにおいても同様の問題が起きる可能性はないか早急に調査するよう,情報システム部長に指示を出した。調査の結果,保険システムについても,Z 社の保守作業において,保険加入者の情報が保存されたファイル(以下,機密ファイルという)が,作業依頼書に指定した範囲を超えてアクセスされるおそれがあることが指摘された。そこで,情報システム部の L 主任がリーダとなり,対策を検討することになった。
検討を開始した当初は,Z 社の保守作業において機密ファイルへのアクセス制御を実施する案も出たが,M 社保守担当者から,特権 ID の運用が複雑になる上,保守作業には緊急性が求められる場合もあり,現実的な対策ではないといった意見があった。そこで,①L 主任は Z 社の作業担当者の保守作業の作業証跡を取得し,作業内容とは無関係な機密ファイルの操作(以下,機密ファイル操作違反という)を検知する仕組みを備えるという対策方針を立てた。本対策方針は経営幹部に報告された後,M 社役員会議で承認された。
L 主任は,Z 社が行う作業の操作ログを取得し,操作ログから Z 社の機密ファイル操作違反の可能性を自動検知する対策がよいと考えた。検知後に,作業者の機密ファイル操作違反前後の一連の操作を追跡することを想定した対策である。
ログサーバ上の操作ログについては,機密ファイル操作違反の隠蔽防止のために,下線④のメッセージダイジェストを使用した b 機能をもつ。
空欄 b を含む文は,ログサーバ上の操作ログについて,機密ファイル操作違反の“隠蔽防止”のために,メッセージダイジェストを使った機能をもつと述べている。操作ログを隠蔽するとは,違反の記録を書き換えたり消したりすることである。メッセージダイジェストは,データから求めた短い値で,元のデータが変わると値も変わるので,保管時に求めた値と比べることで,ログが書き換えられていないかを確かめられる。
したがって b は,ログの書換えを見つける機能,すなわち“改ざん検知”である。解答例も“改ざん検知”(5 字)で,メッセージダイジェストを使う目的が真正性の確保にあることが読み取れる。
案 2 では,Z 社の保守チームの担当者ごとに中継サーバの利用者 ID が付与され,表 1 のとおり,その利用者 ID ごとに保険サーバへのリモートアクセスの許可と拒否を制御できる。作業計画ごとに,作業計画書に記載された作業担当者の利用者 ID にだけ,中継サーバから保険サーバへのアクセスを許可すれば,記載されていない担当者は特権 ID を知っても保険サーバにアクセスできない。
K 社は,従業員数 9,000 名の機械製造会社であり,本社の他,全国に工場が 8 か所,営業所が 10 か所ある。図 1 に示すとおり,K 社には本社,工場及び営業所を接続した社内ネットワークが構築されており,全社でサーバが 200 台,PC が 5,000 台接続されている。社内ネットワーク,サーバ及び PC の運用管理は,主として本社に勤務する情報システム部員が担当しているが,各工場にも情報システム部員を配置して,現地でなければ実施できない運用管理を行っている。
図 1 K 社ネットワーク全体構成図
全ての PC にはウイルス対策ソフトが導入されており,図 1 中のウイルス対策管理サーバは,このウイルス対策ソフトの管理とウイルス定義ファイルの配信を行っている。ウイルス対策ソフトはウイルス定義ファイルに基づきパターンマッチングによってウイルスを検出するものであり,ウイルス定義ファイルは最低でも 1 日に 1 回は更新されている。
〔K 社の情報セキュリティ対策の現状〕
K 社では過去に多くの情報セキュリティインシデントが発生しており,そのうちの幾つかは K 社の製品に関する機密情報の窃取を狙ったものと推測されている。K 社ではこの事態を重くみて,2 年前,総務部内に総員 10 名の情報漏えい対策チーム(以下,P チームという)を常設組織として設置し,文書,口頭,ネットワークなど,全ての経路での情報漏えいの予防及び情報漏えい発生時の緊急対応を実施してきた。この P チームは,幾つかの班に分かれており,そのうちの技術班のリーダが T 主任である。
〔標的型攻撃への対策の検討〕
T 主任は,K 社を取り巻く最近の状況から,悪意あるプログラムを電子メール(以下,メールという)の添付ファイルとして送付してくる攻撃に注意が必要であると考えていた。特に,①メール本文やタイトルに K 社に関連した内容が含まれるなど高度な偽装が施されており,かつ,②新たに作成された悪意あるプログラムを含んだファイルが添付されている,いわゆる標的型攻撃メールに対して危機感を持っており,その対策について検討を始めていた。
検討を進める中で T 主任は,セキュリティコンサルティング会社から,標的型攻撃に対応する演習のための教材一式を入手することができた。その教材には,実際に標的型攻撃に使用されたメール及び攻撃用プログラムを基にした,メール本文例及び疑似攻撃プログラムであるプログラム S が含まれていた。教材は,演習用環境で不正な通信が発見されてから,その通信が発生した原因を突き止めるまでの演習を対象範囲にしている。T 主任は,この教材を利用して P チーム内で標的型攻撃に対応する演習を行い,その結果に基づいてインシデント対応方法の改善を目指すことにした。
〔標的型攻撃に対応する演習の準備〕
T 主任は演習の対象者として,P チーム内で 1 年間ほどインシデント対応を担当している U 君を選抜した。この演習に当たって,T 主任は図 2 に示す演習用環境を構築した。
U 君:はい。ウイルスとしては検知されないんですね。こうなると,PC1 に原因があるとは即座に絞り込むことができないので,IPS での誤検知や送信元 IP アドレスの IP スプーフィングの可能性も調べないといけませんね。
T 主任:そうですね。ただ,PC1 から不審なアクセスが行われている可能性があると分かった時点で,PC1 を早めに切り離した方がよかったのではないでしょうか。
その後,U 君は PC1 を演習用環境から切り離す措置をとった。切り離した PC1 は,解析用の隔離環境に接続し,PC1 の解析を行った。2 時間ほどしたところで U 君が行き詰まっているのに気が付いた T 主任は,U 君に声を掛けた。
T 主任:どうやら苦戦しているようですね。
U 君:解析用の隔離環境で行ったパケットキャプチャの結果全体と,パケットの送信元 IP アドレスを見て,PC1 から不正な TCP 通信が行われていることは確認できたのですが,PC1 でどのような悪意あるプログラムが動いているかが分かりません。起動中の常駐プログラム名の一覧を確認したのですが,正常な PC との差異はありませんでした。
T 主任:常駐プログラムに目を付けたのはいいけれど,プログラム名を見ただけでは十分とは言えませんね。プログラム名ぐらいは簡単に偽装できますよ。
U 君:そうなんですか。では,悪意あるプログラムを特定するには,何を糸口にすればよいのでしょうか。
T 主任:パケットキャプチャの結果を分析すれば,不正な通信の詳細情報が分かります。その情報の中には,当然 TCP セッション情報が含まれていますよね。それが糸口になりませんか。
U 君:なるほど。今の話で③悪意あるプログラムを特定する方法を思い付いたので解析作業に戻ります。
T 主任:ところで,本番のインシデントでは証拠保全の必要があります。PC1 は重要な証拠であり保全の対象となるので,本来であれば PC1 の複製を使用して解析を行うことになります。今回は演習なので証拠保全の措置は省略しましたが,インシデント対応手順を考える上で証拠保全は必要な措置となるので覚えておいてください。
U 君:はい,分かりました。
この後 U 君は,下線③の方法を使って悪意あるプログラムを特定し,さらに PC1 の利用者のメールアドレス宛てに到着したメールの中から不審な添付ファイルを見つけ出した。利用者がこの添付ファイルを実行したことによって悪意あるプログラムが常駐してしまい,他のコンピュータへの不正な通信を行っていたことを突き止めた。
〔演習の振返り〕
U 君:今回は何とか不審な添付ファイルを見つけることができましたが,メール本文は総務部からの社内連絡を装っている上,送信元のメールアドレスも実在するものであり,添付ファイルのアイコン偽装以外は不審な点は一切見当たりませんでした。実際の状況を想定してみると,標的型攻撃は,発見が難しいものなんですね。
T 主任:そうなんです。この演習は他社で過去に起きた事例を参考にしたものです。だから,当社にもこの程度の攻撃があると想定しなければいけません。このような標的型攻撃による被害を未然に防ぐためには,全従業員への指導も併せて行っていく必要があるのです。
演習の後,U 君は従業員が社内ネットワーク上の PC で今回のような標的型攻撃メールを受信して添付ファイルを実行してしまった場合,どのような被害が発生するか,その被害への対応をどうすべきかを検討して,インシデント対応手順にまとめた。また,インシデント対応のため,PC を LAN から切り離して解析作業を行っている間に,その PC の利用者から内蔵ハードディスク内のファイルが欲しいと言われる可能性が高いと考えた。そこで,証拠保全が可能な方法によって PC を複製した後に,④複製した PC からファイルを取り出す手順をインシデント対応手順に記載した。さらに,インシデントを未然に防ぐための標的型攻撃対策を作成した。
さらに,演習で用いるウイルス定義ファイルを使用した場合でも,プログラム S がウイルスとして検出されないことを確認した。
下線①は,メール本文やタイトルに K 社に関連した内容を含めるなどの偽装である。受信者が“自分に関係のある,正常なメール”だと思えば,不審に思わず添付ファイルを開く。そこで目的は,メール受信者に正常なメールと誤認識させて,添付ファイルを開かせることである。
下線②は,新たに作成された悪意あるプログラムを添付することである。ウイルス対策ソフトは,ウイルス定義ファイルに基づくパターンマッチングで検出するため,定義ファイルに載っていない新しいプログラムは検出できない。演習の図 3 でも,プログラム S がウイルスとして検出されないことを確認している。したがって目的は,ウイルス対策ソフトで検出されることを防ぐためである。
利用者が必要とするファイルを,感染したかもしれない PC から取り出すとき,その PC の OS をそのまま起動すると,常駐しているウイルスが動き出す。また,図 4 のプログラム S のように,リムーバブルメディアを感染経路にするものもあるので,起動した PC にメディアを接続して取り出すのも危険である。
そこで,複製した PC のハードディスクを,正常な OS で起動した他の PC に接続して,ファイルを取り出す。感染した OS を起動しないので,ウイルスは動かない。解答例は“正常なOSで起動した他のPCに,複製したPCのハードディスクを接続してファイルを取り出す。”(45 字)。講評は,既知であれ未知であれウイルスの感染が疑われる OS 環境では,その OS を起動してはいけないことを踏まえた解答を期待したが,正答率は低かったと述べている。
50 字以内の指定に対し,解答例は 45 字。“正常な OS で起動した他の PC”と“複製したハードディスクを接続”の二点を書く。