[ 
https://issues.apache.org/jira/browse/AMQ-5443?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17357403#comment-17357403
 ] 

Matt Pavlovich commented on AMQ-5443:
-------------------------------------

This was fixed in 5.16.x

ref: 
https://github.com/apache/activemq/commit/69fad2a135689f6c31fbada1c397f2e0dfd90d3c


> SSL client does not validate server certificate common name
> -----------------------------------------------------------
>
>                 Key: AMQ-5443
>                 URL: https://issues.apache.org/jira/browse/AMQ-5443
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.10.0
>            Reporter: Allen Hadden
>            Priority: Major
>              Labels: security
>         Attachments: MyActiveMQSslConnectionFactory.java
>
>
> When using SSL the server certificate's common name (or subjectAltName) must 
> be validated in order to prevent a man-in-the-middle attack.  The ActiveMQ 
> client does not do this by default and makes doing so somewhat difficult.
> The result is that most applications that use the ActiveMQ client with SSL 
> are not getting the security they think they are.  For a very good 
> explanation of this hostname verification issue, see 
> http://tersesystems.com/2014/03/23/fixing-hostname-verification/
> It is worth nothing that ActiveMQ was specifically mentioned in a paper 
> titled "The Most Dangerous Code in the World:  Validating SSL Certificates in 
> Non-Browser Software" (https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf):
> "Java-based Web-services middleware, such as Apache Axis, Axis 2, and 
> Codehaus XFire, is broken, too. So is the Android library for Pusher 
> notification API and Apache ActiveMQ implementation of Java Message Service. 
> All programs employing this middleware are generically insecure."
> Also, ActiveMQ is specifically mentioned in CVE-2012-5784 
> (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-5784) as an example 
> of a library that does not do host name checking.  I can't explain why this 
> hasn't been a bigger deal (am I missing something?).
> We have worked around this in our code by providing our own connection 
> factory class that inherits from ActiveMQSslConnectionFactory.  It overrides 
> the createTrustManager() and setKeyAndTrustManagers(...) methods in order to 
> "decorate" the real TrustManagers with a check for certificate host name.  
> Currently, it uses 
> org.apache.http.conn.ssl.SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER
>  from the Apache HTTP Client project to verify the host name, which works for 
> our project because we already use the Apache HTTP Client elsewhere.
> I created this issue with a Major priority, although it could be argued that 
> it's Critical because it's security related and likely to affect so many 
> people.  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to