Apache Struts 2 远程代码执行漏洞(cve-2018-11776)处置手册

发布时间:2018/8/25 14:39:59

一.  漏洞概述

北京时间8月22日,Struts官方公开了漏洞S2-057(CVE-2018-11776)。该漏洞可能在两种情况下被触发,第一,当没有为底层xml配置中定义的结果设置namespace值,并且其上部操作配置没有namespace或通配namespace时,可能构成RCE攻击。第二,当使用没有value和action集的url标签时,并且其上层操作配置没有或通配namespace时,也可能构成RCE攻击。


参考链接:

https://cwiki.apache.org/confluence/display/WW/S2-057



二.  影响范围


受影响版本

l Struts2.3 – 2.3.34

l Struts2.5 – 2.5.16


不受影响版本

l Struts 2.3.35

l Struts 2.5.17



三.  漏洞排查


3.1  版本检测

3.1.1  通过配置文件检测 

此漏洞产生于低版本的Struts组件,当应用系统引入相关组件时,将存在被攻击者远程攻击的风险。建议由应用开发人员排查引入组件的版本是否处于受影响范围之内。

查看Maven配置文件pom.xml中关于组件的版本。如:


<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>2.5.13</version>

</dependency>


3.1.2  通过组件名检测

若红字所示版本在受影响范围内,则请用户尽快升级Struts2至最新版本,以保证长期有效的防护。

Linux系统下可使用以下命令查找当前使用的struts2-core包,通过查看其文件名,判断当前版本。


find / -name struts2-core-*.jar



若红框处版本号在受影响范围内,则请用户尽快升级至最新版本。



四.  漏洞防护


4.1  官方升级

官方已在最新版本中修复了此漏洞,请用户尽快将Struts升级至官方修复版本,2.3.*的用户需升级至2.3.35;2.5.*的用户需升级至2.5.17。开发人员可通过配置Maven或Gradle的方式对应用升级并编译发布,也可手动下载最新Struts框架进行替换。

Maven配置


<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->

<dependency>

    <groupId>org.apache.struts</groupId>

    <artifactId>struts2-core</artifactId>

    <version>2.5.17</version>

</dependency>


Gradle配置

// https://mvnrepository.com/artifact/org.apache.struts/struts2-core

compile group: 'org.apache.struts' name: 'struts2-core' version:'2.5.17'





官方下载链接:


Struts2.3.35

http://mirrors.hust.edu.cn/apache/struts/2.3.35/struts-2.3.35-all.zip

Struts2.5.17

http://mirrors.hust.edu.cn/apache/struts/2.5.17/struts-2.5.17-all.zip



4.2  临时解决建议

排查所有Struts 2的配置文件,如struts.xml,为没有定义namespace命名空间的package节点添加命名空间配置,示例如下:


<package name="user" namespace="/user" extends="struts-default">

    <action name="login">

    </action>

</package>





声明


本安全公告仅用来描述可能存在的安全问题,神狐互联不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,神狐互联以及安全公告作者不为此承担任何责任。