Spring AMQP 中的远程代码执行漏洞 CVE-2016-2173
严重 | 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年4月11日:发布初始漏洞报告。