Knowledge · RTOS

FreeRTOS vulnerabilities by version: kernel and FreeRTOS+TCP

FreeRTOS 10.3.1: nine CVEs in the NVD; the three with CVSS 9.8 are fixed since 10.4.3.

After that, vulnerabilities remain that affect only MPU ports and TrustZone; the last of them are fixed in 11.3.1. Two CVEs of 16 October 2026 for the Cortex-R82 port affect 11.3.0 and 11.3.1 and are fixed in 11.3.2.

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

At a glance
Shipped in STM32CubeF4
10.3.1
NVD CVEs for 10.3.1
9, 3 of them CVSS 9.8
CVSS 9.8 fixed since
10.4.3
Cortex-R82 port fixed in
11.3.2
CISA KEV entries
none

NVD, queried 23 October 2026

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

Counted are CVEs whose NVD configuration lists the version as vulnerable, queried on 23 October 2026 without rejected entries. The NVD lists the kernel as an operating system under cpe:2.3:o:amazon:freertos. Anyone who queries only cpe:2.3:a:amazon:freertos finds not a single CVE for 10.3.1. In brackets: which vendor package ships this version.

The number is a version range. From 10.4.3 on, every vulnerability counted affects only builds with an MPU port or TrustZone.

Kernel versionCVEs according to the NVD, of them CVSS 9.0 or higher
10.0.117 CVEs, 3 of them 9.0 or higher. Eleven of them from 2018 in the TCP/IP part FreeRTOS+TCP.
10.2.1 (STM32CubeF7 v1.17.4)9 CVEs, 3 of them 9.0 or higher: CVE-2021-31571, CVE-2021-31572, CVE-2021-32020.
10.3.1 (STM32CubeF4 v1.28.3, STM32CubeH7 at tag v1.13.0)9 CVEs, 3 of them 9.0 or higher. The same as for 10.2.1.
10.4.36 CVEs, none 9.0 or higher. Highest: CVE-2026-77234, 8.8 (CNA).
10.4.65 CVEs, none 9.0 or higher.
10.5.1 (ESP-IDF v5.2 to v6.1, its own SMP variant)5 CVEs, none 9.0 or higher.
10.6.2 (STM32CubeWB v1.24.0, STM32CubeH7 on master)4 CVEs, none 9.0 or higher.
11.1.0 (NXP MCUXpresso SDK 25.12.00, FreeRTOS LTS 202406.05)4 CVEs, none 9.0 or higher.
11.2.0 (NXP MCUXpresso SDK 26.06.00-LTS and 26.09.00)4 CVEs, none 9.0 or higher.
11.3.04 CVEs in the NVD. In addition, according to the CNA, CVE-2026-109587 and CVE-2026-109588.
11.3.1 (FreeRTOS LTS 202604.01)None in the NVD. According to the CNA, CVE-2026-109587 and CVE-2026-109588, only in the Cortex-R82 port.
11.3.2, 16 October 2026None.

Is FreeRTOS before 10.4.3 affected?

Two integer overflows in the queue and the stream buffer and a missing bounds check in the heap, all with CVSS 9.8 and all fixed in version 10.4.3 of 14 December 2020. They sit in queue, stream buffer and heap and do not depend on the port. The change log names no CVE number. It says “Changes to improve robustness and consistency for buffer allocation in the heap, queue and stream buffer”. Anyone who reads only the change log can easily miss them.

CVEAffected according to NVD, CVSS, fix
CVE-2021-31571Integer overflow in queue.c when a queue is created. Before 10.4.3, 9.8. Fix 10.4.3.
CVE-2021-31572Integer overflow in stream_buffer.c. Before 10.4.3, 9.8. Fix 10.4.3.
CVE-2021-32020Missing bounds check in the heap. Before 10.4.3, 9.8. Fix 10.4.3.

Does a vulnerability in the MPU or TrustZone port affect me?

