CVE-2021-4044
HIGH7.5EPSS 33.3%Invalid handling of `X509_verify_cert()` internal errors in libssl
Description
Internally libssl in OpenSSL calls `X509_verify_cert()` on the client side to verify a certificate supplied by a server. That function may return a negative return value to indicate an internal error (for example out of memory). Such a negative return value is mishandled by OpenSSL and will cause an IO function (such as `SSL_connect()` or `SSL_do_handshake()`) to not indicate success and a subsequent call to `SSL_get_error()` to return the value `SSL_ERROR_WANT_RETRY_VERIFY`. This return value is only supposed to be returned by OpenSSL if the application has previously called `SSL_CTX_set_cert_verify_callback()`. Since most applications do not do this the `SSL_ERROR_WANT_RETRY_VERIFY` return value from `SSL_get_error()` will be totally unexpected and applications may not behave correctly as a result. The exact behaviour will depend on the application but it could result in crashes, infinite loops or other similar incorrect responses. This issue is made more serious in combination with a separate bug in OpenSSL 3.0 that will cause `X509_verify_cert()` to indicate an internal error when processing a certificate chain. This will occur where a certificate does not include the Subject Alternative Name extension but where a Certificate Authority has enforced name constraints. This issue can occur even with valid chains.
Affected packages (6)
- Alpine/opensslfrom 0, < 3.0.1-r0
- Alpine/openssl3from 0, < 3.0.2-r0
- Bitnami/node>= 17.0.0, < 17.3.0
- Bitnami/node-min>= 17.0.0, < 17.3.0
- crates.io/openssl-src>= 300.0.0, < 300.0.4
- crates.io/openssl-src>= 300.0.0, < 300.0.4
CVSS scores
| Source | Version | Severity | Vector |
|---|---|---|---|
| osv | CVSS 3.1 | HIGH7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
References (9)
- ADVISORYhttps://nvd.nist.gov/vuln/detail/CVE-2021-4044
- ADVISORYhttps://security.alpinelinux.org/vuln/CVE-2021-4044
- PATCHhttps://crates.io/crates/openssl-src
- WEBhttps://git.openssl.org/gitweb/?p=openssl.git%3Ba=commitdiff%3Bh=758754966791c537ea95241438454aa86f91f256
- WEBhttps://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=758754966791c537ea95241438454aa86f91f256
- WEBhttps://rustsec.org/advisories/RUSTSEC-2021-0129.html
- WEBhttps://security.netapp.com/advisory/ntap-20211229-0003
- WEBhttps://security.netapp.com/advisory/ntap-20211229-0003/
- WEBhttps://www.openssl.org/news/secadv/20211214.txt