Menu Search

CVE-2018-17187: transport TLS wrapper hostname verification mode not implemented



Affected components

Qpid Proton-J

Affected versions

0.3 to 0.29.0

Fixed versions



The Proton-J transport includes an optional wrapper layer to perform TLS, enabled by use of the 'transport.ssl(...)' methods. Unless a verification mode was explicitly configured, client and server modes previously defaulted as documented to not verifying a peer certificate, with options to configure this explicitly or select a certificate verification mode with or without hostname verification being performed.

The latter hostname verifying mode was not previously implemented, with attempts to use it resulting in an exception. This left only the option to verify the certificate is trusted, leaving such a client vulnerable to Man In The Middle (MITM) attack.

Uses of the Proton-J protocol engine which do not utilise the optional transport TLS wrapper are not impacted, e.g. usage within Qpid JMS.


Uses of Proton-J utilising the optional transport TLS wrapper layer that wish to enable hostname verification must be upgraded to version 0.30.0 or later and utilise the VerifyMode#VERIFY_PEER_NAME configuration, which is now the default for client mode usage unless configured otherwise.


If upgrading is not currently possible then potential workarounds include providing a custom SSLContext which enables hostname verification, or omitting use of the 'transport.ssl(...)' methods and performing TLS through other means such as utilising existing IO framework support or supplying a custom transport wrapper layer.




This issue was reported by Peter Stockli of Alphabot Security.