2018年8月22日(日本時間)、Apache Struts2にリモートコード実行が可能な脆弱性が公開されました。本脆弱性はApache Struts 2 の設定ファイルでnamespace の値を指定しないか、ワイルドカードが指定されている場合、あるいは、URL タグの記述において value か actionの値が指定されていない場合に影響を受けるものです。
S2-057 - Apache Struts 2 Documentation - Apache Software Foundation
Apache Struts 2 の脆弱性 (S2-057) に関する注意喚起
本記事では、この脆弱性の検証結果について解説します。
報告されている脆弱性
Apache Struts 2.3 - 2.3.34
Apache Struts 2.5 - 2.5.16
※サポート切れバージョンへの影響有無については言及されていませんが、
弊社検証では2.2系も脆弱性があることを確認しています。
脆弱性の検証結果
対象のアプリケーションで本脆弱性の有無を調査する方法や任意のコード実行を行う手法はすでに公開されており、弊社で再現検証を行った結果をまとめます。
|
※ ベンダーのドキュメントには影響有無の情報はありませんが、脆弱性が存在することを確認しています。2.2系はサポートアウトの情報は確認できていませんが、2011年9月以降更新がされていません。
本脆弱性の有無を確認する検証するコードでは、修正前のバージョンでは脆弱な挙動を示します。今回行った検証では、URL中で演算(111+111)を試みるリクエストを試行したところ、リダイレクト先のURLに演算を行った結果(222)をレスポンスとして返すため、対象のアプリケーションが脆弱であることがわかります。
コード実行が成功することを確認した例(Apache Struts2.3.14)
コード実行が成功することを確認した例(Apache Struts2.3.34)
コード実行が成功することを確認した例(Apache Struts2.5.16)
修正バージョンに対する、コード実行例(Apache Struts2.3.35)
NRIセキュアが運営しているSOCでは、8月22日夕方に本脆弱性の公開を、8月23日の朝に検証コードの公開を確認しました。その後、公開情報をもとに早急にWAF/IDS/IPS製品での検知検証を実施し、検証コードが既存の弊社独自シグネチャで検知可能であることを確認しました。
また、8月24日より、監視中のお客様において対象ホストの脆弱性有無の調査行為やコインマイナーに感染させる試みを検知しております。なお、現在まで、攻撃対象となったホストで影響があった事例の検知はございません。
当該脆弱性を調査するリクエスト検知例
コード実行を行い、コインマイナー感染を試みる攻撃の検知例
本攻撃により、取得されるファイルを確認したところ、http://*****(略)*****/cnrig-0.1.5-linux-x86_64は、コインマイナーであり本件ではMoneroの採掘行います。なお、http://*****(略)*****/upcheck.shは確認した時点ではファイルが存在していませんでした。
現在、Apache Struts 2を運用中である場合、設定状況を確認し、もしホストに脆弱性が存在する場合は早急にバージョンアップ等の対策を実施いただくことを推奨いたします。