Knowledge · RTOS

ThreadX and NetX Duo vulnerabilities by version (formerly Azure RTOS)

ThreadX 6.4.0 from STM32Cube: four CVEs in the NVD, NetX Duo 6.4.0: 19, plus more without an NVD configuration.

Version 6.4.0 is what ST's current STM32Cube packages for U5, H5, WBA, N6 and H7 ship; ST has not taken over the fixes from 6.4.4. The project maintains only 6.5.x, without long-term branches or backports; the newest versions are ThreadX 6.5.2.202603 and NetX Duo 6.5.2.202603a.

As of 23 October 2026 · 9 min readYou make the conformity statement. This page and our reports provide technical findings as its basis.

At a glance
In STM32Cube packages
6.4.0
Not taken over by ST
fixes from 6.4.4
Also without NVD configuration
nine ThreadX and 19 NetX Duo CVEs
Newest ThreadX version
6.5.2.202603
Newest NetX Duo version
6.5.2.202603a

NVD, queried 23 October 2026

How many CVEs does the NVD list for my ThreadX and NetX Duo versions?

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 the components under two names: the current Eclipse Foundation one, cpe:2.3:a:eclipse:threadx and cpe:2.3:a:eclipse:threadx_netx_duo, and the older Microsoft one, cpe:2.3:o:microsoft:azure_rtos_threadx and cpe:2.3:o:microsoft:azure_rtos_netx_duo. The count is the union of both.

The number is a lower bound. The CVEs from the advisories of autumn 2026 have no NVD configuration yet; the next section counts them.

Version, release dateThreadX · NetX Duo according to the NVD (of which CVSS 9.0 or higher)
6.1.3, January 2021 (in X-CUBE-AZRTOS-H7 v1.0.0)ThreadX 6 (1) · NetX Duo 24 (7)
6.1.10, 3 February 2022 (in X-CUBE-AZRTOS-F4, -F7, -G0 v1.1.0)ThreadX 7 (1) · NetX Duo 24 (7)
6.1.12, 29 July 2022 (last 6.1)ThreadX 7 (1) · NetX Duo 24 (7)
6.2.0, 28 October 2022 (in X-CUBE-AZRTOS-G4, -L4, -L5, -WB, -WL v2.0.0)ThreadX 7 (1) · NetX Duo 24 (7)
6.2.1, 8 March 2023 (last 6.2)ThreadX 7 (1) · NetX Duo 24 (7)
6.3.0, 31 October 2023ThreadX 6 (0) · NetX Duo 20 (3)
6.4.0, 2 January 2024 (in the current STM32Cube packages)ThreadX 4 (0) · NetX Duo 19 (2)
6.4.5.202504, January 2026 (last 6.4)ThreadX 0 · NetX Duo 1 (0)
6.5.2.202603 and 6.5.2.202603a, October 2026 (newest)ThreadX 0 · NetX Duo 0
NetX Duo 6.4.0 in the NVD
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:a:eclipse:threadx_netx_duo:6.4.0&noRejected" | jq .totalResults
Output
19
ThreadX 6.4.0 in the NVD
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:a:eclipse:threadx:6.4.0&noRejected" | jq .totalResults
Output
4

Which vulnerabilities in 6.4.0 are the most severe?

The table shows the CVEs with CVSS 7.0 or higher that the NVD lists for NetX Duo 6.4.0 and ThreadX 6.4.0, with the version from which the NVD lists them as fixed. The other ten range from 5.3 to 6.5, mostly read flaws in NetX Duo's IP receive path and TLS, plus two ThreadX flaws in module handling and one in the OSEK layer.

Many sit in parts not every firmware builds. In NetX Duo, the HTTP server and client, DHCP and SNMP live in the addons folder, TLS in nx_secure.

