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 version | CVEs according to the NVD, of them CVSS 9.0 or higher |
|---|---|
| 10.0.1 | 17 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.3 | 6 CVEs, none 9.0 or higher. Highest: CVE-2026-77234, 8.8 (CNA). |
| 10.4.6 | 5 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.0 | 4 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 2026 | None. |
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.
| CVE | Affected according to NVD, CVSS, fix |
|---|---|
| CVE-2021-31571 | Integer overflow in queue.c when a queue is created. Before 10.4.3, 9.8. Fix 10.4.3. |
| CVE-2021-31572 | Integer overflow in stream_buffer.c. Before 10.4.3, 9.8. Fix 10.4.3. |
| CVE-2021-32020 | Missing 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.
| CVE | Affected, CVSS, fix |
|---|---|
| CVE-2021-43997 | Code 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-28115 | Privilege 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-77234 | An 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-77237 | xQueueAddToSet 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, -77236 | Secure 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, -109588 | Cortex-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, release | FreeRTOS kernel |
|---|---|
| STM32CubeF4 v1.28.3 | V10.3.1 |
| STM32CubeF7 v1.17.4 | V10.2.1 (the macro says V10.2.0) |
| STM32CubeH7 v1.13.0 | V10.3.1 at the Git tag, V10.6.2 on master and according to the release notes |
| STM32CubeWB v1.24.0 | V10.6.2 |
| STM32CubeU5 v1.9.0, STM32CubeH5 v1.7.0 | No FreeRTOS in the package, ThreadX 6.4.0 instead |
| NXP MCUXpresso SDK 26.09.00 and 26.06.00-LTS | V11.2.0 |
| NXP MCUXpresso SDK 25.12.00 | V11.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.01 | V11.3.1, with FreeRTOS+TCP V4.4.1 |
| FreeRTOS LTS 202406.05 | V11.1.0, with FreeRTOS+TCP V4.2.6 |
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.
| Version | CVEs according to the NVD, highest, plus per CNA |
|---|---|
| FreeRTOS up to V10.0.1 with FreeRTOS+TCP | 13 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.0 | 9 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.3 | 8 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.0 | 5 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 2026 | None. |
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
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
- 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
Check FreeRTOS+TCP separately
its own version, its own CVEs.
- 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.
strings -a -t x ble_freertos_amota.axf | grep -m1 -F "FreeRTOSv10.1.1"Output
1fe9c ../../../../../third_party/FreeRTOSv10.1.1/Source/timers.cnm ble_freertos_amota.axf | grep -E "xQueueGenericCreate|pvPortMalloc"Output
0001bfb5T pvPortMalloc0001fe85T xQueueGenericCreateWhat can I do?
- 1
Kernel before 10.4.3: move to a current version. The three CVSS 9.8 vulnerabilities do not depend on the port.
- 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
Without an MPU port:
configENABLE_MPUdefaults to 0 in FreeRTOS.h. You select the ARMv7-M MPU ports through the port directory, for exampleportable/GCC/ARM_CM4_MPU. A build that compiles none of them does not carry the MPU vulnerabilities in the image. - 4
Queue sets: CVE-2026-77237 requires
configUSE_QUEUE_SETSset to 1. The default in FreeRTOS.h is 0. - 5
FreeRTOS+TCP: move to 4.4.2. Until then, the options in FreeRTOSIPConfig.h decide:
ipconfigUSE_IPv6andipconfigUSE_RAdefault to on,ipconfigUSE_DHCPv6,ipconfigUSE_LLMNR,ipconfigUSE_MDNSandipconfigSUPPORT_OUTGOING_PINGSto off. CVE-2026-7424 requires DHCPv6, CVE-2026-7423 outgoing pings. - 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.