proton-0.3, proton-0.4, proton-0.5, proton-0.6, proton-0.7, proton-0.8, proton-0.9, proton-0.9.1, proton-0.10, proton-0.11.0, proton-0.11.1, proton-0.12.0, proton-0.12.1, proton-0.12.2, proton-0.13.0, proton-0.13.1, proton-0.14.0, proton-0.15.0, proton-0.16.0, proton-j-0.17.0, proton-j-0.18.0, proton-j-0.19.0, proton-j-0.20.0, proton-j-0.21.0, proton-j-0.22.0, proton-j-0.23.0, proton-j-0.24.0, proton-j-0.25.0, proton-j-0.26.0, proton-j-0.27.0, proton-j-0.27.1, proton-j-0.27.2, proton-j-0.28.0, proton-j-0.27.3, proton-j-0.28.1, proton-j-0.29.0
[CVE-2018-17187] transport TLS wrapper hostname verification mode not implemented
Affects version: 0.3 to 0.29.0
Fix Version: 0.30.0
The 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.
The change made here implements the VerifyMode#VERIFY_PEER_NAME config
option, and makes it the default for client mode usage not configured
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.