Menu Search

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

Severity

Important

Affected components

Qpid Proton-J

Affected versions

0.3 to 0.29.0

Fixed versions

0.30.0

Description

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.

Resolution

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.

Mitigation

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.

References

PROTON-1962

Credit

This issue was reported by Peter Stockli of Alphabot Security.