官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
问题描述
XStream是一个简单的基于Java库,Java对象序列化到XML,反之亦然(即:可以轻易的将Java对象和xml文档相互转换)。
攻击者可以通过构造反序列的代码,达到目的。
如何避免
(1) 采用白名单策略,只允许白名单上的对象生成,不允许生成未经定义的对象。
(2) 对序列化对象执行完整性检查和加密处理,防止被恶意篡改和创建恶意对象。
(3) 反序列化过程之前执行严格的类型限制。
解决方法
XStream.allowTypeHierarchy
方法为反序列化类 Contact
添加安全权限避免不安全的反序列化。
- XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder())) ;
xStream.allowTypeHierarchy(XXX.class);
Class<?>[] classes = new Class[] {XXX.class};
xStream.allowTypes(classes);
(需要升级为1.4版本以上)
详解查看:https://www.freebuf.com/column/205781.html