CVE, CVSS according to the NVDWhat is affected, fixed in
CVE-2025-55086, 9.8NetX Duo, DHCPv6 client: unchecked index when reading the server DUID from a reply. Fixed in 6.4.4.
CVE-2025-55081, 9.1NetX Duo, TLS: _nx_secure_tls_process_clienthello() does not check the cipher suite and compression method lengths. Fixed in 6.4.4.
CVE-2025-0726, CVE-2025-0727, CVE-2025-0728, 7.5 eachNetX Duo, HTTP server: denial of service through crafted packets, a file left open on error and an integer underflow when writing large files. Fixed in 6.4.2.
CVE-2025-2258, CVE-2025-2259, CVE-2025-2260, 7.5 eachNetX Duo, HTTP server: the same kinds of flaw in further places. Fixed in 6.4.3.
CVE-2025-55085, 7.5NetX Duo, HTTP client: header fields of a server response without bounds check. Fixed in 6.4.4.
CVE-2025-55087, 7.5NetX Duo, SNMP: out-of-bounds read through crafted SNMPv3 security parameters. Fixed in 6.4.4.
CVE-2025-55094, 7.5NetX Duo, ICMPv6: _nx_icmpv6_validate_options() reads out of bounds. Fixed in 6.4.4.
CVE-2025-55102, 7.5NetX Duo, IPv6: a “Packet Too Big” with more than 15 source addresses takes the device down. Fixed in 6.4.5.202504.
CVE-2025-55080, 7.1ThreadX with memory protection: syscall parameters checked too weakly, arbitrary memory read and write. Fixed in 6.4.3.

Why does the NVD version query miss the autumn 2026 ThreadX vulnerabilities?

Between late September and mid-October 2026 the Eclipse Foundation as CNA published dozens of CVEs for ThreadX, NetX Duo, USBX, FileX and GUIX. On 23 October 2026 they are in the NVD without a CPE configuration, status “Awaiting Analysis” or “Deferred”. No version query finds them; ThreadX from 6.4.5 on therefore shows zero CVEs in the NVD.

By the version ranges in the project's advisories, nine of these CVEs affect ThreadX 6.4.0, all in the Module Manager (not reachable where the Module Manager is not used, according to the release notes), and 19 affect NetX Duo 6.4.0.

Seven further CVEs on the NetX Duo HTTP server and on FileX are configured by the NVD only under ST's package names, for example cpe:2.3:a:st:x-cube-azrtos-h7:3.3.0, not under NetX Duo. Asking for NetX Duo alone does not find them; CVE-2024-45064 (FileX) is 9.8 at the NVD.

These entries name exactly one version per package: X-CUBE-AZRTOS-F4, -F7 and -G0 1.1.0, X-CUBE-AZRTOS-G4, -L4, -L5, -WB and -WL 2.0.0, X-CUBE-AZRTOS-H7 3.3.0 and X-CUBE-AZRT-H7RS 1.0.0, seven CVEs each. For X-CUBE-AZRTOS-H7 3.5.0 the NVD counts zero under the package name, although it contains NetX Duo 6.4.0 with its 19 NVD CVEs.

The ST package X-CUBE-AZRTOS-H7 3.3.0 in the NVD
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?virtualMatchString=cpe:2.3:a:st:x-cube-azrtos-h7:3.3.0&noRejected" | jq .totalResults
Output
7

Which ThreadX version is in STM32Cube?

ST ships ThreadX and NetX Duo in its Cube packages. The current packages for U5, H5, WBA, N6, C0, WB and H7 contain 6.4.0 of January 2024, without the fixes from 6.4.1 to 6.5.2. The X-CUBE-AZRTOS packages for the other series are older. Read from tx_api.h and nx_api.h at the newest tag on GitHub:

Package, tag dateThreadX · NetX Duo
STM32CubeU5 v1.9.0, July 20266.4.0 · 6.4.0
STM32CubeH5 v1.7.0, July 20266.4.0 · 6.4.0
STM32CubeWBA v1.10.0, July 20266.4.0 · 6.4.0
STM32CubeN6 v1.4.1, August 20266.4.0 · 6.4.0
STM32CubeC0 v1.4.1, July 20266.4.0 · no NetX Duo in the package
STM32CubeWB v1.24.0, November 20256.4.0 · no NetX Duo in the package
X-CUBE-AZRTOS-H7 v3.5.0, February 20266.4.0 · 6.4.0
X-CUBE-AZRTOS-G4, -L4, -L5, -WB, -WL v2.0.0, 20236.2.0 · 6.2.0
X-CUBE-AZRTOS-F4, -F7, -G0 v1.1.0, 20226.1.10 · 6.1.10
STM32CubeG4 v1.6.3, STM32CubeWL v1.6.0, STM32CubeH7RS v1.3.0No ThreadX and no NetX Duo in the package. For G4 and WL there are the X-CUBE-AZRTOS packages above.
Versions in X-CUBE-AZRTOS-H7 v3.5.0
curl -s https://raw.githubusercontent.com/STMicroelectronics/x-cube-azrtos-h7/v3.5.0/Middlewares/ST/netxduo/common/inc/nx_api.h | grep -E "define NETXDUO_(MAJOR|MINOR|PATCH)_VERSION"

