CVE-2021-3450 is kinda delightful because it was introduced by a change that rejects custom curve parameters (which is what broke Windows last year), and it only affects X509_V_FLAG_X509_STRICT mode.
Complexity is killer.
Conversation
CVE-2021-3449 looks like it could have been found easily if anyone figured out how to fuzz renegotiation, but renegotiation is sadness.
Anyway, sounds like you can crash most OpenSSL servers on the Internet today.
7
21
67
Replying to
There's this note for CVE-2021-3449:
> A server is only vulnerable if it has TLSv1.2 and renegotiation enabled (which is the default configuration).
Disabling client-initiated renegotiation is a standard security measure checked by internet.nl for web/mail servers.
2
1
5
Client-initiated renegotiation is disabled by default in nginx since November 2009. It should be disabled elsewhere too and should really be disabled by default in a future major version OpenSSL. It's unnecessary attack surface and has been known to be for a very long time.
3
2
7
Curious, why does github.com/terorie/cve-20 then crash nginx? I also though that disabling client initiated reneg should be enough, can you shed some light on this ?
2
2
I just connected to a modern NGINX server with fairly stock config using “s_client -tls1_2 -connect” and it reports renegotiation is supported. Weird.
1
I would suspect that to refer to server renegotiation though. Can you run ssllabs (ssllabs.com/ssltest/) against that instance? I probably looks like the attached photo
2
1
My guess is that to be protected one needs to set SSL_OP_NO_RENEGOTIATION which is not the nginx default.
mailman.nginx.org/pipermail/ngin
Instead, I think nginx by default cancels renegotiation via SSL_CTX_set_info_callback, which is too late.
2
1
6
There was also this follow up: github.com/nginx/nginx/co So I think every new nginx should have SSL_OP_NO_RENEGOTIATION set by default (if compiled against new enough openssl), which makes me think that there is no way to disable renegotiation in a way that prevents the exploit?
1
Ok, SSL_OP_NO_RENEGOTIATION is probably simply to new for most stable distributions. Gotta check that later.
1
Quote Tweet
Replying to @FiloSottile
They disable it via SSL_OP_NO_RENEGOTIATION since hg.nginx.org/nginx/rev/dcab. 3 years ago isn't all that recent.
They have a mainline release and an LTS release. The SSL_OP_NO_RENEGOTIATION. It got into mainline in 1.15.4 and the LTS branch in 1.16.0. Current LTS release is 1.18.
Yes but that is new, your initial comment that it got disabled in 2009 was kinda confusing since it is not enough to prevent that issue...
1
I wasn't aware that the implementation of disabling it didn't work until 2018. I tested nginx stable and nginx mainline to confirm it worked the way I remembered and didn't check obsolete versions.



