ゴールデンウィーク直前に、Webアプリケーションフレームワーク「Apache Struts(アパッチ ストラッツ)」にかかわる脆弱性の問題が浮上してきた。この脆弱性に絡み、情報処理推進機構(IPA)セキュリティセンターが緊急の注意喚起をしたほか、国税庁は4月25日に確定申告書作成サービスを停止した(関連記事1関連記事2)。今回はStrutsの周辺でどのような問題が発生したのかを順を追って整理する。

Struts 2で「クラスローダー」の操作が可能に

 2014年3月初旬、数多くのオープンソースプログラムを開発しているApache Software財団が「S2-020」と呼ばれる情報を公開した。日本の数多くのサイトが使用しているApache Struts 2で、「クラスローダー」の操作が可能となる欠陥があったため、その修正版(2.3.16.1)を公開したという情報である。

 クラスローダーとは、Javaで作成されたプログラムが動作する仮想のコンピュータ(Java仮想マシン)の機能の一部。動作しているプログラムが使用するクラス(部品となるプログラムなど)を仮想マシン上で使用できるようにする役割を担っている。

 クロスローダーの操作が可能ということは、外部の何者かが攻撃できるということに等しい。例えば情報の窃取やサイト改ざん、サイト停止などが、条件さえ合えばできてしまう。対策としては、Struts 2を公開された修正版に入れ替えるか、セキュリティベンダーなどが提案している緩和策を取り入れるなどの対応が必要になる。

 Struts 2を使って稼動しているサイトは拡張子が基本的に「.action」となるので、ネット検索で当該サイトを簡単に見つけられる。自分が管理しているドメイン配下に該当するサイトがあるかを確認したい場合は、Googleの検索機能で「filetype:action site:自分の管理ドメイン」とすればよい。

 もし対策が必要なら、日本CSIRT協議会が全体を良くまとめた情報を公開している(Struts: ClassLoader の操作を許してしまう脆弱性 (CVE-2014-0094, CVE-2014-0112, CVE-2014-0113) について)ので参考にするとよい。

それでも一件落着ではなかった

 これで一件落着と思われたが、4月23日になりこの修正版(2.3.16.1)でも対策が不十分であり、同じように操作できてしまうという情報を、セキュリティ対策会社の三井物産セキュアディレクションが公開した。