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 }