本文へ移動します

未来に繋ぐセキュリティ情報発信

CVE-2017-5638 - 脆弱性調査レポート

Apache Struts 2 のマルチパーサー「jakarta」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-045)に関する調査レポート

概要

Apache Struts 2に、リモートより任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-045)及び、その脆弱性を利用する攻撃コードおよびツールが発見されました。この脆弱性は、ファイルアップロード時に使用するマルチパーサー「jakarta」に起因する脆弱性で、同マルチパーサーは Apache Struts 2にてデフォルトで使用しているものです。この脆弱性を利用した攻撃が成立した場合、リモートから Apache Struts 2が配置された Web アプリケーションサーバーの実行権限で任意のコードを実行される危険性があります。

本レポート作成(2017年3月8日)時点において、既に Apache Software Foundation よりこの脆弱性が修正されたバージョンがリリースされております。しかしながら、攻撃が容易であること、また攻撃を受けた際にシステムへの影響が大きいことから、今回、この脆弱性(CVE-2017-5638)の再現性について検証を行いました。

影響を受ける可能性があるシステム

  • Apache Struts 2.3.5から2.3.31までのバージョン
  • Apache Struts 2.5から2.5.10までのバージョン

対策案

本レポート作成(2017年3月8日)時点において、Apache Software Foundation より、この脆弱性を修正するバージョンがリリースされています。当該脆弱性が修正されたバージョンへとアップグレードしていただくことを推奨いたします。
ただちにアップグレードすることが困難である場合、「Content-Type」のバリデーションを行い、”multipart/form-data”と一致しないリクエストを破棄するサーブレットフィルターを実装することにより問題を回避することが可能です。

(2017年3月28日追記)
本脆弱性情報公開当初、開発元より同脆弱性の対策案としてアナウンスされた、別のマルチパーサーへ切り替える案にて、代替マルチパーサーとして提示されたマルチパーサー「jakarta-stream」を使用している場合、「S2-046」の影響を受けます。そのため、ただちにアップグレードすることが困難である場合には、以下レポートの対策案を実施いただくことで、「S2-045」および「S2-046」の問題を回避することが可能です。
Apache Struts 2のマルチパーサー「jakarta」および「jakarta-stream」の脆弱性により、リモートから任意のコードが実行可能な脆弱性(CVE-2017-5638)(S2-046)に関する調査レポート

バージョン確認方法

Apache Struts 2が配置された Web アプリケーションサーバーにて、/WEB-INF 以下にある.jar ファイルを検索します。検索結果として表示される struts2-core-2.x.x.jar の「2.x.x」の部分が、バージョン情報になります。
また、struts2-core-2.x.x.jar ファイルに含まれる MANIFEST.MF について、Bundle-Version から始まる行を参照することでも、Apache Struts 2バージョン情報を確認することが可能です。

CentOS7の場合での実行例
CentOS7の場合での実行例

参考サイト

CVE-2017-5638
S2-045 - Apache Struts 2 Documentation - Apache Software Foundation

検証概要

攻撃者は、ターゲットシステムで動作する Web アプリケーションサーバーに配置された Apache Struts 2へ細工を行ったリクエストを送信することにより、このターゲットシステムにて Web アプリケーションサーバーの実行権限で任意のコマンドが実行可能となります。

検証ターゲットシステム

CentOS7.0 + Tomcat7.0.69 + Apache Struts 2.3.31

検証イメージ

検証イメージ

検証結果

下図は、ターゲットシステムに対して細工したリクエストを送信した際の画面です。黄枠の箇所は、ターゲットシステムに対して任意のコマンド(id は現在のユーザーの情報を表示するコマンド、cat /etc/passwd は/etc/passwd ファイルを参照するコマンド)を実行しています。
一方で赤枠の箇所は、コマンドの実行結果(ユーザー情報の表示、および /etc/passwd ファイルの内容の表示)が表示されていることを確認できます。(以下の図では tomcat ユーザーによるコマンドの実行がされていますが、こちらの権限は Apache Struts 2が配置された Web アプリケーションサーバーの実行権限に依存します)

検証結果

更新履歴

2017年3月08日 : 初版公開
2017年3月28日 : 対策案に「S2-046」に関する内容を追記

ソフトバンク・テクノロジー セキュリティソリューション一覧

脆弱性調査レポートのメール配信を開始しました!

ご好評いただいている「脆弱性調査レポート」ですが、コンテンツの都合上、レポートの発行は不定期です。そこで、新しい脆弱性調査レポートを発行するたびに最新情報をメールでお届けする「脆弱性調査レポート メール」の配信を開始しました。ぜひご登録ください。
「脆弱性調査レポート メール」の配信登録はこちら

本件に関するお問い合わせ先

 

『報道関係者様からのお問い合わせ』

ソフトバンク・テクノロジー株式会社
管理本部 経営企画部 齊藤、安部、菅
メールアドレス:sbt-pr@tech.softbank.co.jp
『お客様からのお問い合わせ』

下記問い合わせフォームよりお問い合わせください。

お問い合わせ

製品・サービスに関するお問い合わせはお気軽にご相談ください。

ピックアップ

セミナー情報
クラウドエンジニアブログ
NOZ
メールマガジン登録