These vulnerabilities affect only builds with an MPU port, such as ARM_CM4_MPU or an ARMv8-M port with configENABLE_MPU set to 1, or with the secure side of TrustZone. A build without an MPU port does not have this attack surface. It also has no separation between privileged and unprivileged tasks. Scores marked (CNA) come from Amazon as the CNA, because the NVD has not scored them itself.

CVEAffected, CVSS, fix
CVE-2021-43997Code outside the kernel can call xPortRaisePrivilege, ARMv7-M MPU ports and ARMv8-M with MPU. According to the NVD 10.2.0 to 10.4.5, 7.8. According to the description fixed in V10.5.0 and V10.4.3-LTS Patch 3.
CVE-2024-28115Privilege escalation through return oriented programming on ARMv7-M and ARMv8-M MPU ports. Up to 10.6.1, 7.8. Fix 10.6.2 with a new MPU wrapper.
CVE-2026-77234An unprivileged task can execute code in the kernel, MPU ports. 7.0.0 to before 11.3.1, 8.8 (CNA). Fix 11.3.1.
CVE-2026-77237xQueueAddToSet reads kernel memory, MPU ports with configUSE_QUEUE_SETS set to 1. 7.4.0 to before 11.3.1, 8.4. Fix 11.3.1.
CVE-2026-77235, -77236Secure context under TrustZone: missing privilege check on free, missing size check on allocation. 10.2.0 to before 11.3.1, 7.3 each (CNA). Fix 11.3.1.
CVE-2026-109587, -109588Cortex-R82 MPU port (Armv8-R AArch64): an unprivileged task reads and writes kernel memory. 11.3.0 and 11.3.1, 8.8 each (CNA). Fix 11.3.2. Not yet mapped to a version in the NVD on 23 October 2026.

Which FreeRTOS version do STM32Cube, the NXP SDK and ESP-IDF ship?

Many devices get FreeRTOS through the chip vendor's SDK. Read from task.h at the published tags, as of 23 October 2026. None of the chip vendor packages ships 11.3.1 or newer. STM32CubeF4 and STM32CubeF7 ship versions with the three CVSS 9.8 vulnerabilities.

Two traps when reading the version. FreeRTOS 10.2.1 carries the text “V10.2.0” in the macro tskKERNEL_VERSION_NUMBER, already in Amazon's original; the file header says 10.2.1. And STM32CubeH7 v1.13.0: the release notes and the SBOM name FreeRTOS V10.6.2, but the submodule at Git tag v1.13.0 points to V10.3.1. Only the master branch points to V10.6.2, since 27 March 2026.

Package, releaseFreeRTOS kernel
STM32CubeF4 v1.28.3V10.3.1
STM32CubeF7 v1.17.4V10.2.1 (the macro says V10.2.0)
STM32CubeH7 v1.13.0V10.3.1 at the Git tag, V10.6.2 on master and according to the release notes
STM32CubeWB v1.24.0V10.6.2
STM32CubeU5 v1.9.0, STM32CubeH5 v1.7.0No FreeRTOS in the package, ThreadX 6.4.0 instead
NXP MCUXpresso SDK 26.09.00 and 26.06.00-LTSV11.2.0
NXP MCUXpresso SDK 25.12.00V11.1.0
ESP-IDF v5.2.8 to v6.1“V10.5.1 (ESP-IDF SMP modified)”, a variant of Espressif's own
FreeRTOS LTS 202604.01V11.3.1, with FreeRTOS+TCP V4.4.1
FreeRTOS LTS 202406.05V11.1.0, with FreeRTOS+TCP V4.2.6
Version in the original tag V10.2.1
curl -s https://raw.githubusercontent.com/FreeRTOS/FreeRTOS-Kernel/V10.2.1/FreeRTOS/Source/include/task.h | grep -n -E "tskKERNEL_VERSION_NUMBER|FreeRTOS Kernel V"

Output

2: * FreeRTOS Kernel V10.2.1
46:#define tskKERNEL_VERSION_NUMBER "V10.2.0"

Which CVEs does FreeRTOS+TCP have?

