ユーザ企業のセキュリティ態勢強化はセキュリティマインドの醸成から

3月に入って、Apache Struts2 の脆弱性に起因するセキュリティインシデントが多発している。今回は、これらのセキュリティインシデントから、ユーザ企業のセキュリティマインド醸成の必要性について考えてみる。

Apache Struts2とその脆弱性

Apache Struts2 とは、オープンソースのJava Webアプリケーション向けフレームワークである。Javaで書かれた動的なWebサイトを構築するためのソフトウェアであり、定番のミドルウェアとして多くのサイトで利用されている。

2017年3月に発見されたApache Struts2の脆弱性(CVE-2017-5638)は、ファイルアップロード機能に起因する脆弱性と言われている。この脆弱性を突く攻撃が行われた場合、当該サーバ上で任意のコードが実行される可能性があるため、非常に深刻な脆弱性であった。

Apache Struts2 は、Javaのフレームワークとして使いやすい反面、セキュリティ面では根本的な脆弱性を抱えていると言われている。これまでも多くの脆弱性が発見されており、2014年4月にも、今回と同様に任意のコードが実行される可能性のある脆弱性が確認されている。

今回発生したセキュリティインシデント

今回発見された脆弱性が大きな問題となったポイントは、脆弱性が公開された時点で、すでに攻撃コードが出回っていたと考えられる点である。脆弱性の公開時点で Apache Struts2の修正用パッチが提供されていたため、セキュリティ対策としてはそれを適用すれば良かった。しかし、そのパッチ適用が間に合わず、実際の被害を被ったサイトが国内でも発生してしまった。

被害を受けた国内サイトとしては、東京都「都税クレジットカードお支払サイト」および住宅金融支援機構「団体信用生命保険特約料クレジットカード支払サイト」がある。これらのサイトは、GMOペイメントゲートウェイ株式会社に運営を委託されていたもので、そこで使われていた Apache Struts2 が攻撃された。結果としてそれぞれ、約67万件および約4万件の個人情報等が流出したとされている。

JETROにおいても利用者相談ページのApache Struts2 が攻撃を受け、約2万人のメールアドレスが流出したとされている。また、日本郵便の「国際郵便マイページサービス」においても、約3万件のメールアドレス等が流出した可能性があるとされている。

上述した事例は、いずれもパッチ適用が遅れたために発生してしまったわけだが、それをもってすぐに、被害を受けたサイトの運用に大きな問題があったとは考えていない。実サービスを提供しているサイトであれば、パッチ適用による悪影響などを評価するために一定の検証期間が必要なため、すぐにパッチ適用ができるわけではない。重要なサービスを提供しているサイトであればあるほど、その判断が慎重にならざるを得ない。パッチ適用が済むまでサービスを一時停止するという判断もあり得るが、どの程度の脆弱性であれば一時停止するかという判断基準も決めづらいだろう。

セキュリティマインドの醸成によるユーザ企業のセキュリティ態勢強化

今回のセキュリティインシデントの教訓として、ソフトウェアの脆弱性情報を適切に取り扱い、迅速な判断と対処を行うことの重要性が挙げられる。特にユーザ企業においては、自社が提供するサービスで使用するソフトウェアに対して、常に目を光らせておく必要があるだろう。

ユーザ企業が単独でソフトウェアの脆弱性情報を常時確認することは困難であることから、ソフトウェアベンダ等の外部組織との連携が必要であることは言うまでも無い。しかしその上で、ユーザ企業内部でもセキュリティマインドを醸成することが大切である。そのためにも、現場の担当者がセキュリティに関する知識・経験を積むだけでなく、経営者を含めた企業全体がセキュリティマインドを高める必要がある。

2015年に経済産業省が策定した「サイバーセキュリティ経営ガイドライン」においても、経営者として企業内のサイバーセキュリティ体制を整備するとともに、事前対策として「情報共有活動への参加を通じた攻撃情報の入手とその有効活用のための環境整備」が挙げられている。具体的に実施すべき事項については、情報処理推進機構(IPA)が発行した「サイバーセキュリティ経営ガイドライン解説書」に記載されている。その解説書で取り上げられている事項の中でも、特に「個々の脆弱性情報や攻撃に関する必要最小限の情報を必要な関係部門や担当者に届ける役割(ディスパッチャー)が必要」というところを強調しておきたい。脆弱性情報は日々増える一方であり、過去の脆弱性情報と最新の脆弱性情報を合わせて咀嚼する役割が必要である。経営者としては、こうした役割を組織内できちんと位置づけるとともに、必要な予算措置を行うことが重要である。

つまり、ユーザ企業側で実践的なセキュリティ人材を育てる必要があるのだが、実際にどうやって育てたらよいだろうか。自社の情報システムの管理だけをしていても、セキュリティインシデントはそうそう起きるものでは無いため、実践的な力を養うまでには至らない。そして、実際のセキュリティインシデントが起きた時には、実践的な力が備わっていないまま、対処に追われることになる。こうした状態に陥らないためには、社外で行われるサイバーセキュリティの研修や演習に参加して、擬似的にセキュリティインシデントを体験し、その対処方法を身につけることが重要である。こうした研修や演習の取組は、経済産業省や総務省等の組織で始まりつつある。

加えて、ソフトウェアの脆弱性情報に関しては、その深刻度合いを適切に判断する必要がある。具体的にはCVSS(共通脆弱性評価システム)のスコアなどから判断することになるが、ユーザ企業側にもそうした判断能力がある人材を育成することが望ましい。そのような人材が育成できたあかつきには、今回の問題の発端となった Apache Struts2 等のソフトウェアを使い続けるか否かの判断も下せるようになるだろう。