Knowledge · RTOS

Zephyr vulnerabilities by version: LTS, patch releases and the NVD

Zephyr 4.4.2: 26 CVEs in the NVD; according to the project the fix for all 26 is already in the release.

For patch releases the NVD count is too high: the NVD counts many vulnerabilities up to before 4.5.0, although Zephyr backports the fixes into its maintained branches. At the same time 124 of the 308 CVEs of the Zephyr CNA are missing from every version query, because they have no configuration in the NVD yet.

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

At a glance
2.7.6, LTS end of life
92 CVEs
3.7.2, current LTS
57 CVEs
Zephyr 4.4.0
60 CVEs
Zephyr 4.4.2
26 CVEs
Newest release
4.5.0 of 28 October 2026

NVD, queried 23 October 2026; release: GitHub

How many CVEs does the NVD list for my Zephyr version?

Counted are CVEs whose NVD configuration lists the version as vulnerable, queried on 23 October 2026 through the NVD API, rejected entries excluded. The NVD lists Zephyr under cpe:2.3:o:zephyrproject:zephyr; the older form with a: is superseded in the CPE dictionary and returned no hit. Two hits that concern release candidates only are excluded.

The CVSS score is the NVD's, otherwise the Zephyr CNA's. The NVD scores higher: CVE-2026-10666 (parse_ipv4) is 9.8 at the NVD and 8.1 at Zephyr.

Version, release dateCVEs according to the NVD, of which CVSS 9.0 or higher
1.14.0, 16 April 2019 (LTS 1)105 CVEs, of which 20 at 9.0 or higher
2.7.0, 17 October 2021 (LTS 2)94 CVEs, of which 15 at 9.0 or higher
2.7.6, 1 March 2024 (last LTS 2)92 CVEs, of which 15 at 9.0 or higher
3.7.0, 26 July 2024 (LTS 3)64 CVEs, of which 4 at 9.0 or higher
3.7.2, 31 March 2026 (current LTS 3)57 CVEs, of which 4 at 9.0 or higher
4.3.1, 23 June 202651 CVEs, of which 1 at 9.0 or higher
4.4.0, 14 April 202660 CVEs, of which 1 at 9.0 or higher
4.4.2, 7 August 2026 (newest of the 4.4 line)26 CVEs, none at 9.0 or higher; according to the project the fixes are backported into 4.4.2
4.5.0, 28 October 2026 (newest)0 matches (NVD query 1 November 2026). Not an all-clear: vulnerabilities in 4.5.0 count only once the NVD has configured their CVEs
Zephyr 3.7.2 in the NVD
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:o:zephyrproject:zephyr:3.7.2&noRejected" | jq .totalResults
Output
57
Zephyr 4.4.2 in the NVD
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:o:zephyrproject:zephyr:4.4.2&noRejected" | jq .totalResults
Output
26

Why does the NVD count too many CVEs for patch releases?

Zephyr fixes a vulnerability in the main branch and backports the fix into the maintained branches, in 2026 to v4.4, v4.3 and v3.7. The NVD, however, usually configures the CVE with a range up to before the next major version, for example “from 2.5.0, before 4.5.0”. Every patch release of the line is then counted, even when the fix is already in it.

Checked on CVE-2026-10634 (use-after-free in net_tcp_foreach()): the NVD lists the range up to before 4.5.0. The backport (pull request 107289, merged on 22 April 2026) is contained in 4.4.2 according to GitHub, not in 4.4.0. The NVD still counts this CVE for 4.4.2.

For 4.4.2 this holds for all 26 CVEs: for each one the project's list names a backport to v4.4, and according to GitHub each of these backports is contained in 4.4.2.

3.7.2 looks different. Of its 57 CVEs, the fix for nine is already contained in 3.7.2. For 37 it sits in the v3.7 branch but was merged only after 3.7.2; 36 of them are in the release candidate 3.7.3-rc1 of 6 August 2026. For eleven the list names no backport to 3.7.

Is the backport contained in 4.4.2?
gh api repos/zephyrproject-rtos/zephyr/compare/v4.4.2...168295f5a16d -q .status
Output
behind

Which four CVEs at 9.0 or higher does Zephyr 3.7.2 have?

All four concern the network stack. Two are already fixed in 3.7.2, two only in the v3.7 branch afterwards.

CVE, CVSSWhat, condition, state in 3.7.2
CVE-2026-10666, 9.8Stack overflow in parse_ipv4() on addresses of the form “a.b.c.d:port”, reachable through getaddrinfo and the DNS configuration. Open in 3.7.2; the fix is in 3.7.3-rc1.
CVE-2026-1678, 9.8dns_unpack_name() writes past the buffer on a crafted DNS response. Only with CONFIG_DNS_RESOLVER. Fixed in 3.7.2.
CVE-2026-5067, 9.8 (Zephyr's score)HTTP server: a Sec-WebSocket-Key without NUL termination corrupts the stack during the WebSocket upgrade. Only with CONFIG_HTTP_SERVER_WEBSOCKET. Open in 3.7.2; the fix is in 3.7.3-rc1.
CVE-2025-1675, 9.1dns_copy_qname() copies a field from the packet without checking the length of the source buffer. Fixed in 3.7.2 (backport of 4 December 2024).

Which Zephyr version is in the nRF Connect SDK?

Nordic's nRF Connect SDK pulls Zephyr from its own repository sdk-zephyr, pinned in west.yml. In every version checked up to 3.3 that is a state ending in .99. According to Zephyr's release process, x.y.99 marks the main branch after work on the next minor version has started. Such a state is not a Zephyr release; the NVD count of the neighbouring version is only a starting point for it. Since nRF Connect SDK 3.4.0 a release is pinned there.

nRF Connect SDK, release dateZephyr version in sdk-zephyr
3.4.1, 17 September 20264.4.2 (NVD: 26 CVEs)
3.4.0, 1 July 20264.4.0 (NVD: 60 CVEs)
3.3.4, 3 August 20264.3.99
3.2.4, 11 March 20264.2.99
3.1.1, 17 September 20254.1.99
3.0.2, 1 July 20254.0.99
2.9.2, 27 May 20253.7.99
2.8.0, 14 November 20243.7.99
2.7.0, 4 July 20243.6.99
2.6.5, 3 March 20263.5.99
Which Zephyr version nRF Connect SDK 3.3.4 pins
curl -s https://raw.githubusercontent.com/nrfconnect/sdk-nrf/v3.3.4/west.yml | grep -A2 "name: zephyr$"; curl -s https://raw.githubusercontent.com/nrfconnect/sdk-zephyr/ncs-v3.3.4/VERSION | head -3

Output

    - name: zephyr
      repo-path: sdk-zephyr
      revision: ncs-v3.3.4
VERSION_MAJOR = 4
VERSION_MINOR = 3
PATCHLEVEL = 99

Which Zephyr CVEs does the NVD version query miss?

On 23 October 2026 the Zephyr CNA has 308 CVEs in the NVD. 124 of them have no configuration yet (status such as “Awaiting Analysis”) and count for no version. The project's own list, “Vulnerabilities” in the Zephyr documentation, names the fix and the backports per branch for each CVE.

For a Zephyr version this means: read the project's list against your line. The NVD count alone is too high for patch releases and too low for new vulnerabilities.

Which Zephyr lines get fixes?

According to the release process, LTS releases are published every 2.5 to 3 years and maintained for about five years, with general bug fixes for the first two years and then security and stability fixes only. “Support for a given LTS release (LTS N) continues until the initial release of the LTS two versions ahead (LTS N+2).” Since 2026 releases come out in April and October.

LineAs of 1 November 2026
4.4Maintained. Newest version 4.4.2 of 7 August 2026.
4.5Current stable release. 4.5.0 of 28 October 2026.
3.7 LTSMaintained. Newest version 3.7.2 of 31 March 2026, 3.7.3 as a release candidate.
2.7 LTSEnd of life. Last release 2.7.6 of 1 March 2024.
1.14 LTSEnd of life.

Where is the Zephyr version in my firmware?

In the source tree the version sits in the file VERSION (VERSION_MAJOR, VERSION_MINOR, PATCHLEVEL). From it the build generates include/generated/zephyr/version.h with KERNEL_VERSION_STRING and BUILD_VERSION; BUILD_VERSION is the output of git describe, so “v4.4.2” or a form with a commit hash.

In the build the version appears in the boot banner, which kernel/banner.c prints as one contiguous string: “*** Booting Zephyr OS build v4.4.2 ***”. The banner is on by default (CONFIG_BOOT_BANNER=y); a manufacturer can turn it off or change the text CONFIG_BOOT_BANNER_STRING. sys_kernel_version_get(), by contrast, returns a number that strings does not find.

The banner in the 4.4.2 source
curl -s https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/v4.4.2/kernel/banner.c | grep "Booting\|CONFIG_BOOT_BANNER_STRING"

Output

	printk("*** " CONFIG_BOOT_BANNER_STRING " " BANNER_VERSION BANNER_POSTFIX " ***\n");

How do I check this by hand?

  1. 1

    Read the version: strings -a zephyr.elf | grep "Booting Zephyr"; in the project from VERSION or version.h.

  2. 2

    Map the line: 4.5, 4.4 and the 3.7 LTS line are maintained.

  3. 3

    Query the NVD with cpe:2.3:o:zephyrproject:zephyr:<version>.

  4. 4

    Read the project's “Vulnerabilities” list against your line: it names backports the NVD does not reflect and CVEs still without an NVD configuration.

  5. 5

    Check the configuration: many vulnerabilities concern the network stack, Bluetooth or the HTTP server and require the subsystem to be in the build (prj.conf, .config). For the critical CVEs in 3.7.2 these are, for example, CONFIG_DNS_RESOLVER and CONFIG_HTTP_SERVER_WEBSOCKET.

  6. 6

    For the nRF Connect SDK, read the Zephyr version from west.yml and from the VERSION file in sdk-zephyr.

  7. 7

    Check the CISA KEV catalogue for actively exploited vulnerabilities.

Can this run automatically?

LegacyMind reads the RTOS and the linked libraries with their versions from the build and matches each against the vulnerability sources, with the place in the build where it was read. Where the binary proves no version, the field stays empty.

Questions

Which Zephyr version should I use?

The newest version of a maintained line, as of 1 November 2026 that is 4.5.0, 4.4.2 in the 4.4 line, or 3.7.2 for LTS. For 3.7, 3.7.3 is available as a release candidate.

Does Zephyr 2.7 LTS still get security fixes?

No. The 2.7 LTS line is end of life; 2.7.6 of 1 March 2024 was its last release. The NVD lists 92 CVEs for it on 23 October 2026.

Is a Zephyr vulnerability actively exploited?

As of 23 October 2026 no Zephyr vulnerability is in the CISA catalogue of known exploited vulnerabilities (catalogue version 2026.10.23).

Does this apply to the nRF Connect SDK?

The nRF Connect SDK ships its own snapshot of Zephyr. Version 3.4.1 pins Zephyr 4.4.2, 3.3.4 a state 4.3.99, that is between 4.3 and 4.4. What matters is the Zephyr version in it and which fixes Nordic has taken over; the NVD count of that Zephyr version is only a starting point.

Is Zephyr 3.7.2 affected by CVE-2026-10666?

Yes. The fix sits in the v3.7 branch, was merged on 19 May 2026 and is in the release candidate 3.7.3-rc1, not in 3.7.2. It is contained in 4.4.2.

Sources

  1. [1]Zephyr: Release process
  2. [2]Zephyr: Releases
  3. [3]Zephyr: Vulnerabilities
  4. [4]Zephyr: Release 4.4.2
  5. [5]NIST NVD: CVE API 2.0
  6. [6]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.