Output

#define NETXDUO_MAJOR_VERSION                    6
#define NETXDUO_MINOR_VERSION                    4
#define NETXDUO_PATCH_VERSION                    0

Has ST backported the fixes?

The newer Cube packages pull ThreadX and NetX Duo as submodules from ST's repositories stm32-mw-threadx and stm32-mw-netxduo. Their newest states are called v6.4.0_260327 and v6.4.0_260415. On 23 October 2026 there is nothing above 6.4.0 there.

The change list st_readme.txt names, since the move to 6.4.0, only a driver setting, a document on the security classification, a removed WiFi driver and the list of licensed chips. The source files of the functions named in the advisories for CVE-2025-55086, CVE-2025-55081 and CVE-2025-55094 are identical at ST and in Eclipse 6.4.0 (same Git hash) and differ from 6.5.2.202603a. The fixes from 6.4.4 are therefore missing from ST's newest state too.

The DHCPv6 client file at ST and at Eclipse
for r in STMicroelectronics/stm32-mw-netxduo@v6.4.0_260415 eclipse-threadx/netxduo@v6.4.0_rel eclipse-threadx/netxduo@v6.5.2.202603a_rel; do echo "$r $(gh api "repos/${r%@*}/contents/addons/dhcp/nxd_dhcpv6_client.c?ref=${r#*@}" -q .sha)"; done

Output

STMicroelectronics/stm32-mw-netxduo@v6.4.0_260415 e88bf5500a52822d6903a65dd32014415c399774
eclipse-threadx/netxduo@v6.4.0_rel e88bf5500a52822d6903a65dd32014415c399774
eclipse-threadx/netxduo@v6.5.2.202603a_rel a303075d04ca4a1b0b1c868d3183488edd05a7e8

Which ThreadX versions does the project maintain?

SECURITY.md in the ThreadX repository lists only 6.5.x as supported and says: “Eclipse ThreadX publishes a release every quarter. There are no long-term support branches or backports to older releases.” Critical fixes ship as hotfix releases, such as NetX Duo 6.5.2.202603a.

ComponentNewest version, as of 23 October 2026
ThreadX6.5.2.202603 of 2 October 2026
NetX Duo6.5.2.202603a of 13 October 2026 (hotfix with eight fixes)
FileX, USBX, GUIX, LevelX6.5.2.202603 of 2 October 2026
6.4.x and olderNo longer supported, no backports.

How do I move off 6.4.0, and what do I narrow down until then?

The way out of 6.4.0 runs through the Eclipse repositories. ThreadX 6.5.2.202603 ships ports for Cortex-M0, M3, M4, M7, M23, M33, M52, M55 and M85, for Cortex-M33 each for AC6, GNU and IAR.

Until the update is in the device, part of the exposure can be narrowed in the build. If you do not need IPv6, set NX_DISABLE_IPV6 in nx_user.h. The IPv6 code then drops out of the build, including _nx_icmpv6_validate_options() (CVE-2025-55094) and the “Packet Too Big” handling (CVE-2025-55102). In the template nx_user_sample.h the macro is commented out, so IPv6 is on.

Whether the DHCPv6 client, TLS server or HTTP server is linked at all shows in the ELF symbol table: _nx_dhcpv6_process_server_duid stands for CVE-2025-55086, _nx_secure_tls_process_clienthello for CVE-2025-55081. If the function is missing, the code is not in the image.

Where is the ThreadX version in my firmware?

In the source the version sits in common/inc/tx_api.h (THREADX_MAJOR_VERSION, THREADX_MINOR_VERSION, THREADX_PATCH_VERSION, from 6.4.x also THREADX_BUILD_VERSION) and for NetX Duo in common/inc/nx_api.h (NETXDUO_MAJOR_VERSION and so on).

A version string exists in the port file: _tx_version_id in ports/<CPU>/<toolchain>/inc/tx_port.h, for example “ThreadX Cortex-M4/GNU Version 6.4.0”, and for NetX Duo _nx_version_id in nx_port.h. No library code references this string. If the linker removes unused data (armlink by default, GNU ld with --gc-sections), it is missing from the build. Then function names such as _tx_thread_create or _nx_ip_create in the ELF symbol table show that the library is linked, and the version comes from the headers in the project.

How do I check this by hand?

  1. 1

    Read the version: strings -a firmware.elf | grep -E "ThreadX|NetX Duo"; in the project from tx_api.h and nx_api.h.

  2. 2

    Check which components are linked: arm-none-eabi-nm firmware.elf | grep -E "_tx_|_nx_|_fx_|_ux_".

  3. 3

    Look for the affected functions: arm-none-eabi-nm firmware.elf | grep -E "_nx_dhcpv6_process_server_duid|_nx_secure_tls_process_clienthello|_nx_icmpv6_validate_options".

  4. 4

    Query the NVD with both names, eclipse:threadx and microsoft:azure_rtos_threadx (likewise for NetX Duo), and for an ST package also with the package name, for example st:x-cube-azrtos-h7.

  5. 5

    Read the security advisories of the repositories eclipse-threadx/threadx and eclipse-threadx/netxduo against your version: they contain the CVEs still missing from the NVD.

  6. 6

    Check which parts you use: the Module Manager in ThreadX; HTTP server, DHCP, DNS, TLS or FTP in NetX Duo.

  7. 7

    Check the CISA KEV catalogue for actively exploited vulnerabilities.

Can this run automatically?

LegacyMind reads the RTOS, the network stack and other 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

Is Azure RTOS the same as Eclipse ThreadX?

Yes. Microsoft handed Azure RTOS over to the Eclipse Foundation; since 2024 it is called Eclipse ThreadX, and its repositories are under the MIT licence. In the NVD older CVEs are listed under Microsoft's names, newer ones under Eclipse's.

Which ThreadX version should I use?

The newest 6.5.2, as of 23 October 2026 ThreadX 6.5.2.202603 and NetX Duo 6.5.2.202603a. Older lines receive no fixes.

Is the ThreadX version from STM32Cube affected?

The current packages contain 6.4.0. For NetX Duo 6.4.0 the NVD lists 19 CVEs, plus 19 from the project's advisories that the NVD is still missing.

Which ThreadX version is in STM32CubeU5 and STM32CubeH5?

6.4.0, for ThreadX and NetX Duo, in STM32CubeU5 v1.9.0 and STM32CubeH5 v1.7.0 of July 2026. The source files for CVE-2025-55086, CVE-2025-55081 and CVE-2025-55094 are unchanged in them compared with Eclipse 6.4.0.

Can I switch off the NetX Duo vulnerabilities without updating?

Partly. With NX_DISABLE_IPV6 the IPv6 code drops out, including the parts behind CVE-2025-55094 and CVE-2025-55102. HTTP, DHCP, SNMP and TLS are only affected if they are in the image; the symbol table shows it. The fixes themselves exist only in 6.4.4 and newer.

Is a ThreadX vulnerability actively exploited?

As of 23 October 2026 no vulnerability in ThreadX, NetX Duo, FileX, USBX or GUIX is in the CISA catalogue of known exploited vulnerabilities (catalogue version 2026.10.23).

Sources

  1. [1]Eclipse ThreadX: SECURITY.md
  2. [2]Eclipse ThreadX: Security advisories
  3. [3]Eclipse ThreadX NetX Duo: Security advisories
  4. [4]NetX Duo: Release 6.5.2.202603a
  5. [5]ST: X-CUBE-AZRTOS-H7
  6. [6]NIST NVD: CVE API 2.0
  7. [7]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.