不安全的XStream反序列化 – 作者:Lotter

问题描述

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

来源:freebuf.com 2020-12-22 11:42:27 by: Lotter

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论