Apache Struts 2 の脆弱性 (S2-032) に関する注意喚起
最終更新: 2016-04-28
各位
JPCERT-AT-2016-0020
JPCERT/CC
2016-04-28
<<< JPCERT/CC Alert 2016-04-28 >>>
Apache Struts 2 の脆弱性 (S2-032) に関する注意喚起
https://www.jpcert.or.jp/at/2016/at160020.html
I. 概要
Apache Software Foundation が提供している Apache Struts 2 には脆弱性
(S2-032/CVE-2016-3081) が存在します。Dynamic Method Invocation (DMI)
を有効にしている場合、遠隔の攻撃者が、細工した HTTP リクエストを送信す
ることで、Apache Struts 2 を使用するアプリケーション (Struts アプリケー
ション) を実行しているサーバにおいて、任意のコードを実行する可能性があ
ります。脆弱性の詳細については、Apache Software Foundation の情報を確
認してください。
本脆弱性の実証コードがすでに公開されており、JPCERT/CC にて実証コード
を用いて検証した結果、Struts アプリケーションを実行しているアプリケー
ションサーバの実行権限で任意のコードが実行されることを確認しました。
DMI は、Apache Struts 2.3.15.2 以降ではデフォルトで無効になっています
が、DMI を有効にしている場合には、早期の対策を検討することを強く推奨し
ます。なお、警察庁によれば、Apache Struts 2 の脆弱性を狙ったと考えられ
るアクセスが観測されているとのことです。
Apache Software Foundation から、本脆弱性に対する修正済みソフトウェ
アが提供されています。影響するバージョンのソフトウェアを利用しており、
DMIを有効にしている場合には、「V. 対策」や「VI. 回避策」を参考に、早期
の対応を行うことを強く推奨します。
II. 想定される攻撃シナリオ
DMI を有効にしている Struts アプリケーションに対して、細工した HTTP
リクエストを送信することで、Struts アプリケーションを実行しているサー
バ上で任意のコードが実行されます。
III. 対象
本脆弱性の影響を受ける製品は以下の通りです。
- Apache Struts 2.3.20 から 2.3.28 まで
(2.3.20.3 および 2.3.24.3 を除く)
なお、Apache Struts 2 を利用している製品も影響を受ける可能性がありま
す。
IV. JPCERT/CC による検証結果
JPCERT/CC では、本脆弱性に対する実証コードを用いて、以下の検証を実施
しました。
【検証内容】
- 実証コードを用いて、Apache Struts 2 を使用するサンプルのアプリケー
ションを Apache Tomcat 上に配備し、細工した HTTP リクエストを送るこ
とで、任意の OS コマンドが実行されるか確認しました。
【検証環境】
- アプリケーションサーバ
- CentOS 7.2.1511
- Apache Tomcat 7.0.57
- Java 1.8.0_71
- Apache Struts 2 を使用するサンプルアプリケーション
【検証結果】
- 本脆弱性の影響を受けるバージョンの Apache Struts 2 を利用しているサ
ーバ上で、任意のコード実行が可能なことを確認しました。
- 本脆弱性が修正されたバージョンの Apache Struts 2 を利用しているサー
バ上で、任意のコードが実行されないことを確認しました。
- DMI を無効に設定した場合に、Apache Struts 2を利用しているサーバ上で
任意のコードが実行されないことを確認しました。なお、DMI は、
Apache Struts 2.3.15.2 以降では、デフォルトで無効となっています。
○:実証コードが動作しないことを確認
×:実証コードが動作し、任意のコード実行が可能であることを確認
| DMI 有効 | DMI 無効 |
- Apache Struts 2.3.28.1 | ○ | |
- Apache Struts 2.3.28 | × | ○ |
- Apache Struts 2.3.24.3 | ○ | |
- Apache Struts 2.3.24.1 | × | ○ |
- Apache Struts 2.3.24 | × | ○ |
- Apache Struts 2.3.20.3 | ○ | |
- Apache Struts 2.3.20.1 | × | ○ |
- Apache Struts 2.3.20 | × | ○ |
V. 対策
Apache Software Foundation より、本脆弱性を修正したバージョンが公開
されています。十分なテストを実施の上、修正済みバージョンを適用すること
を強くお勧めします。アップデートが困難な場合には、「VI. 回避策」を参考
に、脆弱性の影響を受けないように設定を施してください。
- Apache Struts 2.3.20.3
- Apache Struts 2.3.24.3
- Apache Struts 2.3.28.1
VI. 回避策
本脆弱性の影響を軽減するため、十分に影響範囲を考慮の上、以下に記載す
る回避策の適用をご検討ください。
(1) Dynamic Method Invocation (DMI) を有効にしている場合、無効にする
詳細は、以下の情報を参照してください。
Apache Struts 2 Documentation
Dynamic Method Invocation
https://struts.apache.org/docs/action-configuration.html#ActionConfiguration-DynamicMethodInvocation
(2) 本脆弱性を修正したバージョンの Apache Strust 2 のソースコードを
もとに独自に ActionMapperを実装する
詳細は、以下の情報を参照してください。
Apache Struts 2 Documentation
ActionMapper and ActionMapping objects
https://struts.apache.org/docs/actionmapper.html#ActionMapper-Customize
VII. 参考情報
Apache Struts 2 Documentation
Version Notes 2.3.28.1
https://struts.apache.org/docs/version-notes-23281.html
Apache Struts 2 Documentation
Version Notes 2.3.24.3
https://struts.apache.org/docs/version-notes-23243.html
Apache Struts 2 Documentation
Version Notes 2.3.20.3
https://struts.apache.org/docs/version-notes-23203.html
Apache Struts 2 Documentation
S2-032 : Remote Code Execution can be performed via method: prefix when Dynamic Method Invocation is enabled.
https://struts.apache.org/docs/s2-032.html
Apache Struts 2 Documentation
S2-019 : Dynamic Method Invocation disabled by default
https://struts.apache.org/docs/s2-019.html
JVNVU#91375252
Apache Struts2 に任意のコード実行の脆弱性
https://jvn.jp/vu/JVNVU91375252/
独立行政法人情報処理推進機構
Apache Struts2 の脆弱性対策について(CVE-2016-3081)(S2-032)
https://www.ipa.go.jp/security/ciadr/vul/20160427-struts.html
警察庁
Apache Struts 2 の脆弱性を標的としたアクセスの観測について (PDF)
https://www.npa.go.jp/cyberpolice/detect/pdf/20160427.pdf
今回の件につきまして当方まで提供いただける情報がございましたら、ご連
絡ください。
======================================================================
一般社団法人 JPCERT コーディネーションセンター (JPCERT/CC)
MAIL: info@jpcert.or.jp
TEL: 03-3518-4600 FAX: 03-3518-4602
https://www.jpcert.or.jp/
Topへ