Struts 2の脆弱性は最新版でも未修正、Struts 1にも同様の脆弱性が存在:国内セキュリティ企業が相次いで注意喚起
脆弱性を修正したはずのWebアプリケーションフレームワーク「Apache Struts 2」の最新版、バージョン2.3.16.1に、いまだに脆弱性が残っている。さらに、既にサポートの終了している「Struts 1」にも同様の脆弱性が存在するという。
セキュリティ企業の三井物産セキュアディレクション(MBSD)は2014年4月22日、脆弱(ぜいじゃく)性を修正したはずのWebアプリケーションフレームワーク「Apache Struts 2」の最新版、バージョン2.3.16.1に、いまだに脆弱性が残っていることを確認したと明らかにした。
またラックは2014年4月24日、Webアプリケーションフレームワーク「Apache Struts 2」に存在するものと似た脆弱性が、既にサポートの終了している「Struts 1」に存在すると指摘し、注意を呼び掛けている。
バージョン2.3.16.1での修正は不十分
Apache Struts 2には、外部からクラスローダーを操作されてしまう脆弱性(CVE-2014-0094)が存在していた。悪用されればWebサーバー内の情報を盗み取られたり、特定ファイルを操作されたり、Webアプリケーションを一時的に使用できない状態にされる恐れがある。さらに、攻撃者が操作したファイルにJavaコードが含まれている場合、任意のコードが実行される恐れもある。
これを受けて開発元のApache Software Foundationは、2014年3月2日付で、問題を修正したはずのバージョン2.3.16.1をリリースした。一方で、CVE-2014-0094の脆弱性を狙う攻撃コードが公開されてしまったことから、情報処理推進機構(IPA)は4月17日、バージョン2.3.16.1にアップデートするよう緊急対策を呼び掛けた(関連記事)。
しかしMBSDが検証を行ったところ、バージョン2.3.16.1での修正は不十分で、いまだにクラスローダーを外部から操作される脆弱性が残ったままだという。Webアプリケーションを動作させている権限にもよるが、最悪の場合、外部からJavaコードを介して任意のコードが実行される恐れがある。
MBSDではこの件をApache Software Foundationに連絡し、コード修正など何らかの公式な対応を待っている段階だ。根本的な対策が提供されていない現時点でこれは「ゼロデイ」の脆弱性であり、外部からこの脆弱性を狙おうとする攻撃を検知、遮断するしかない。MBSDでは暫定的な対策としてサーブレットフィルタを作成し、そのソースコードを公開している。
この脆弱性に関しては、Webアプリケーションファイアウォール「Scutum」を開発しているビットフォレストもブログの中で言及し、暫定的な対応策を紹介している。同ブログ記事筆者のKanatoko氏は、対策漏れが残っていたバージョン2.3.16.1での対応も含め、Struts 2のこれまでの脆弱性は、「NGワードを追加する」というアプローチに過ぎず、「『付け焼き刃的対策』の見本といった感じ」と述べている。
2014年4月25日8時追記:
Apache Software Foundationは米国時間の4月24日、バージョン2.3.16.1での対策が不十分だったことを認め、この問題を完全に修正するセキュリティフィックスを「可能な限り早期に」リリースする予定だと表明した。リリースは72時間以内に公開される予定であり、アップデートに備えてほしいとしている。同時に、セキュリティフィックスが提供されるまでの緩和策についても紹介している。
ただし、Struts 1系についての言及はない。
2014年4月30日12時追記:
Apache Software Foundationは米国時間の4月24日、Struts 2.3.15.1における対策漏れの問題(CVE-2014-0112)も含め、外部からクラスローダーを操作されてしまう恐れのある脆弱性を修正したApache Struts 2.3.16.2を公開し、早期のアップデートを呼び掛けている。
一方警察庁は、定点観測システムにおいて、この脆弱性を狙ったと考えられるアクセスを4月26日に検知したことを明らかにし、アップデートの実施を呼び掛けた。またApache Struts1を使用しているサイトについては、「公開の停止」を推奨している。
Apache Struts 1にも同様の脆弱性を確認
一方ラックは、2013年4月5日にサポートが終了した「Apache Struts 1」においても、CVE-2014-0094と同様の脆弱性が存在することを確認したという。
Apache Struts 1が細工を施したリクエストを受け取ると、任意のJavaコードが実行され、パスワードファイルなど重要な情報が盗み見られたり、ファイルシステムの破壊やバックドアの設置など、さまざまな被害を受ける恐れがある。同社が実際に脆弱性を検証したバージョンは1.1、1.2.9、1.3.10の3つだが、同社は「他のバージョンも影響を受けると考えられる」としている。
同社も独自にバージョン2.3.16.1について、修正が不十分であり、攻撃が可能な状況であることを確認した。
Apache Struts 2はメンテナンス中のバージョンだが、Apache Struts 1に関しては、最終版が公開されたのは2008年10月で、2013年4月5日でサポートも終了している。従って、「今後正規の更新プログラムの提供もされないものと考えられる」(同社)。
一方で日本国内だけでも、Apache Struts 1が稼働しているWebサイトは数多く存在している。その多くが、システムインテグレーターなどとの間で個別サポート契約などを結んでいない限り、攻撃に対して脆弱な状態のままと推測される。
ラックによると、今のところ、Apache Struts 1が動作しているサイトで被害を受けたという報告は寄せられていない。しかし、2013年7月にApache Struts 2に発見された脆弱性が多数の攻撃につながった経験を考えても、「攻撃は必ず発生する前提で対応する必要がある」としている。
繰り返しになるが、Apache Struts 1はサポートが終了しており、Apache Struts 2については最新バージョンの2.3.16.1でも修正が不十分だ。従って現時点では、
- WAF、IPSなどネットワーク側で、該当する攻撃を遮断する
- パラメーターに不正な文字列が含まれる場合(正規表現で「(^|\\W)[cC]lass\\W」に合致するパラメータ名が含まれる場合など)に、リクエストを拒否するフィルタ機能を実装する
といった暫定的な対応により、影響を緩和するしかない。また、
- Webアプリケーションを管理者権限で動かさず、必要最小限の権限で動作させる
- Webアプリケーションへの通信、Webアプリケーションから外部への通信を必要なもののみに制限する
- 適切に監視を行い、不審なログファイルなどがないか確認する
などの基本的なセキュリティ対策を講じているか、あらためて確認することも有用だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Apache Struts 2の早急なアップデートを、攻撃コード公開を踏まえIPAが呼び掛け
情報処理推進機構セキュリティセンターは、「Apache Struts 2」に存在する脆弱性を狙う攻撃コードが公開されていることを踏まえ、脆弱性を修正したバージョン2.3.16.1への早急なアップデートを呼び掛けている。 - 存在に気付かないふり? Struts
多くのサイトで使われるようになったApache Struts。Strutsは関係ないや、と思っているあなたのサイトにも、Apache Strutsが複数インストールされているかもしれません。 - やまぬWeb改ざん、Apache Struts2の被害も拡大
7月も引き続き、日本のWebサイトでは改ざんや不正ログインが続々と発生。加えてApache Struts2に重大な脆弱性が発見され、さらに多数の攻撃が起こりました。 - Apache Struts 2に深刻な脆弱性、国内でも攻撃を観測
Apache Software Foundationは米国時間の2013年7月16日、深刻な脆弱性を修正するアップデート「Struts 2.3.15.1」を公開した。 - アプリケーションサーバの脆弱性にご注意を