The TCP/IP stack has a version number of its own, separate from the kernel, and CVEs of its own. On 29 April 2026, 4.4.1 and 4.2.6 came out with the same fixes, on 16 October 2026 only 4.4.2. Seven of the eleven vulnerabilities since 2025 sit in the IPv6 part: router advertisement, DHCPv6, ICMPv6, UDP over IPv6.

VersionCVEs according to the NVD, highest, plus per CNA
FreeRTOS up to V10.0.1 with FreeRTOS+TCP13 vulnerabilities from 2018 (CVE-2018-16522 to -16528, -16598 to -16603), for example when parsing TCP options and ICMP, DNS and NBNS packets. Eleven of them in FreeRTOS up to V10.0.1, two only in AWS FreeRTOS. CVSS 5.9 to 8.1.
4.0.0 to 4.1.09 CVEs. Highest: CVE-2024-38373, over-read when parsing DNS, 8.1 (fix 4.1.1), CVE-2026-7424 and CVE-2026-7426, 8.1 each (CNA).
4.1.1 to 4.2.5, 4.3.0 to 4.3.38 CVEs (4.2.5: three of them already fixed, see 4.2.6). Highest: CVE-2026-7424, underflow in the DHCPv6 parser, and CVE-2026-7426, heap overflow through the prefix length in a router advertisement, 8.1 each (CNA).
4.2.6 (FreeRTOS LTS 202406.05)3 CVEs in the NVD: CVE-2025-11616, -11617, -11618 (IPv6, ICMPv6, UDP over IPv6), 4.3 to 5.4 (CNA). The NVD and the advisory name 4.0.0 to 4.3.3. The 4.2.5 changelog (10 October 2025) contains the same three fixes: in the code of 4.2.5 and 4.2.6 they are fixed.
4.3.4, 4.4.05 CVEs: CVE-2026-7422 to -7426. Fix 4.4.1 and 4.2.6.
4.4.1 (FreeRTOS LTS 202604.01)None in the NVD. According to the project's advisories CVE-2026-102551 (router advertisement, 7.7) and CVE-2026-102552 (DNS replies, 5.9), both up to 4.4.1, fix 4.4.2.
4.4.2, 16 October 2026None.

Where is the FreeRTOS version in my firmware?

In the source code the kernel version is in task.h, macro tskKERNEL_VERSION_NUMBER, and in the file header. In the build it is wherever the compiler writes it: in the path of the source files, in the debug information or as a string the application prints. In the public Keil example it is in the path.

  1. 1

    Determine the version

    task.h in the project or, in the build, the path, the debug information or a string. For 10.2.1 read the file header, the macro says 10.2.0.

  2. 2

    Establish the origin

    Amazon's original, or a copy from STM32Cube, the NXP SDK or ESP-IDF. For STM32Cube from GitHub, check the submodule state, not only the release notes.

  3. 3

    Determine the port

    does the build use an MPU port, the secure side of TrustZone or the Cortex-R82 port? Every kernel vulnerability from 10.4.3 on depends on it.

  4. 4

    Check FreeRTOS+TCP separately

    its own version, its own CVEs.

  5. 5

    Query the NVD

    virtualMatchString=cpe:2.3:o:amazon:freertos:<version> for the kernel, cpe:2.3:a:amazon:freertos-plus-tcp:<version> for the stack. Also read the security advisories on GitHub, which name new vulnerabilities before the NVD does.

Path with version in the AXF (Keil, Apollo3)
strings -a -t x ble_freertos_amota.axf | grep -m1 -F "FreeRTOSv10.1.1"

Output

  1fe9c ../../../../../third_party/FreeRTOSv10.1.1/Source/timers.c
Linked kernel functions
nm ble_freertos_amota.axf | grep -E "xQueueGenericCreate|pvPortMalloc"

Output

0001bfb5T pvPortMalloc0001fe85T xQueueGenericCreate

What can I do?

  1. 1

    Kernel before 10.4.3: move to a current version. The three CVSS 9.8 vulnerabilities do not depend on the port.

  2. 2

    Kernel with an MPU port or TrustZone: move to 11.3.1, with the Cortex-R82 port to 11.3.2. If you need an LTS release: FreeRTOS LTS 202604.01 contains kernel V11.3.1.

  3. 3

    Without an MPU port: configENABLE_MPU defaults to 0 in FreeRTOS.h. You select the ARMv7-M MPU ports through the port directory, for example portable/GCC/ARM_CM4_MPU. A build that compiles none of them does not carry the MPU vulnerabilities in the image.

  4. 4

    Queue sets: CVE-2026-77237 requires configUSE_QUEUE_SETS set to 1. The default in FreeRTOS.h is 0.

  5. 5

    FreeRTOS+TCP: move to 4.4.2. Until then, the options in FreeRTOSIPConfig.h decide: ipconfigUSE_IPv6 and ipconfigUSE_RA default to on, ipconfigUSE_DHCPv6, ipconfigUSE_LLMNR, ipconfigUSE_MDNS and ipconfigSUPPORT_OUTGOING_PINGS to off. CVE-2026-7424 requires DHCPv6, CVE-2026-7423 outgoing pings.

  6. 6

    Check the CISA KEV catalogue for actively exploited vulnerabilities.

Can this run automatically?

LegacyMind detects FreeRTOS in the ELF, AXF or OUT of your build, reads the version from Keil and GNU Arm builds and matches it against the public vulnerability sources, with a note on whether a vulnerability is actively exploited. It also checks whether the build uses the MPU port and creates tasks without privileges.

Questions

Which FreeRTOS version is free of known kernel vulnerabilities?

As of 23 October 2026 it is 11.3.2 of 16 October 2026. For 11.3.1 the NVD lists no CVE, but the project names two vulnerabilities in the Cortex-R82 port. For builds without an MPU port and without TrustZone, the vulnerabilities before 10.4.3 are the ones that matter.

Which FreeRTOS version is in STM32CubeF4 and STM32CubeH7?

STM32CubeF4 v1.28.3 ships V10.3.1. For STM32CubeH7 v1.13.0 the submodule at the Git tag points to V10.3.1, while the release notes and the master branch name V10.6.2. For 10.3.1 the NVD lists nine CVEs, three of them with CVSS 9.8.

Is the FreeRTOS in ESP-IDF affected?

ESP-IDF v5.2 to v6.1 ships its own SMP variant, which reports itself as “V10.5.1 (ESP-IDF SMP modified)”. For 10.5.1 the NVD lists five CVEs, all for MPU ports or TrustZone. Whether your port is one of them is in its configuration.

Is a FreeRTOS vulnerability actively exploited?

As of 23 October 2026, no FreeRTOS vulnerability is in the CISA catalogue of actively exploited vulnerabilities (catalogue version 2026.10.23, 1,756 entries).

Why does my NVD query for FreeRTOS return nothing?

Because the NVD lists the kernel under cpe:2.3:o:amazon:freertos, as an operating system. With cpe:2.3:a:amazon:freertos the version query finds no CVE for 10.3.1. New vulnerabilities also first appear in the NVD without a version mapping; those of 16 October 2026 still did on 23 October 2026.

Is my device affected if it uses an old FreeRTOS version?

It is in the version range. Whether a vulnerability can be exploited depends on whether the affected function is built and whether an attacker can reach it, for example over the network or through an unprivileged task.

Does FreeRTOS+TCP count as a component of its own in the SBOM?

Yes. It has its own version and its own CVEs, and it belongs in the bill of materials with both.

Sources

  1. [1]NVD: CVE-2021-31571
  2. [2]NVD: CVE-2024-28115
  3. [3]NVD: CVE-2026-77234
  4. [4]CVE.org: CVE-2026-109587
  5. [5]FreeRTOS kernel: security advisories
  6. [6]FreeRTOS-Plus-TCP: security advisories
  7. [7]FreeRTOS LTS: manifest.yml, release 202604.01
  8. [8]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.