XStream组件预警以及修复指引

xstream介绍

官网地址:https://x-stream.github.io/
基本介绍:对XML对象进行序列化和反序列化的库
漏洞预警:存在远程代码执行漏洞,可造成服务器被入侵和业务数据被窃取,该漏洞风险等级为【严重】
影响版本: 1.4.17 以下版本

修复方案

升级

升级到最新版本1.4.17。
https://x-stream.github.io/download.html

删除jar包

如果业务不需要使用XStream库文件,直接删除即可

限制反序列化的类

需要修改源码,XStream官方提供了安全api让开发者根据项目的需求去做限制。
demo:

 1 import com.thoughtworks.xstream.XStream;
 2 import com.thoughtworks.xstream.security.NoTypePermission;
 3 import com.thoughtworks.xstream.security.NullPermission;
 4 import com.thoughtworks.xstream.security.PrimitiveTypePermission;
 5 
 6 import java.io.File;
 7 import java.io.FileOutputStream;
 8 
 9 public class Test {
10 
11 
12     public static void main(String[] args) throws Exception {
13 
14         XStream xstream = new XStream();
15         xstream.toXML(new People("test",11),new FileOutputStream(new File("/tmp/people.xml")));
16 
17         // 不允许白名单
18         xstream.addPermission(NoTypePermission.NONE);
19         // 允许基础类
20         xstream.addPermission(NullPermission.NULL);
21         xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
22         // 允许业务类
23         xstream.allowTypeHierarchy(People.class);
24         People people = (People) xstream.fromXML(new File("/tmp/people.xml"));
25         System.out.println(people.name); //打印 test
26 
27     }
28 }
原文地址:https://www.cnblogs.com/handt/p/14780473.html