CVE-2018-11087: RabbitMQ (Spring-AMQP) Host name verification
Description
spring-amqp, 1.x versions prior to 1.7.10, 2.x versions prior to 2.0.6 expose a man-in-the middle vulnerability.
The Spring RabbitMQ Java Client does not perform hostname validation.
This means that SSL certificates of other hosts are blindly accepted as long as they are trusted.
To exploit this vulnerability an attacker has to perform a man-in-the-middle (MITM) attack between a Java application using the Spring RabbitMQ Java Client and an RabbitMQ server it's connecting to.
TLS normally protects users and systems against MITM attacks, it cannot if certificates from other trusted hosts are accepted by the client.
Spring AMQP uses the RabbitMQ amqp-client java library for communication with RabbitMQ.
It uses the RabbitConnectionFactoryBean to create/configure the connection factory.
Affected Spring Products and Versions
- Spring-AMQP versions prior to 1.7.10 and 2.0.6
- RabbitMQ amqp-client versions prior to 4.8.0 and 5.4.0
Mitigation
Users of affected versions should apply the following mitigation:
- Upgrade to the 1.7.10.RELEASE or 2.0.6.RELEASE and set the enableHostnameValidation property to true. Override the transitive amqp-client version to at least 4.8.0 and 5.4.0, respectively
- The upcoming 2.1.0.RELEASE will set the property to true by default.
- If you are using the amqp-client library directly to create a connection factory, refer to its javadocs for the enableHostnameValidation() method.
Credit
This issue was identified and responsibly reported by Peter Stöckli of Alphabot Security, Switzerland.
History
2018-09-11: Initial vulnerability report published.