ArchLinux: 201602-21: lib32-libssh2: man-in-the-middle
Summary
There is a bits/bytes confusion bug resulting in generation of a
significantly short ephemeral secret for the diffie-hellman-group1 and
diffie-hellman-group14 key exchange methods. The resulting secret is 128
bits long, instead of the recommended sizes of 1024 and 2048 bits
respectively. There are practical algorithms (Baby steps/Giant steps,
Pollard's rho) that can solve this problem in O(2^63) operations.
Using such drastically reduced amount of random bits for Diffie Hellman
weakened the handshake security significantly. This vulnerability could
be exploited by an eavesdropper with enough resources to decrypt or
intercept SSH sessions.
Resolution
Upgrade to 1.7.0-1.
# pacman -Syu "lib32-libssh2>=1.7.0-1"
The problem has been fixed upstream in version 1.7.0.
References
https://libssh2.org/adv_20160223.html https://access.redhat.com/security/cve/CVE-2016-0787
Workaround
This issue may be worked around by using other key exchange methods, such as curve25519-sha256@libssh.org or ecdh-sha2-nistp256, both are not vulnerable. By default, an unpatched libssh2 implementation will already attempt to use these two more secure methods when supported by the other party.