CVE-2016-2173 Spring AMQP 中的远程代码执行漏洞
严重 | 2016 年 4 月 11 日 | CVE-2016-2173
描述
类 org.springframework.core.serializer.DefaultDeserializer 不会根据白名单验证反序列化的对象。通过提供精心设计的序列化对象(如 Chris Frohoff 的 Commons Collection gadget),可以实现远程代码执行。
受影响的 Spring 产品和版本
缓解措施
受影响版本的用户应采取以下缓解措施
- 引用的类 (DefaultDeserializer) 不会被任何 Spring 应用程序上下文自动注册;当使用此类处理来自不受信任来源的对象时,用户应像直接使用 ObjectInputStream 时一样小心。
- Spring AMQP 有一个(可选)消息转换器,可以使用此反序列化器;从 1.5.5 版本开始,该转换器现在可以使用可反序列化的可接受包/类的白名单进行配置。
- Spring AMQP 还有一个默认配置的 SimpleMessageConverter;它不使用反序列化器,但在内部使用 ObjectInputStream;它现在也可以配置包/类的白名单。
- 建议用户在使用 RabbitMQ 的环境中,如果可能收到不受信任的数据,则不要使用 Java 序列化;如果使用,则应使用允许的对象配置转换器。
- 可能暴露于此漏洞的用户应升级到 Spring AMQP 1.5.5 或更高版本,并配置白名单。
鸣谢
该漏洞由 Code White 的 Matthias Kaiser 发现 (www.code-white.com)
参考
历史
2016-Apr-11:发布初始漏洞报告。