G 社は,システム開発を行う従業員 100 名の SI 企業である。このたび,オフィス用品を販売する従業員 200 名の Y 社から,システム開発を受託した。開発プロジェクトのリーダーには,G 社の開発課の D 主任が任命され,メンバーには,開発課から,E さんと新人の F さんが任命された。G 社では,セキュリティの品質を担保するために,プログラミング完了後にツールによるソースコードの静的解析を実施することにしている。
〔受託したシステムの概要〕
受託したシステムには,Y 社の得意先がオフィス用品を注文する機能,Y 社と Y 社の得意先が注文履歴を表示させる機能,Y 社と Y 社の得意先が注文番号を基に注文情報を照会する機能(以下,注文情報照会機能という),Y 社と Y 社の得意先が納品書の PDF ファイルをダウンロードする機能などがある。
〔ツールによるソースコードの静的解析〕
プログラミングが完了し,ツールによるソースコードの静的解析を実施したところ,F さんが作成した納品書 PDF ダウンロードクラスのソースコードに問題があることが分かった。納品書 PDF ダウンロードクラスのソースコードを図1に,静的解析の結果を表1に示す。
図1 納品書 PDF ダウンロードクラスのソースコード図1 納品書 PDF ダウンロードクラスのソースコード(続き)表1 静的解析の結果
システムテストを開始したところ,注文情報照会機能において不具合が見つかった。この不具合は,ある得意先の利用者 ID でログインして画面から注文番号を入力すると,別の得意先の注文情報が出力されるというものであった。なお,ログイン処理時に,ログインした利用者 ID と,利用者 ID にひも付く得意先コード及び得意先名はセッションオブジェクトに保存されている。
保険的な対策は,ログインした利用者の得意先の注文情報だけを返すように,抽出条件を足すことである。セッションオブジェクトには,利用者 ID のほか,利用者 ID にひも付く得意先コードと得意先名が保存されている。一方,図3の注文ヘッダーテーブルの属性を見ると,得意先コード(外部キー)はあるが,利用者 ID や得意先名はない。
したがって,セッションオブジェクトに保存された得意先コードと,注文ヘッダーテーブルの得意先コードを完全一致させる条件を AND で加えれば,別の得意先の注文は抽出されない。j はどちらの欄も属性名で,得意先コードが入る。
注文番号は既に図4の10行目の抽出条件に入っているので,追加する条件にはならない(採点講評にも,注文番号と答えた受験者がいたとある)。利用者 ID や得意先名は,注文ヘッダーテーブルに無いため,図3から選べる属性名にならない。
FW は,ステートフルパケットインスペクション型であり,通信の許可,拒否についてのログを記録する設定にしている。FW では,インターネットから受付サーバへの通信は 443/TCP だけを許可しており,受付サーバからインターネットへの通信は OS アップデートのために 443/TCP だけを許可している。インターネットから受付サーバ及びメールサーバへのアクセスでは,FW の NAT 機能によってグローバル IP アドレスをプライベート IP アドレスに 1 対 1 で変換している。
受付サーバでは,取引先からの受注情報を DB サーバに保管する Web アプリケーションプログラム(以下,アプリケーションプログラムをアプリという)が稼働している。DB サーバでは,受注情報をファイルに変換して FTP で製造管理サーバに送信する情報配信アプリが常時稼働している。これらのアプリは 10 年以上の稼働実績がある。
〔DMZ 上のサーバでの不審なログイン試行の検知〕
ある日,M さんは,アラートを受信した。M さんが確認したところ,アラートは受付サーバから DB サーバとメールサーバに対する SSH でのログイン失敗によるものであった。また,受付サーバから DB サーバとメールサーバに対して SSH でのログイン成功の記録はなかった。M さんは,不審に思い,U 課長に相談して,不正アクセスを受けていないかどうか,FW のログと受付サーバを調査することにした。
〔FW のログの調査〕
ログイン失敗が発生した時間帯の FW のログを表1に示す。
表1 FW のログ
表1の FW のログを調査したところ,次のことが分かった。
受付サーバから工場 LAN の IP アドレスに対してポートスキャンが行われた。
受付サーバから製造管理サーバに対して FTP 接続が行われた。
受付サーバと他のサーバとの間では FTP のデータコネクションはなかった。
DB サーバから製造管理サーバに対して FTP 接続が行われ,DB サーバから製造管理サーバに FTP の a モードでのデータコネクションがあった。
以上のことから,外部の攻撃者の不正アクセスによって受付サーバが侵害されたが,攻撃者による DMZ と工場 LAN との間のファイルの送受信はないと推測した。M さんは,受付サーバの調査に着手し,N さんに工場 LAN 全体の侵害有無の調査を依頼した。
〔受付サーバのプロセスとネットワーク接続の調査〕
M さんは,受付サーバでプロセスとネットワーク接続を調査した。ps コマンドの実行結果を表2に,netstat コマンドの実行結果を表3に示す。
M さんは,受付サーバが不正アクセスを受けていると U 課長に報告した。U 課長は,関連部署に伝え,M さんに受付サーバをネットワークから切断するよう指示した。
〔受付サーバの設定変更の調査〕
M さんは,攻撃者が受付サーバで何か設定変更していないかを調査した。確認したところ,③機器の起動時に DNS リクエストを発行して,ドメイン名△△△.com の DNS サーバから TXT レコードのリソースデータを取得し,リソースデータの内容をそのままコマンドとして実行する cron エントリーが仕掛けられていた。M さんが調査のために dig コマンドを実行すると,図2に示すようなリソースデータが取得された。
図2 △△△.com の DNS サーバから取得されたリソースデータ
M さんが受付サーバを更に調査したところ,logd という名称の不審なプロセスが稼働していた。M さんは,logd のファイルについてハッシュ値を調べたが,情報が見つからなかったので,マルウェア対策ソフトベンダーに解析を依頼する必要があると U 課長に伝えた。Web ブラウザで図2の URL から logd のファイルをダウンロードし,ファイルの解析をマルウェア対策ソフトベンダーに依頼することを考えていたが,U 課長から,④ダウンロードしたファイルは解析対象として適切ではないとの指摘を受けた。この指摘を踏まえて,M さんは,調査対象とする logd のファイルを f から取得して,マルウェア対策ソフトベンダーに解析を依頼した。解析の結果,暗号資産マイニングの実行プログラムであることが分かった。
調査を進めた結果,工場 LAN への侵害はなかった。Web アプリのログ調査から,受付サーバの Web アプリが使用しているライブラリに脆弱性が存在することが分かり,これが悪用されたと結論付けた。システムの復旧に向けた計画を策定し,過去に開発されたアプリ及びネットワーク構成をセキュリティの観点で見直すことにした。
表1を見ると,1-233 が DB サーバ(192.168.0.2)から製造管理サーバ(192.168.1.145)の 21/TCP への制御用接続である。続く 1-234 も送信元が DB サーバ,宛先が製造管理サーバで,宛先ポートが 60453/TCP という,サーバが指定した高い番号のポートになっている。データコネクションもクライアントである DB サーバ側から張られているので,a はパッシブである。アクティブモードなら,製造管理サーバから DB サーバへの接続(送信元 20/TCP)が記録されるはずである。
Q 社の PC が SaaS-a にアクセスするときの,SP-Initiated 方式の SAML 認証の流れを図2に示す。
図2 SAML 認証の流れ
ある日,同業他社の J 社において,SaaS-a の偽サイトに誘導されるというフィッシング詐欺にあった結果,SaaS-a に不正アクセスされるという被害があったと報道された。しかし,Q 社の設定では,仮に,同様のフィッシング詐欺のメールを受けて SaaS-a の偽サイトに L サービスの利用者 ID とパスワードを入力してしまう従業員がいたとしても,①攻撃者がその利用者 ID とパスワードを使って社外から L サービスを利用することはできない。したがって,S 主任は,報道と同様の被害に Q 社があうおそれは低いと考えた。
図2中の a 〜 c に入れる適切な字句を,解答群の中から選び,記号で答えよ。 解答群 ア L サービス イ PC の Web ブラウザ ウ SaaS-a
〔a〕解答例
ア
〔b〕解答例
イ
〔c〕解答例
ウ
解説
本文の根拠
〔L サービスの動作確認〕
Q 社の PC が SaaS-a にアクセスするときの,SP-Initiated 方式の SAML 認証の流れを図2に示す。
図2
(1) サービス要求:b から c へ。(2) 認証要求(リダイレクト指示):c から b へ。(3) 認証要求:b から a へ。(4) 利用者の認証:a と b の間の双方向。
SP-Initiated 方式の SAML 認証は,利用者がサービス提供者(SP)にアクセスするところから始まる。SP は利用者を認証しないで,認証要求を Web ブラウザ経由で IdP(ID プロバイダ)にリダイレクトし,IdP が利用者を認証して認証応答(アサーション)を同じくブラウザ経由で SP に返す(OASIS の SAML 2.0 Web Browser SSO プロファイル)。
図2の(1)は b から c への“サービス要求”で,サービスを要求するのは PC の Web ブラウザだから b がイ,要求を受けるのは SaaS-a だから c がウである。(2)で c が b に認証要求のリダイレクトを指示し,(3)で b が a に認証要求を送るので,a は IdP である L サービス(ア)になる。(4)の利用者の認証は a と b の間,(5)(6)の認証応答は a から b を経て c に届き,(7)でサービス応答が返る。
仲介役は常に Web ブラウザ(b)で,SaaS-a と L サービスは直接通信しない。b の位置(真ん中)から,ブラウザと分かる。
設問1(2)40字以内
本文中の下線①について,利用できない理由を,40 字以内で具体的に答えよ。
解答例
送信元制限機能で,本社のUTMからのアクセスだけを許可しているから
解説
本文の根拠
表1 L サービス 送信元制限機能
契約した顧客が設定した IP アドレス(注 1)からのアクセスだけを許可する。
表1 注 2)
本社の UTM のグローバル IP アドレスを送信元 IP アドレスとして設定している。設定している IP アドレス以外からのアクセスは拒否する設定にしている。
表1 L サービス 多要素認証機能
設定 無効。
下線①は,利用者 ID とパスワードが攻撃者に渡っても,攻撃者が社外から L サービスを利用することはできない,という内容である。L サービスには送信元制限機能があり,本社の UTM のグローバル IP アドレスだけを送信元として許可し,ほかからのアクセスは拒否する設定になっている(表1の注2)。
攻撃者が社外から L サービスにアクセスすると,送信元 IP アドレスは本社の UTM のものではないので,利用者 ID とパスワードが正しくても,アクセス自体が拒否される。この時点では多要素認証機能は無効なので,パスワードだけで守っているのではなく,送信元 IP アドレスの制限が効いている点が理由になる。
見直し前は,PC の Web ブラウザからインターネットへのアクセスが本社のプロキシサーバを経由する。営業所は本社の UTM との間の VPN で本社につながっているので,営業所の PC のインターネットアクセスも本社を通る。在宅勤務の導入で本社への通信が増え,本社のインターネット回線がひっ迫するおそれがあり,要件1がこれを避けるよう求めている。
見直し後は,図3のとおり P サービス(クラウド)と各拠点の P コネクタを導入する。営業所からのインターネットへのアクセスは,本社のプロキシサーバを経由させるのをやめ,P サービスを経由させる。これで営業所の通信が本社の回線を通らなくなり,本社の負荷が減る。
L サービスは,送信元制限機能で本社の UTM のグローバル IP アドレスだけを許可している。営業所からのインターネットアクセスが本社を経由しなくなると,営業所の PC は,営業所の UTM のグローバル IP アドレスを送信元として P サービスに接続することになり,L サービスの送信元制限に拒否されてしまう。
表3の項番1のとおり,L サービスの送信元制限機能には,P サービスに接続してきた送信元の IP アドレス(ここでは営業所の UTM のもの)が通知される。送信元制限機能は有効のままにしておくので,営業所の UTM のグローバル IP アドレスを送信元として追加で設定すればよい。
L サービスに接続できる PC を,本社と営業所の PC 及び R-PC に制限する。なお,従業員宅のネットワークについて,前提を置かない。
表1 多要素認証機能
(イ)TLS クライアント認証を行う方式
要件2は,L サービスに接続できる PC を,本社と営業所の PC 及び R-PC に制限することを求めており,従業員宅のネットワークは前提にできない(送信元 IP アドレスで絞れない)。そこで,送信元制限機能では許可した IP アドレス以外を“拒否”ではなく“多要素認証を動作させる”ように変更し,その多要素認証で PC を限定する。
表1の方式(ア)は,スマートフォンに SMS で送ったワンタイムパスワードを入力させるもので,接続元が社内で管理する PC かどうかは確かめられない。方式(イ)の TLS クライアント認証は,クライアント証明書を持つ PC だけが接続できるので,証明書を入れた会社貸与の PC(R-PC)に接続元を限定できる。したがって④は(イ)である。
アクセス先の URL カテゴリと利用者 ID との組みによって,“許可”又は“禁止”のアクションを適用する。
要件5は,SaaS-a だけ,研究開発部の従業員にだけ許可し,ほかの外部ストレージサービスは全員に禁止する,という二つの条件である。SaaS-a は外部ストレージサービスで,URL は https://△△△-a.jp/ から始まる。表3の項番4(URL 単位)は URL のスキームからホストまでの部分と利用者 ID でアクションを決め,項番3は URL カテゴリ(外部ストレージサービスなど)と利用者 ID で決める。
表5の注記のとおり,番号の小さい順に最初に一致したルールが適用される。外部ストレージサービスのカテゴリには SaaS-a も含まれるので,カテゴリ全体を禁止するルールを先に置くと,SaaS-a も禁止になってしまう。そこで番号1に,項番4(あ:4)で URL https://△△△-a.jp/(j),研究開発部の従業員(k)の利用者 ID を許可(l)とする。番号2に,項番3(い:3)で外部ストレージサービス(m),全て(n)の利用者 ID を禁止(o)とする。