Apache Struts 2のClassLoader を外部から操作される脆弱性(CVE-2014-0094)(S2-020)に関する検証レポート
【概要】
Apache Struts 2に、ClassLoader を外部から操作される脆弱性(CVE-2014-0094)(S2-020)が発見されました。
この脆弱性は、細工したHTTPリクエストを送信することで外部からClassLoaderの属性を変更することが可能となります。
攻撃者は、細工したHTTPリクエストを送信することでClassLoaderの属性を変更します。属性を変更されることによりウェブアプリケーションサーバを実行しているユーザの権限で任意のファイルを改ざんすることやJavaコードを実行される危険性があります。
本レポート作成(2014年4月19日)時点において、Apache Software Foundationから脆弱性に対応したバージョンがリリースされております。しかし、攻撃方法が公開され、その方法は、容易に実行可能であり脆弱性を利用された場合の影響が大きいことから本レポートを公開いたしました。
【影響を受ける可能性があるシステム】
– Apache Struts 2.0.0 – 2.3.16
【対策案】
Apache Software Foundationから本脆弱性を修正されたバージョン「Apache Struts 2.3.16.1」がリリースされております。当該脆弱性が修正された修正プログラムを適用していただくことを推奨いたします。
なお、上記の「Apache Struts 2.3.16.1」では、回避策(Workaround)として記述のあるとおりに初期設定が変更になっております。そのため、緊急のバージョンアップが難しい場合は回避策を実施いただくことを推奨いたします。
2014年4月23日追記:
三井物産セキュアディレクション社から2.3.16.1に対して修正が不十分であり、脆弱性が存在しているとの指摘があります。また、ビットフォレスト社の「WAF Tech Blog 」でも、これまでの対策を含めて対策方法について指摘がなされています。アップデートだけでは対策が不十分な恐れがあります。
【参考サイト】
CVE-2014-0094
Apache Struts 2 Documentation S2-020
Apache Struts2 の脆弱性対策について(CVE-2014-0094)(S2-020)
2014年4月23日追記:
Apache Struts2(2.3.16、S2-020の修正版)に対するゼロディを弊社エンジニアが発見いたしました。
【検証イメージ】
【検証ターゲットシステム】
Debian 6.0.7 上のApache Tomcat 8.0.3、Apache Struts 2.3.14を利用したWebアプリケーション
【検証概要】
脆弱性の存在するターゲットPCへ、細工したHTTPリクエストを送信し、任意のサーバの任意のポートにコネクトバックさせるプログラムをJavaコードから実行し、その結果、シェルを奪取するというものです。
これにより、リモートからターゲットPCの操作が可能となります。
【検証結果】
下図は、攻撃後の誘導先のコンピュータ(Windows 7)の画面です。赤線で囲まれている部分は、誘導先のコンピュータのホスト情報です。一方、黄線で囲まれている部分は、ターゲットPC(Linux)において、コマンドを実行した結果が表示されています。これにより、ターゲットPCの制御を奪うことに成功しました。
reported by oda, ntsuji