描述
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: 初次漏洞報告發布。