漏洞
CVE-2021-21341: XStream 可能导致拒绝服务。
受影响版本
如果直接使用默认配置,所有直至并包括 1.4.15 的版本均受影响。遵循建议使用白名单(仅包含最小必需类型)配置 XStream 安全框架的用户不受影响。
描述
在反序列化时,被处理的流包含用于重新创建先前写入对象的类型信息。因此,XStream 会基于这些类型信息创建新实例。攻击者可以操纵被处理的输入流,并替换或注入一个被操纵的 ByteArrayInputStream(或其派生类),从而导致无限循环,造成拒绝服务。

$ docker build -t cve-2021-21341 .
$ docker run -it --rm cve-2021-21341
Security framework of XStream not explicitly initialized, using predefined black list on your own risk.
(never end)
将 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; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);