Re: [jgroups-users] Impact of Security Alert JGRP-2021 on Symmetric Encryption

Questions/problems related to using JGroups <[email protected]> Mon, 20 Mar 2017 09:37:09 +0100
Newsgroups gmane.comp.java.javagroups.general
Message-ID <[email protected]>

On 13/03/17 11:01, Questions/problems related to using JGroups wrote:
>
>
>
>
> Thanks Bela Ban.
>
> 1. There is some confusion in the way I am interpreting JGRP-2021.
> JGRP-2021 says:
>
> "if a rogue node creates a minimal stack without encryption or
> authentication, then it is possible for that member to
>
>   * Send messages to the cluster
>   * Install a new view including itself"

Correct

> But as per your reply, "the message would be dropped".

Yes, in master (4.x), the 3.6 branch and selected branches to which 
JGRP-2021 was backported to (IIRC, 3.2 and possibly 3.4).

Older branches or branches without backport would still be affected

> Both things seem to be contradicting. I need to understand "How security would be
> breached because of JGRP-2021 in a system where symmetric
> encryption+encrypt_entire_message=true is being used?". Please elaborate.
> Is rogue node required to install ENCRYPT, set
> encrypt_entire_message=false in EncryptHeader

That code was not correct: encrypt_entire_message has been removed from 
EncryptHeader as a malicious node could simply change the value to false.

> and skip AUTH to be able
> to send messages to the cluster and install a new view including itself ?

Right.

> 2. https://issues.jboss.org/projects/JGRP/issues/JGRP-2157 link is not
> working.

It is 2155 and 2174.

> So, you mean that MitM is a possibility in Asymmetric encryption?

Yes, for the key exchange. [1] will fix this.

> you say this because someone in the middle could just see
> the AUTH token and use it to authenticate itself?

No, I'm referring to the key exchange part of ASYM_ENCRYPT (SYM_ENCRYPT 
is not affected).
Note that once [1]is in place, AUTH may be omitted if ASYM_ENCRYPT + 
KEY_EXCHANGE is used.

> All in all what would be your recommendation for production systems with respect to AUTH
> tokens and Encryption?

I've got customers in production with SYM_ENCRYPT and AUTH+MD5Token.

> 3. "but there's a reproducer in the CVE which
> you can run against your system to see if you have this issue."
>
> I am new to CVE portal. I am not able to find the reproducer at
> https://www.cvedetails.com/cve/CVE-2016-2141/.
> <https://www.cvedetails.com/cve/CVE-2016-2141/>
> Could you help me with the link?

Start with 
https://blogs.oracle.com/security/entry/security_alert_cve_2015_4852 and 
https://www.owasp.org/index.php/Deserialization_of_untrusted_data

[1] https://issues.jboss.org/browse/JGRP-2157

> Thanks
> Anuj
>
>
>
> As per your reply,  "If a message (or mesage batch) arrives at ENCRYPT,
> and doesn't have
> an EncryptHeader, it will be dropped (or removed from the batch).
> ENCRYPT.handleUpMessage() [632]." but JGRP-2021 says:
>
>
>
>
> On Monday, 13 March 2017 2:04 PM, Questions/problems related to using
> JGroups <[email protected]> wrote:
>
>
>
>
> On 12/03/17 20:30, Questions/problems related to using JGroups wrote:
>> Hi,
>>
>> We use Jgroups 3.4.3. We are planning to use symmetric encryption with
>> encrypt_entire_message=true. Recently, I came across JGRP-2021 security
>> vulnerability. I would appreciate if some Jgroup user could confirm
>> following impact analysis so as to confirm my correct interpretation of
>> the security vulnerability.
>>
>>    Security Impact of JGRP-2021 on a System with Symmetric Encryption
>> and encrypt_entire_message=true
>>
>>
> -----------------------------------------------------------------------------------------------------------------
>>    A. Even if I use symmetric encryption with
>> encrypt_entire_message=true, A non-member could still send messages to
>> existing nodes by not using ENCRYPT and AUTH.
>
> No. If a message (or mesage batch) arrives at ENCRYPT, and doesn't have
> an EncryptHeader, it will be dropped (or removed from the batch).
> ENCRYPT.handleUpMessage() [632].
>
>
>>    B. Replay attack is NOT possible because entire message is encrypted
>> and a hacker cant get the seq no. (duplicates shall automatically be
>> discarded)
>
> Correct.
>
>
>>    C. Because a non-member is able to send message to existing nodes, a
>> new view (including non-member) could be installed on existing nodes.
>> Thus, a non-member  would start receiving encrypted messages from nodes
>> but completed encrypted messages wont be of any use, unless the new node
>> possesses the secret key. So, no issues.
>
> The non-member would have to have ENCRYPT installed, or else its message
> without an EncryptHeader would be dropped (see A above). Unless the
> non-member has the secret key, decryption will fail and the message will
> be discarded.
>
> So a non-member would *not* be able to send a VIEW message to individual
> members, therefore it would not be able to join the group.
>
>>    D. As per https://access.redhat.com/articles/2360521,
> <https://access.redhat.com/articles/2360521,>a remote
>> attacker could execute arbitrary code on a Java Virtual Machine running
>> JGroups. This is possible because security is bypassed.
>
> Java serialization is still used internally in some places in 3.4.3;
> this was changed by JGRP-2021 and the backport to the 3.6 branch. I
> think the quickfix was to remove vulnerable libs such as
> commons-collections from the classpath unless they're absolutely required.
>
> I'm not sure about your env, but there's a reproducer in the CVE which
> you can run against your system to see if you have this issue.
>
>> Also, I think Asymmetric encryption is better than symmetric encryption
>> because: In Asymmetric communication, New symmetric key is generated for
>> each view change.
>
> If you enable this, yes.
>
>> Thus, a symmetric key which was leaked earlier cant be misused.
>
> Correct
>
>> At the same time, asymmetric encryption can create problems if
>> AUTH is weak. Any recommendation on the type of AUTH tokens and
>> Encryption type?
>
> No, this depends on your system. Note that I've seen cases where more
> than one AUTH instances were placed onto the same stack.
>
> Also, man-in-the-middle is still possible with the current key exchange
> in ASYM_ENCRYPT. I plan to move the key exchange functionality to a
> separate protocol and provide multiple implementations, see [1] for details.
>
> [1] https://issues.jboss.org/projects/JGRP/issues/JGRP-2157
>
>> Thanks
>> Anuj
> _______________________________________________
>> javagroups-users mailing list
>> [email protected]
> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>
> --
> Bela Ban, JGroups lead (http://www.jgroups.org <http://www.jgroups.org/>)
>
>
>
> ------------------------------------------------------------------------------
> Announcing the Oxford Dictionaries API! The API offers world-renowned
> dictionary content that is easy and intuitive to access. Sign up for an
> account today to start using our lexical data to power your apps and
> projects. Get started today and enter our developer competition.
> http://sdm.link/oxford
> _______________________________________________
> javagroups-users mailing list
> [email protected]
> <mailto:[email protected]>
> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> Announcing the Oxford Dictionaries API! The API offers world-renowned
> dictionary content that is easy and intuitive to access. Sign up for an
> account today to start using our lexical data to power your apps and
> projects. Get started today and enter our developer competition.
> http://sdm.link/oxford
>
>
>
> _______________________________________________
> javagroups-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>

-- 
Bela Ban, JGroups lead (http://www.jgroups.org)


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot