How many CVEs does my OpenSSL version have?
The column “CVEs according to the NVD” counts CVEs whose NVD configuration lists the version as vulnerable, queried on 4 November 2026 through the NVD API under cpe:2.3:a:openssl:openssl, without rejected entries, each hit re-checked against its configuration. CVE-2019-0190 appears for every version; it concerns mod_ssl in the Apache HTTP Server and lists OpenSSL only as the environment. It is taken out. Where the NVD has no CVSS score of its own, the CISA-ADP score applies; that is the case for almost all CVEs from 2026.
The right column counts the version ranges OpenSSL itself states on its vulnerabilities page, with its own rating Low, Moderate, High or Critical. The column “Shipped in” names which build system ships this version at its release tag.
| Version | Released | Shipped in | CVEs according to the NVD, of them CVSS 9.0 or higher | According to OpenSSL, of them High |
|---|---|---|---|---|
| 4.1.0 | 23 Oct 2026 | newest version | none | none |
| 4.0.3 | 29 Sep 2026 | Yocto 6.1 | none | none |
| 3.6.5 | 29 Sep 2026 | Buildroot 2026.08.1; support ended 1 Nov 2026 | none | none |
| 3.6.2 | 7 Apr 2026 | Buildroot 2026.02.3 | 39, 3 of them | 41, 2 of them |
| 3.5.9 | 29 Sep 2026 | OpenWrt 25.12.6, Buildroot 2025.02.19 | none | none |
| 3.5.8 | 25 Aug 2026 | Yocto 5.0.21 and 6.0.4 | 13, none 9.0 or higher | 13, 1 of them |
| 3.5.6 | 7 Apr 2026 | Yocto 5.3.4 | 37, 3 of them | 38, 2 of them |
| 3.4.8 | 29 Sep 2026 | last 3.4; support ended 22 Oct 2026 | none | none |
| 3.4.2 | 1 Jul 2025 | Yocto 5.2.4 | 51, 4 of them | 54, 3 of them |
| 3.3.7 | 7 Apr 2026 | last 3.3 | none | none, see below |
| 3.2.6 | 30 Sep 2025 | last 3.2 | 1 | none, see below |
| 3.1.8 | 11 Feb 2025 | last 3.1 | 1 | none, see below |
| 3.0.22 | 25 Aug 2026 | last public 3.0 | 6, none 9.0 or higher | 6, 1 of them |
| 3.0.21 | 9 Jun 2026 | OpenWrt 24.10.8 | 11, 1 of them | 11, 1 of them |
| 3.0.19 | 27 Jan 2026 | Yocto 4.0.35 | 27, 3 of them | 27, 2 of them |
| 3.0.16 | 11 Feb 2025 | OpenWrt 23.05.6 | 35, 3 of them | 37, 3 of them |
| 3.0.8 | 7 Feb 2023 | 48, 3 of them | 57, 3 of them | |
| 1.1.1w | 11 Sep 2023 | last public 1.1.1 | 24, none 9.0 or higher | 31, 2 of them |
| 1.0.2u | 20 Dec 2019 | last public 1.0.2 | 35, none 9.0 or higher | 40, 5 of them |
28 hits, minus CVE-2019-0190: 27.
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:a:openssl:openssl:3.0.19&noRejected" \
| jq .totalResults28Why does the NVD score OpenSSL vulnerabilities higher than OpenSSL does?
OpenSSL rates in its own levels and states the preconditions of a vulnerability in its description. The NVD and CISA-ADP score by CVSS. Of the 63 OpenSSL CVEs from 2026, OpenSSL rates 49 as Low, 11 as Moderate and 3 as High. OpenSSL rates the four CVEs with CVSS 9.0 or higher as Low or Moderate.
For devices the precondition is what counts. CVE-2026-31789 affects only 32-bit platforms, so devices with 32-bit ARM Linux too; but it needs a certificate of over 1 GB that the application prints or logs.
| CVE, CVSS / OpenSSL | What, precondition, fixed in |
|---|---|
| CVE-2026-31789, 9.8 (NVD) / Low | Heap overflow when converting an OCTET STRING to hex, only on 32-bit platforms. Fixed in 3.0.20, 3.3.7, 3.4.5, 3.5.6, 3.6.2. |
| CVE-2026-34182, 9.1 (CISA-ADP) / Moderate | CMS AuthEnvelopedData does not check cipher and tag length sufficiently, forged messages are accepted. Fixed in 3.0.21, 3.4.6, 3.5.7, 3.6.3, 4.0.1. |
| CVE-2026-63073, 9.8 (CISA-ADP) / Low | Sender DN used as a format string when checking CMP responses, a CMP client crashes. 3.0 not affected. Fixed in 3.4.7, 3.5.8, 3.6.4, 4.0.2. |
| CVE-2026-75803, 9.1 (CISA-ADP) / Low | ChaCha20-Poly1305 and AES-OCB report success through EVP_Cipher() on empty ciphertext without checking the tag. Fixed in 3.0.22, 3.4.7, 3.5.8, 3.6.4, 4.0.2. |
| CVE-2026-84782, 8.2 (CISA-ADP) / High | DTLS retransmits handshake messages from a stale buffer region, read past the end of the buffer. Fixed in 3.4.8, 3.5.9, 3.6.5, 4.0.3; for 3.0, 1.1.1 and 1.0.2 only with a support contract. |
| CVE-2026-45447, 8.8 (CISA-ADP) / High | Use-after-free in PKCS7_verify() with crafted PKCS#7 or S/MIME signatures. Fixed in 3.0.21, 3.4.6, 3.5.7, 3.6.3, 4.0.1. |
| CVE-2025-15467, 8.8 (CISA-ADP) / High | Stack overflow when parsing CMS (Auth)EnvelopedData. Fixed in 3.0.19, 3.3.6, 3.4.4, 3.5.5, 3.6.1. |
Which OpenSSL CVEs are missing from the version query?
For a line past its end of support, OpenSSL no longer enters version ranges, and the NVD almost never lists these lines after that either. The last entry for 3.1 dates from 20 January 2025, for 3.2 from 30 September 2025, for 3.3 from 7 April 2026. Since the respective end of support, OpenSSL has reported 37 vulnerabilities for 3.0 and a newer line but not for 3.1; for 3.2 there are 35, for 3.3 21. The code of these vulnerabilities is in the line before and in the line after. 3.1, 3.2 and 3.3 are therefore probably affected; OpenSSL has not checked this. One example: OpenSSL names CVE-2025-9230 for 1.0.2, 1.1.1, 3.0 and 3.2 to 3.5, not for 3.1. For 3.1.8, 3.2.6 and 3.3.7 the NVD number is not a finding.
13 CVEs with OpenSSL as CNA have no configuration in the NVD and are missing from every version query: eleven with status “Deferred”, among them CVE-2024-12797 (High, raw public keys in 3.2 to 3.4) and CVE-2025-9230 to -9232, plus CVE-2026-54876 and CVE-2026-14456 with “Awaiting Analysis”. The right column of the table above includes them.
For 3.0.22, 1.1.1w and 1.0.2u OpenSSL keeps reporting vulnerabilities, with fixes in 3.0.23, 1.1.1zj and 1.0.2zs. These versions exist only for customers with a support contract; the public repository has no tag 3.0.23.
Which OpenSSL version is still supported?
OpenSSL releases twice a year, in April and in October. Every two years, in April of odd years, a version becomes an LTS with five years of support; the next is 4.2 in April 2027. Other lines from 3.5 on get 13 months of support. According to the release strategy, API and ABI stay compatible within the same major version: 3.0 and 3.5 both use libssl.so.3 and libcrypto.so.3. With 4.0, .so.4 begins.
| Line | Public support, last version |
|---|---|
| 4.1 | until 23 Nov 2027, 4.1.0 of 23 Oct 2026 |
| 4.0 | until 14 May 2027, 4.0.3 of 29 Sep 2026 |
| 3.5 (LTS) | until 8 Apr 2030, 3.5.9 of 29 Sep 2026 |
| 3.6 | ended on 1 Nov 2026, last 3.6.5 |
| 3.4 | ended on 22 Oct 2026, last 3.4.8 |
| 3.3 | ended on 9 Apr 2026, last 3.3.7 |
| 3.2 | ended on 23 Nov 2025, last 3.2.6 |
| 3.1 | ended on 14 Mar 2025, last 3.1.8 |
| 3.0 (LTS) | ended on 7 Sep 2026, last public 3.0.22; 3.0.23 only with a support contract |
| 1.1.1 (LTS) | ended on 11 Sep 2023, last public 1.1.1w; up to 1.1.1zj only with a support contract |
| 1.0.2 | last public 1.0.2u of 20 Dec 2019; up to 1.0.2zs only with a support contract |
Which OpenSSL version is in Yocto, OpenWrt and Buildroot?
Read from the recipe and the Makefile at the release tags, as of 4 November 2026. Yocto also adds single fixes to the recipe as patches without changing the version number; Kirkstone 4.0.35, for example, patches for CVE-2024-41996 and CVE-2023-50781 on top of 3.0.19. What a build lists as fixed is therefore in the recipe and its patches; the version number alone is not enough.
The default image of OpenWrt 24.10.8 and 25.12.6 contains no OpenSSL; TLS there comes from mbedTLS. OpenSSL only enters the build with packages that need it. The package feed of an OpenWrt line keeps being updated after the release: at tag v24.10.8 it is 3.0.21, in the package feed 3.0.22.
| Build system, release | OpenSSL, CVEs according to the NVD |
|---|---|
| Yocto 6.1 (Blacksail) | 4.0.3, none |
| Yocto 6.0.4 (Wrynose, LTS until April 2030) | 3.5.8, 13 |
| Yocto 5.3.4 (Whinlatter, support ended) | 3.5.6, 37, 3 of them 9.0 or higher |
| Yocto 5.2.4 (Walnascar, support ended) | 3.4.2, 51, 4 of them 9.0 or higher |
| Yocto 5.0.21 (Scarthgap, LTS until April 2028) | 3.5.8, 13; on the scarthgap branch 3.5.9 since 22 Oct 2026 |
| Yocto 4.0.35 (Kirkstone, support ended) | 3.0.19 with patches, 27, 3 of them 9.0 or higher |
| OpenWrt 25.12.6 | 3.5.9 as a package, none |
| OpenWrt 24.10.8 | 3.0.21 at the tag (11), 3.0.22 in the package feed (6) |
| OpenWrt 23.05.6 | 3.0.16, 35, 3 of them 9.0 or higher |
| Buildroot 2025.02.19 (LTS until March 2028) | 3.5.9, none |
| Buildroot 2026.08.1 | 3.6.5, none; the 3.6 line has had no support since 1 Nov 2026 |
| Buildroot 2026.02.3 | 3.6.2, 39, 3 of them 9.0 or higher |
curl -s "https://api.github.com/repos/openembedded/openembedded-core/contents/meta/recipes-connectivity/openssl?ref=yocto-5.0.21" \
| jq -r '.[].name' | grep openssl_openssl_3.5.8.bbWhere is the OpenSSL version in my firmware?
OpenSSL writes its version with the date as text into libcrypto, from 3.0 on in the form “OpenSSL 3.0.22 25 Aug 2026”, up to 1.1.1 with two spaces before the date. In the package checked, this text sits only in libcrypto, not in libssl. The file name of the library names only the major line: libssl.so.3 for every version from 3.0 to 3.6, libssl.so.4 from 4.0 on, libssl.so.1.1 for 1.1.x, and in the original libssl.so.1.0.0 for 1.0.x.
Checked on the package libopenssl3_3.0.22-r1_arm_cortex-a7_neon-vfpv4.ipk from the OpenWrt 24.10.8 package feed, 32-bit ARM, SHA-256 1ac68ea8fd17b168…, unpacked.
strings -a usr/lib/libcrypto.so.3 | grep -E "^OpenSSL [0-9]"Output
OpenSSL 3.0.22 25 Aug 2026strings -a usr/lib/libssl.so.3 | grep -E "^lib(ssl|crypto)\.so"Output
libcrypto.so.3
libssl.so.3curl -s https:/ / raw.githubusercontent.com/ openssl/ openssl/ OpenSSL_1_1_1w/ include/ openssl/ opensslv.h \
| grep "define OPENSSL_VERSION_TEXT"Output
# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1w 11 Sep 2023"How do I check this by hand?
- 1
Read the version:
strings -a libcrypto.so.* | grep -E "^OpenSSL [0-9]"in the unpacked file system,openssl versionon the device. If OpenSSL is statically linked into a program, there is no library of its own; then runstringson the program itself. - 2
Find every copy: besides the system library, some applications bring their own OpenSSL with a version of its own.
- 3
Establish the origin: Yocto, OpenWrt, Buildroot or a distribution. For Yocto, read the patches in the recipe; they fix CVEs without a new version number.
- 4
Query the NVD with
cpe:2.3:a:openssl:openssl:<version>and read OpenSSL's vulnerabilities page; it also lists the CVEs without an NVD configuration. For 3.1, 3.2 and 3.3, also read the vulnerabilities of the neighbouring lines. - 5
Check the preconditions: many vulnerabilities affect only CMS, PKCS#7, CMP, QUIC, DTLS or 32-bit platforms. Whether the firmware uses these parts decides whether they can be exploited.
- 6
Check the CISA KEV catalogue for actively exploited vulnerabilities.
Can this run automatically?
LegacyMind reads the libraries and packages with their versions from the image and matches each one against the public vulnerability sources, with the location in the image and a note on whether a vulnerability is actively exploited. If the image gives no evidence of a version, the field stays empty.
Questions
Which OpenSSL version has no known vulnerabilities?
As of 4 November 2026 the NVD and OpenSSL list no CVE for 3.5.9, 4.0.3 and 4.1.0. Nor for 3.4.8 and 3.6.5, but both lines have had no public support since October and November 2026.
Does OpenSSL 3.0 still get security fixes?
Not publicly any more; support ended on 7 September 2026. For the last public version, 3.0.22, OpenSSL reports six vulnerabilities, one of them High (CVE-2026-84782, DTLS). The fix, 3.0.23, only customers with a support contract get.
Can I move from 3.0 to 3.5 without relinking?
According to OpenSSL's release strategy, API and ABI stay compatible within the same major version; both lines use libssl.so.3. The move to 4.0 is a new major version with libssl.so.4.
How many CVEs does OpenSSL 1.1.1w have?
On 4 November 2026 the NVD lists 24, OpenSSL itself 31, 2 of them High. Public support ended on 11 September 2023; the fixes up to 1.1.1zj are only available with a support contract.
Which OpenSSL version does Yocto Scarthgap ship?
Yocto 5.0.21 ships 3.5.8 with 13 CVEs according to the NVD, one of them High according to OpenSSL. The scarthgap branch has been on 3.5.9 since 22 October 2026.
Is an OpenSSL vulnerability actively exploited?
The CISA catalogue of actively exploited vulnerabilities (catalogue version 2026.11.03, 1,767 entries) lists one OpenSSL vulnerability: Heartbleed, CVE-2014-0160, in 1.0.1 to 1.0.1f, added on 4 May 2022.
May I use the validated FIPS provider with a newer OpenSSL?
According to OpenSSL, yes: other releases may use a validated FIPS provider, for example OpenSSL 3.5 with the 3.0.9 provider. OpenSSL lists which CVEs affect a validated FIPS provider on a separate page about CVEs and FIPS.
Sources
- [1]OpenSSL: Vulnerabilities
- [2]OpenSSL: Release Strategy
- [3]OpenSSL: downloads and end of support per line
- [4]OpenSSL: Security Advisory of 29 September 2026
- [5]OpenSSL: 3.0 End of Life
- [6]OpenSSL: 1.1.1 End of Life
- [7]NVD: CVE-2026-31789
- [8]NIST NVD: CVE API 2.0
- [9]Yocto Project: Releases
- [10]CISA: Known Exploited Vulnerabilities Catalog