北京时间9月5日晚,国家信息安全漏洞共享平台(CNVD)收录了Apache struts2 S2-052远程代码执行漏洞(CNVD-2017-25267,对应CVE-2017-9805),攻击者可以通过构造恶意XML请求在目标服务器上远程执行任意代码,获得服务器权限。目前相关利用代码已在互联网公开并传播,有可能导致互联网上大规模的攻击尝试。
Struts2是第二代基于Model-View-Controller(MVC)模型的java企业级web应用框架,并成为国内外较为流行的容器软件中间件。Xstream是一种OXMapping技术,是用来处理XML文件序列化的框架,在将JavaBean序列化或将XML文件反序列化的时候,不需要其它辅助类和映射文件。Xstream也可以将JavaBean序列化成JSON或反序列化,使用非常方便。
Struts2的REST插件使用带有XStream例程的XStreamHandler执行反序列化操作,但在反序列化过程中未做任何类型过滤,导致攻击者可能在反序列化XML负载时构造恶意的XML内容执行任意代码。
CNVD对漏洞的综合评级均为“高危”。
根据官方公告情况,漏洞影响Apache Struts2.5至Struts 2.5.12版本。参考长亭公司的核验结果,Apache Struts2.3.33版本也受到漏洞影响且官方网站未发布对应版本的更新。综合评估认为,虽然攻击原理通用,但由于目前攻击利用过程存在远程指令执行回显的技术限制以及需要有REST插件应用的前提条件,本次S2-052漏洞威胁达不到S2-045/046漏洞的威胁级别。