Apache Struts2の脆弱性 | Cloud-Based Platform AIONCLOUD

Threat Intelligence Report

Get up-to-date information on web application vulnerabilities, attacks, and how to respond.

Back to Threat Intelligence Report

Apache Struts2の脆弱性

1.概要

Apache Struts2は、JAVAベースのウェブアプリケーション開発フレームワークであり、このセクションでは、そのフレームワークを使用するウェブアプリケーションで発生する可能性があるリモートコード実行(RCE)の脆弱性に関する分析結果を要約しています。

 

2.攻撃タイプ

このセクションでは、様々なApache Struts2 RCE脆弱性の中から、4つのCVEに対する攻撃タイプを分析します。

 

1)CVE-2017-9805

Apache Struts2のRESTプラグインは、XMLリクエストをシリアライズ/デシリアライズするためにXStreamプラグインを使用しています。デシリアライズは、ユーザー入力値の検証を行わずに実行されます。これにより、攻撃者はRESTプラグインが実行する任意のAPIにシリアル化された悪意のあるコードを送信することが可能です。

2)CVE-2017-12611

Apache Struts2は、HTMLを動的に生成するためにFreeMarkerというオープンソースのHTMLテンプレートエンジンを使用しています。FreeMarkerのページで固定(リテラル)または強制された値を表すタグを使用している場合、それらのタグ内の変数にリクエストパラメーターとしてアクセスし、OGNL式をインジェクトして悪意のあるコードを実行することが可能です。

3)CVE-2018-11776

Apache Struts2では、namespaceと呼ばれる内部アプリケーションの動作グループがあります。Webアプリケーションが名前空間を指定せずに動作する場合や/*のようなワイルドカード名前空間を使用する場合、Strutsが要求された名前空間を見つけられない場合、それをカスタム名前空間として評価し、OGNL式として実行する可能性があります。これは、悪意のあるコードを実行するために悪用される可能性があります。

4)CVE-2020-17530

CVE-2019-0230と同様に、この攻撃は、開発者がJSPページでタグ属性で%{}構文を使用してOGNL評価を強制する場合に発生します。Apache Struts2は、CVE-2019-0230の脆弱性をパッチするために、OGNL実行に関連するパッケージをブラックリストフィルタリングに追加しましたが、CVE-2020-17530では、org.apache.tomcatパッケージのインスタンスを使用してブラックリストを初期化することでOGNLコードを実行することができます。

 

3.応答

1)CVE-2017-9805

Apache Strutsをバージョン2.5.13 / 2.3.34またはそれ以降に更新してください。更新が不可能な場合、公式のStrutsの推奨事項は、脆弱性が発生するXMLの代わりにJSONのみを使用するようにstruts-plugin.xmlのデータ内容を変更することです。

当社のAIWAF製品は、この脆弱性を悪用する攻撃構文をパターンで検知します。

2)CVE-2017-12611

Apache Strutsをバージョン2.5.12 / 2.3.35またはそれ以降に更新してください。更新が不可能な場合、getterプロパティのみを読み取り専用プロパティとして初期化するか、FreeMarker自体の使用を避けてください。

当社のAIWAF製品は、この脆弱性を悪用する攻撃構文をパターンで検知します。

3)CVE-2018-11776

Apache Strutsをバージョン2.3.35 / 2.5.17またはそれ以降に更新してください。

当社のAIWAF製品は、この脆弱性を悪用する攻撃構文をパターンで検知します。

4)CVE-2020-17530

Apache Strutsをバージョン2.5.26またはそれ以降に更新してください。

当社のAIWAF製品は、この脆弱性を悪用する攻撃構文をパターンで検知します。

 

4.結論

Apache Struts2の脆弱性は常に発見され、更新が頻繁にリリースされています。そのため、定期的にApache Struts2のセキュリティを確認し、更新することが重要です。

当社のAIWAF製品では、Apache Struts2の脆弱性に対応するために多くのパターンを開発しており、Apache Struts2関連の脆弱性が発見されるたびに対応していく予定です。

 

5.参考文献

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9805
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12611

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-11776
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-17530>

Scroll Up