Apache Struts 2におけるリモートコード実行に関する脆弱性(CVE-2018-11776)(S2-057)についての検証レポート
2018/08/30 初版
2018/09/03 更新
2018/09/11 更新
NTTデータ先端技術株式会社
加地 弘樹
2018年8月22日にApache Software Foundationから公表された、Apache Struts 2におけるリモートからの任意のコード実行が行われる脆弱性(CVE-2018-11776)(S2-057)についての検証を実施し、脆弱性の悪用が可能であることを確認しました。
1. 本脆弱性の概要
2018年8月22日にApache Software Foundationから以下の条件下においてApache Struts 2リモートからの任意のコード実行が行われる脆弱性(CVE-2018-11776)(S2-057)が存在することが公表されました。
条件
- 「alwaysSelectFullNamespace」が「true」に設定されている。
- Strutsの設定ファイルでnamespaceの値が指定されていないか、ワイルドカードnamespaceが指定されている場合に「value」か「action」が設定されていない「URL」タグを使用している。
本脆弱性は、上記の条件を満たす場合にユーザー指定のnamespaceを使用され、それがOGNL式として評価されることに起因しています。
Apache Software Foundation は本脆弱性の深刻度を「Critical」と評価しています。
図1. 本脆弱性を悪用した攻撃の例
図1は、本脆弱性に対する攻撃の一例として、インターネットから脆弱性を含むWebアプリケーションサーバーへ攻撃者が攻撃コードを含んだHTTPリクエストを送信する例を示しています。
2. 本脆弱性の影響を受ける環境
本脆弱性の影響を受ける可能性があるApache Struts 2のバージョンは以下の通りです。
- 2.3系 2.3.34以前のバージョン
- 2.5系 2.5.16以前のバージョン
- その他サポート外の旧バージョン
3. 本脆弱性を利用した攻撃の検証
攻撃コードとして、CVE-2018-11776の概念実証(PoC)コードを用いて本脆弱性に対する攻撃を試行し、脆弱性の悪用が可能であることを検証しました。
3.1. 検証環境
疑似攻撃者 | 疑似被害者 | |
---|---|---|
OS | Kali Linux 2017.01 64bit | CentOS 7.4 64bit |
アプリケーション | 概念実証コード | Apache Struts 2.3.12 Apache Tomcat 7.0.59 OpenJDK Runtime Environment 1.8.0_161 |
3.2. 攻撃手法
Apache Struts 2を使用したWebアプリケーションに対して、任意のOSコマンド実行を試みる攻撃を行います。
図2. 攻撃コード
攻撃方法として、上図に示すHTTPリクエストを使用し、ブラウザよりアクセスします。
標的サーバー上で実行させるOSコマンドを、攻撃コード内に記述し、HTTPリクエストとして送信します。これにより、攻撃者は実行させたい任意のOSコマンドをWebアプリケーションが動作するサーバーの権限(本検証環境においてはroot)によって攻撃対象サーバー上で動作させることが可能です。
本検証では、攻撃対象のサーバーにおいてOSコマンドの「cat /etc/passwd」を実行させています。
3.3. 検証結果
図3に示す結果の通り、攻撃コードの実行に成功しました。
図3. 攻撃対象のサーバー上で「cat /etc/passwd」を実行させた結果を確認
4. 本脆弱性に対する対策
4.1. 現在推奨されている対策
Apache Software Foundationより、本脆弱性が修正されたバージョンが公開されており、当該バージョンへのアップデートが推奨されています。
- 2.3系 2.3.35
- 2.5系 2.5.17
ワークアラウンドとして、Strutsの設定ファイルでnamespaceを設定し、JSPのすべてのURLタグに対してvalueまたはActionを設定することで本脆弱性を回避することが可能です。
4.2. 不正アクセス監視機器による対策
4.2.1. 当社が確認している不正アクセス監視機器の対応状況
各製品ベンダーの本脆弱性への対応状況に関する情報、及び本検証による各製品での検知結果は以下の通りです。表2に公式シグネチャーの提供状況、表3に当社のカスタムシグネチャー提供状況、また、本検証によって得られた各製品のシグネチャー検知可否の結果を記載します。
種別 | 製品ベンダー/ 製品 |
製品ベンダー提供のシグネチャー | 検知 結果 |
---|---|---|---|
IDS/IPS | IBM QRader Network Security GX/XGS Series |
XPU 3808.28174: HTTP_Apache_Struts2_Ognl_Namespace_Exec [2104470] ※検証したPoC 3パターンの内1パターンのみ検知 |
△ |
McAfee Network Security Platform NS/M Series |
Signature Set 9.8.28.2: HTTP: Apache Struts Remote Code Execution Vulnerability (CVE-2018-11776) [0x45249b00] |
○ | |
WAF | Imperva SecureSphere |
メーカからのシグネチャーは現在未提供ですが、
既存シグネチャーで通信を検知することが可能です。 ・CVE-2013-2134:Apache Struts Code Execution |
○ |
NGFW | Palo Alto PA Series |
Application and Threat Content: ・Apache Struts 2 Remote Code Execution Vulnerability [33948] |
○ |
Check Point NGFW Series |
IPS Software Blade: ・Apache Struts Remote Code Execution (CVE-2018-11776) |
○ |
種別 | 製品ベンダー/ 製品 |
当社カスタムシグネチャーの提供状況 | 検知 結果 |
---|---|---|---|
IDS/IPS | IBM QRader Network Security GX/XGS Series |
- | - |
McAfee Network Security Platform NS/M Series |
- | - | |
WAF | Imperva SecureSphere |
- | - |
NGFW | Palo Alto PA Series |
- | - |
Check Point NGFW Series |
- | - |
参考文献
- ・Apache Struts 2 Documentation
Security Bulletins S2-057
https://cwiki.apache.org/confluence/display/WW/S2-057 - ・CVE - Common Vulnerabilities and Exposures
CVE-2018-11776
https://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-11776
機器別当社対応サービス
IDS/IPS
- INTELLILINK IDS/IPSセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_01
WAF
- INTELLILINK WAFセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_05
NGFW
- INTELLILINK UTMセキュリティ監視・運用サービス
http://www.intellilink.co.jp/business/security/scrutiny_06
更新履歴
2018/08/30 | 初版作成 |
---|---|
2018/09/03 | IBM、McAfeeのシグネチャー提供状況更新 |
2018/09/11 | Palo Altoのシグネチャー提供状況更新 |
本件に関するお問い合わせ先
NTTデータ先端技術株式会社
お問い合わせフォーム
- ※ 各規格名、会社名、団体名、製品名は、各社の商標または登録商標です。
Tweet