Knowledge · Embedded Linux

OpenSSL vulnerabilities by version: 1.0.2 to 4.1

OpenSSL 3.0.19 from Yocto Kirkstone: 27 CVEs in the NVD, and 3.0 has had no public fixes since 7 September 2026.

In 2026 OpenSSL published 63 CVEs, in 2025 six. For 3.1, 3.2 and 3.3 OpenSSL no longer enters version ranges after the end of support, which is why the NVD counts almost nothing there.

Data queried 4 November 2026 · Page updated 4 November 2026 · 10 min readYou make the conformity statement. This page and our reports provide technical findings as its basis.

At a glance
Newest version
4.1.0, 23 Oct 2026
Supported LTS
3.5, until 8 Apr 2030
NVD CVEs for 3.0.19 (Kirkstone)
27, 3 at 9.0 or higher
OpenSSL CVEs in 2026
63 (2025: 6)
CISA KEV entries
only CVE-2014-0160

NVD and OpenSSL, queried 4 November 2026

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.

VersionReleasedShipped inCVEs according to the NVD, of them CVSS 9.0 or higherAccording to OpenSSL, of them High
4.1.023 Oct 2026newest versionnonenone
4.0.329 Sep 2026Yocto 6.1nonenone
3.6.529 Sep 2026Buildroot 2026.08.1; support ended 1 Nov 2026nonenone
3.6.27 Apr 2026Buildroot 2026.02.339, 3 of them41, 2 of them
3.5.929 Sep 2026OpenWrt 25.12.6, Buildroot 2025.02.19nonenone
3.5.825 Aug 2026Yocto 5.0.21 and 6.0.413, none 9.0 or higher13, 1 of them
3.5.67 Apr 2026Yocto 5.3.437, 3 of them38, 2 of them
3.4.829 Sep 2026last 3.4; support ended 22 Oct 2026nonenone
3.4.21 Jul 2025Yocto 5.2.451, 4 of them54, 3 of them
3.3.77 Apr 2026last 3.3nonenone, see below
3.2.630 Sep 2025last 3.21none, see below
3.1.811 Feb 2025last 3.11none, see below
3.0.2225 Aug 2026last public 3.06, none 9.0 or higher6, 1 of them
3.0.219 Jun 2026OpenWrt 24.10.811, 1 of them11, 1 of them
3.0.1927 Jan 2026Yocto 4.0.3527, 3 of them27, 2 of them
3.0.1611 Feb 2025OpenWrt 23.05.635, 3 of them37, 3 of them
3.0.87 Feb 202348, 3 of them57, 3 of them
1.1.1w11 Sep 2023last public 1.1.124, none 9.0 or higher31, 2 of them
1.0.2u20 Dec 2019last public 1.0.235, none 9.0 or higher40, 5 of them
OpenSSL 3.0.19 in the NVD

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 .totalResults
Output
28

Why 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 / OpenSSLWhat, precondition, fixed in
CVE-2026-31789, 9.8 (NVD) / LowHeap 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) / ModerateCMS 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) / LowSender 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) / LowChaCha20-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) / HighDTLS 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) / HighUse-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) / HighStack 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.

LinePublic support, last version
4.1until 23 Nov 2027, 4.1.0 of 23 Oct 2026
4.0until 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.6ended on 1 Nov 2026, last 3.6.5
3.4ended on 22 Oct 2026, last 3.4.8
3.3ended on 9 Apr 2026, last 3.3.7
3.2ended on 23 Nov 2025, last 3.2.6
3.1ended 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.2last 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, releaseOpenSSL, 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.63.5.9 as a package, none
OpenWrt 24.10.83.0.21 at the tag (11), 3.0.22 in the package feed (6)
OpenWrt 23.05.63.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.13.6.5, none; the 3.6 line has had no support since 1 Nov 2026
Buildroot 2026.02.33.6.2, 39, 3 of them 9.0 or higher
The OpenSSL recipe in Yocto 5.0.21
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_
Output
openssl_3.5.8.bb

Where 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.

Version text in libcrypto (OpenWrt, ARM, 32-bit)
strings -a usr/lib/libcrypto.so.3 | grep -E "^OpenSSL [0-9]"

Output

OpenSSL 3.0.22 25 Aug 2026
Library names in libssl
strings -a usr/lib/libssl.so.3 | grep -E "^lib(ssl|crypto)\.so"

Output

libcrypto.so.3
libssl.so.3
The version text of 1.1.1w in the source
curl -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. 1

    Read the version: strings -a libcrypto.so.* | grep -E "^OpenSSL [0-9]" in the unpacked file system, openssl version on the device. If OpenSSL is statically linked into a program, there is no library of its own; then run strings on the program itself.

  2. 2

    Find every copy: besides the system library, some applications bring their own OpenSSL with a version of its own.

  3. 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. 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. 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. 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. [1]OpenSSL: Vulnerabilities
  2. [2]OpenSSL: Release Strategy
  3. [3]OpenSSL: downloads and end of support per line
  4. [4]OpenSSL: Security Advisory of 29 September 2026
  5. [5]OpenSSL: 3.0 End of Life
  6. [6]OpenSSL: 1.1.1 End of Life
  7. [7]NVD: CVE-2026-31789
  8. [8]NIST NVD: CVE API 2.0
  9. [9]Yocto Project: Releases
  10. [10]CISA: Known Exploited Vulnerabilities Catalog

Check your own image

Upload one firmware image, an AXF or a supplier SBOM in your own LegacyMind account. Report and SBOM within three working days, NDA on request. The app and the reports are in German; questions in English are welcome.