漏洞
CVE-2021-21349:在使用 XStream 进行反序列化时,可触发服务端请求伪造(SSRF),从而访问内网或本地主机中任意 URL 引用的资源。
受影响版本
使用默认配置的所有版本(包括 1.4.15 及之前版本)均受影响。如果用户按照建议设置了 XStream 的安全框架,仅允许白名单中的必需类型,则不受影响。
描述
在反序列化过程中,被处理的流包含用于重建先前写入对象的类型信息。XStream 基于这些类型信息创建新的实例。攻击者可以操纵输入流,替换或注入对象,从而导致服务端请求伪造。

$ docker build -t cve-2021-21349 .
$ python -m http.server 8080
$ docker run -it --rm cve-2021-21349
Serving HTTP on :: port 8080 (http://[::]:8080/) ...
::ffff:127.0.0.1 - - [05/May/2021 16:35:39] "GET /internal.txt HTTP/1.1" 200 -
修改 pom.xml 如下:
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
添加 NoTypePermission.NONE
import com.thoughtworks.xstream.security.NoTypePermission; // 添加
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // 添加
xstream.fromXML(xml);