OpenSSH 8.6 is still vulnerable to CVE-2020-14145 and will not be fixed
github.com
github.com
So any mitigations that make it impossible to differentiate a new connection from a previously verified one would solve it for now, but doesn't solve the root of the problem. The root issue is that a user is manually accepting an incorrect fingerprint. Currently it's very difficult to determine what the correct one is, which makes it rather worthless to prompt the user in the first place, but at least they have support after 8.0 for doing easier comparison.
So when are we getting the pre-shared fingerprint ease-of-use fixes that actually solve this?
I looked at both patches and didn't like either one of them. The user 'manfred-kaiser' makes a good point and I have confirmed that he is correct. However the fix he is proposing is not a very good fix. So in my opinion both of the proposed fixes are not sufficient.
The proposed fix: https://github.com/openssh/openssh-portable/commit/b3855ff05...
This proposed fix means OpenSSH is not secure 'by default' and would require HostKeyAlgorithms to be set in the config file. Furthermore... there needs to be an existing public key. Also keep in mind that SSHD refuses to use group/world-accessible keys.
So if this patch is accepted CVE-2020-14145 will continue to work on 'misconfigured' servers.
"It's not our fault, your OpenSSH was misconfigured!"
I think it would probably be better if there was a standard for an out of band way to validate the servers public key. Like store a hash in a DNS txt record or something.
In addition to the mentioned SSHFP record, OpensSSH 8.0 added:
> ssh(1): When prompting whether to record a new host key, accept the key fingerprint as a synonym for "yes". This allows the user to paste a fingerprint obtained out of band at the prompt and have the client do the comparison for you.
I think new protocols should explicitly choose the crypto algorithms and the only way to change them would be to upgrade the protocol as a whole.
We're already running into compatibility problems with IoT devices and server management boards because of HTTPS and that's just with TLS <1.2 being turned off after many years. I don't believe changing the protocol even faster will benefit most applications. The world has barely implemented http/2 and yet we're already on http/3 based on yet another entirely different protocol.
For the most part, I think negotiable ciphers have been discredited among cryptography engineers. Certainly, it's a design smell in new protocols.
And just the same as using algorithm set 3 to connect to a MITM proxy for a device that should have used algorithm set 4 you'll also have the same problem using protocol version 3 to a MITM proxy for a device that should have used protocol version 4.
> No additional option is needed to change the ordering. If you want to hard-code the default then use the existing HostKeyAlgorithms option.
> Between b3855ff and the more recent change to enable UpdateHostKeys, most users should soon receive the default ordering anyway.
I don't know if this means, that it will not be fixed. It sounds, that there are already some fixes integrated.
But why was the CVE updated to the latest version?
I have tested 8.6 on my machine, and the described exploit still works :-(
Perhaps it is fixed in the next release?
fingerprint the host key -> send an SMS and email of it to you via some APIs -> if they match, then feel free to paste it in during TOFU
Sending emails or texts is easy, but checking them each time you log in from a new device is cumbersome. I'm too lazy to do the latter and prefer to put in work to set up my complex setup instead, but of course your mileage may vary.