GitHub Advisoryadvisory · crates.io
GHSA-x3mh-jvjw-3xwx openssl-src's infinite loop in `BN_mod_sqrt()` reachable when parsing certificates
HIGH
Official page ↗
- Aliases
- CVE-2022-0778
- Ecosystem
- crates.io
- Packages
- openssl-src
- Severity
- High
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-835
- Reviewed
- 2022-05-03
Affected packages
• crates.io openssl-src: >= 300.0.0, < 300.0.5 → fixed in 300.0.5
• crates.io openssl-src: < 111.18.0 → fixed in 111.18.0
Description
The BN_mod_sqrt() function, which computes a modular square root, contains a bug that can cause it to loop forever for non-prime moduli. Internally this function is used when parsing certificates that contain elliptic curve public keys in compressed form or explicit elliptic curve parameters with a base point encoded in compressed form. It is possible to trigger the infinite loop by crafting a certificate that has invalid explicit curve parameters. Since certificate parsing happens prior to verification of the certificate signature, any process that parses an externally supplied certificate may thus be subject to a denial of service attack. The infinite loop can also be reached when parsing crafted private keys as they can contain explicit elliptic curve parameters. Thus vulnerable situations include: - TLS clients consuming server certificates - TLS servers consuming client certificates - Hosting providers taking certificates or private keys from customers - Certificate authorities parsing certification requests from subscribers - Anything else which parses ASN.1 elliptic curve parameters Also any other applications that use the BN_mod_sqrt() where the attacker can control the parameter values are vulnerable to this DoS issue. In the OpenSSL 1.0.2 version the public key is not parsed during initial parsing of the certificate which makes it slightly harder to trigger the infinite loop. However any operation which requires the public key from the certificate will trigger the infinite loop. In particular the attacker can use a self-signed certificate to trigger the loop during verification of the certificate signature. This issue affects OpenSSL versions 1.0.2, 1.1.1 and 3.0. It was addressed in the releases of 1.1.1n and 3.0.2 on the 15th March 2022. Fixed in OpenSSL 3.0.2 (Affected 3.0.0,3.0.1). Fixed in OpenSSL 1.1.1n (Affected 1.1.1-1.1.1m). Fixed in OpenSSL 1.0.2zd (Affected 1.0.2-1.0.2zc).
Related
Alias · CVE (1)
- CVE-2022-0778 The BN_mod_sqrt() function, which computes a modular square root, contains a bug that can cause it to loop forever for non-prime moduli. vulnerability
Weakness · CWE (1)
- CWE-835 Loop with Unreachable Exit Condition weakness
References
- https://nvd.nist.gov/vuln/detail/CVE-2022-0778 advisory
- https://rustsec.org/advisories/RUSTSEC-2022-0014.html web
- https://security.gentoo.org/glsa/202210-02 web
- https://security.netapp.com/advisory/ntap-20220321-0002 web
- https://security.netapp.com/advisory/ntap-20220429-0005 web
- https://security.netapp.com/advisory/ntap-20240621-0006 web
- https://support.apple.com/kb/HT213255 web
- https://support.apple.com/kb/HT213256 web
- https://support.apple.com/kb/HT213257 web
- https://www.debian.org/security/2022/dsa-5103 web
- https://www.openssl.org/news/secadv/20220315.txt web
- https://www.oracle.com/security-alerts/cpuapr2022.html web
- https://www.oracle.com/security-alerts/cpujul2022.html web
- https://www.tenable.com/security/tns-2022-06 web
- https://www.tenable.com/security/tns-2022-07 web
- https://www.tenable.com/security/tns-2022-08 web
- https://www.tenable.com/security/tns-2022-09 web
- https://psirt.global.sonicwall.com/vuln-detail/SNWLID-2022-0002 web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/W6K3PR542DXWLEFFMFIDMME4CWMHJRMG web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/GDB3GQVJPXJE7X5C5JN6JAA4XUDWD6E6 web
- https://lists.fedoraproject.org/archives/list/[email protected]/message/323SNN6ZX7PRJJWP2BUAFLPUAE42XWLZ web
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/W6K3PR542DXWLEFFMFIDMME4CWMHJRMG web
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/GDB3GQVJPXJE7X5C5JN6JAA4XUDWD6E6 web
- https://lists.fedoraproject.org/archives/list/package-announce%40lists.fedoraproject.org/message/323SNN6ZX7PRJJWP2BUAFLPUAE42XWLZ web
- https://lists.debian.org/debian-lts-announce/2022/03/msg00024.html web
- https://lists.debian.org/debian-lts-announce/2022/03/msg00023.html web
- https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=a466912611aa6cbdf550cd10601390e587451246 web
- https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=380085481c64de749a6dd25cdf0bcf4360b30f83 web
- https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=3118eb64934499d93db3230748a452351d1d9a65 web
- https://git.openssl.org/gitweb/?p=openssl.git%3Ba=commitdiff%3Bh=a466912611aa6cbdf550cd10601390e587451246 web
- https://git.openssl.org/gitweb/?p=openssl.git%3Ba=commitdiff%3Bh=380085481c64de749a6dd25cdf0bcf4360b30f83 web
- https://git.openssl.org/gitweb/?p=openssl.git%3Ba=commitdiff%3Bh=3118eb64934499d93db3230748a452351d1d9a65 web
- https://cert-portal.siemens.com/productcert/pdf/ssa-712929.pdf web
- http://packetstormsecurity.com/files/167344/OpenSSL-1.0.2-1.1.1-3.0-BN_mod_sqrt-Infinite-Loop.html web
- http://seclists.org/fulldisclosure/2022/May/33 web
- http://seclists.org/fulldisclosure/2022/May/35 web
- http://seclists.org/fulldisclosure/2022/May/38 web