AWS導入支援・クラウド運用代行 スカイアーチネットワークス

Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起

Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起
https://www.jpcert.or.jp/at/2017/at170009.html

概要

Apache Software Foundation が提供している Apache Struts 2 には脆弱性(S2-045/CVE-2017-5638) が存在します。遠隔の攻撃者が、細工した HTTP リクエストを送信することで、Apache Struts 2 を使用するアプリケーション (Strutsアプリケーション) を実行しているサーバにおいて、任意のコードを実行する可能性があります。脆弱性の詳細については、Apache Software Foundation の情報を確認してください。

本脆弱性の実証コードが公開されており、JPCERT/CC にて実証コードを用いて検証した結果、Struts アプリケーションを実行しているユーザの実行権限 で任意のコードが実行されることを確認しました。

本脆弱性は、Struts 2 で標準で使用される Jakarta Multipart parser *1の処理に起因し、Struts の設定ファイル (struts.xml など) で使用するパー サを特に指定していない場合は、本脆弱性の影響を受けることを JPCERT/CCで確認しています。

Apache Software Foundation から、本脆弱性に対する修正済みソフトウェアが提供されています。影響を受けるバージョンのソフトウェアを利用してい る場合には、「V. 対策」を参考に、早期の対応を行うことを強く推奨します。

想定される攻撃シナリオ

Struts アプリケーションに対して、細工した HTTP リクエストを送信することで、Struts アプリケーションを実行しているサーバ上で任意のコードが実行されます。

対象

本脆弱性の影響を受ける製品は以下の通りです。

  • Apache Struts 2.3.5 から 2.3.31 まで
  • Apache Struts 2.5 から 2.5.10 まで

JPCERT/CC による検証結果

JPCERT/CC では、本脆弱性に対する実証コードを用いて、以下の検証を実施しました。

【検証内容】
Struts アプリケーションを Apache Tomcat 上に配備し、実証コードを用いて、細工した HTTP リクエストを送ることで、Struts アプリケーションを実行しているサーバ上で任意のコードが実行されるか確認しました。

【検証環境】

  • CentOS 7.1
  • Apache Tomcat 8.5.11
  • Java 1.8.0_121

【検証結果】

  • 本脆弱性の影響を受けるバージョンの Apache Struts 2 を利用している場合、任意のコード実行が可能なことを確認しました。
  • 本脆弱性が修正されたバージョンの Apache Struts 2 を利用している場合、任意のコードが実行されないことを確認しました。
  • 使用するパーサをデフォルトの Jakarta Multipart parser からJakartaStreamMultiPartRequest に変更した場合、任意のコードが実行されないことを確認しました。
    ○:実証コードが動作しないことを確認
    ×:実証コードが動作し、任意のコード実行が可能であることを確認
  • Apache Struts 2.3.31           : ×
  • Apache Struts 2.3.31 (使用するパーサ変更時) : ○
  • Apache Struts 2.3.32           : ○
  • Apache Struts 2.5.10           : ×
  • Apache Struts 2.5.10.1           : ○

なお、JPCERT/CC では、サーブレットフィルタ*2 を用いて不正なリクエストの制限を行った場合でも、実証コードが動作しないことを確認しています。

対策

Apache Software Foundation より、本脆弱性を修正したバージョンが公開されています。十分なテストを実施の上、修正済みバージョンを適用することを強くお勧めします。

  • Apache Struts 2.3.32
  • Apache Struts 2.5.10.1

また、Apache Software Foundation は、パーサをデフォルトの Jakarta Multipart parser (JakartaMultiPartRequest) から変更することも対策とし て呼びかけています。速やかなアップデートが難しい場合は、本対策の適用をご検討ください。
他のパーサとして、Struts 2.3.18 から標準で組み込まれているJakartaStreamMultiPartRequest や、追加のプラグインとして Pell Multipart Plugin が挙げられており、Struts の設定ファイル (struts.xml など) で”struts.multipart.parser” パラメータを設定することで変更が可能です。

設定方法などの詳細は、以下を参照してください。
https://cwiki.apache.org/confluence/display/WW/File+Upload#FileUpload-AlternateLibraries

参考情報

備考

最終更新日 2017.03.13

お気軽にご相談ください

03-6743-1100

平日10:00 - 18:00 ※祝日は除く

スカイアーチネットワークスは、AWS アドバンストティアサービスパートナーです

  • AWS アドバンストティアサービスパートナー
  • AWS レベル1 MSSP コンピテンシー
  • AWS MSPパートナープログラム
  • AWS Well-Architected パートナープログラム
  • AWS 公共部門パートナープログラム
  • AWS ソリューションプロバイダー
  • AWS 公共部門ソリューションプロバイダー
  • AWS トレーニングパートナー
  • AWS サービスデリバリープログラム Amazon DynamoDB
  • AWS サービスデリバリープログラム Amazon CloudFront
  • APN Immersion Days
  • aws 400 CERTIFIED
  • 2023 Japan AWS Ambassadors
  • 2023 Japan Top Engineers
  • 2023 Japan All Certifications Engineers