描述
spring-amqp 的 1.x 1.7.10 版本之前、2.x 2.0.6 版本之前存在中间人漏洞。
Spring RabbitMQ Java 客户端不执行主机名验证。
这意味着只要其他主机的 SSL 证书受到信任,就会被盲目接受。
要利用此漏洞,攻击者必须在使用 Spring RabbitMQ Java 客户端的 Java 应用程序与其连接的 RabbitMQ 服务器之间执行中间人 (MITM) 攻击。
TLS 通常可以保护用户和系统免受 MITM 攻击,但如果客户端接受来自其他受信任主机的证书,则无法实现保护。
Spring AMQP 使用 RabbitMQ 的 amqp-client Java 库与 RabbitMQ 进行通信。
它使用 RabbitConnectionFactoryBean 创建/配置连接工厂。
受影响的 Spring 产品和版本
Spring-AMQP 1.7.10 和 2.0.6 版本之前 RabbitMQ amqp-client 4.8.0 和 5.4.0 版本之前
缓解措施
受影响版本的用户应采取以下缓解措施
升级到 1.7.10.RELEASE 或 2.0.6.RELEASE,并将 enableHostnameValidation 属性设置为 true。分别将传递依赖的 amqp-client 版本覆盖到至少 4.8.0 和 5.4.0 即将发布的 2.1.0.RELEASE 版本将默认把该属性设置为 true。 如果您直接使用 amqp-client 库创建连接工厂,请参考其 javadoc 中关于 enableHostnameValidation() 方法的说明。
致谢
此问题由瑞士 Alphabot Security 的 Peter Stöckli 发现并负责任地报告。
历史记录
2018-09-11: 初次漏洞报告发布。