CVE-2016-2173 Spring AMQP 中的远程代码执行

危急 | 2016 年 4 月 11 日 | CVE-2016-2173

描述

org.springframework.core.serializer.DefaultDeserializer 类不对反序列化的对象进行白名单验证。通过提供一个经过精心构造的序列化对象,例如 Chris Frohoff 的 Commons Collection gadget,可以实现远程代码执行。

受影响的 Spring 产品和版本

  • 1.0.0 至 1.5.4

缓解措施

受影响版本的用户应采取以下缓解措施

  • 引用的类 (DefaultDeserializer) 不会自动注册到任何 Spring 应用程序上下文中;用户在使用此类的过程中,如果处理来自不可信来源的对象,应像直接使用 ObjectInputStream 一样谨慎。
  • Spring AMQP 提供了一个(可选的)消息转换器,该转换器可以使用此反序列化器;从 1.5.5 版本开始,该转换器现在可以配置一个可接受的反序列化包/类白名单。
  • Spring AMQP 还提供了一个 SimpleMessageConverter,该转换器默认配置;它不使用此反序列化器,但内部使用 ObjectInputStream;它也可以配置一个包/类白名单。
  • 建议用户在 RabbitMQ 环境中接收不可信数据时,不要使用 Java 序列化;如果必须使用,则应使用允许的对象配置转换器。
  • 可能受到此漏洞影响的用户应升级到 Spring AMQP 1.5.5 或更高版本,并配置白名单。

致谢

漏洞发现者:Matthias Kaiser,Code White (www.code-white.com)

参考资料

历史

2016-Apr-11: 发布初始漏洞报告。

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有