CVE-2026-102710 in ThreadXinfo

Summary

by MITRE • 09/29/2026

Attacker model / Preconditions: a loaded `TXM_MODULE_USER_MODE | TXM_MODULE_MEMORY_PROTECTION` module issuing kernel dispatch calls, on a build with `TX_ENABLE_EVENT_TRACE`.



A user-mode, memory-protected module can register an arbitrary function pointer as the global trace-full callback. The kernel calls it directly — no validation, no trampoline — from privileged kernel code when the trace buffer wraps.



An invalid pointer faults the kernel (DoS). A pointer into the module's own code was observed running with kernel privilege (`CONTROL.nPRIV = 0`), confirmed at runtime with a register capture inside that code.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Analysis

by VulDB Data Team • 09/29/2026

The vulnerability described constitutes a critical security flaw within the ThreadX real-time operating system, specifically affecting configurations where memory protection and event tracing are enabled concurrently. The core issue stems from an insufficient validation of function pointers passed by user-mode modules during the registration process for trace callbacks. In this architecture, when a module is loaded with both TXM_MODULE_USER_MODE and TXM_MODULE_MEMORY_PROTECTION flags, it operates under restricted privileges designed to isolate it from kernel space. However, the mechanism allowing such modules to register a global trace-full callback fails to enforce strict boundary checks on the target address of that function pointer. This oversight allows any arbitrary memory address provided by the user-mode application to be accepted and stored as the handler for buffer wrap events without verifying whether the address resides within valid kernel space or adheres to expected execution contexts.

From a technical perspective, this flaw represents a classic case of improper input validation leading to privilege escalation and potential denial of service. When the trace buffer reaches its capacity and wraps around, the kernel invokes the registered callback directly from privileged code paths. Because there is no trampoline layer or security check at invocation time, if an attacker supplies a pointer pointing into their own user-mode memory region, the CPU executes that code while holding kernel-level privileges. This effectively bypasses the hardware-enforced protection mechanisms intended to separate user and supervisor modes. The observation of CONTROL.nPRIV being set to zero during execution confirms that the processor switches to privileged mode to execute instructions located in what should be an unprivileged address space, thereby granting the attacker full control over the kernel environment for the duration of that callback's execution.

The operational impact of this vulnerability is severe and multifaceted. Firstly, it enables a direct denial-of-service condition where providing an invalid or non-executable pointer causes a fault in kernel mode, crashing the entire system since user-mode exceptions cannot be caught by the application itself when they occur at privilege level zero. Secondly, and more critically, if the attacker provides a valid executable address within their own module, they achieve arbitrary code execution with ring-0 privileges. This allows for complete compromise of the embedded system's integrity, confidentiality, and availability. An adversary could manipulate kernel data structures, disable security features, install persistent backdoors, or exfiltrate sensitive information processed by the operating system. Such capabilities are particularly dangerous in safety-critical applications like automotive systems, medical devices, or industrial control systems where ThreadX is commonly deployed.

This vulnerability aligns with CWE-94 Improper Control of Generation of Code (Code Injection) and CWE-200 Exposure of Sensitive Information to an Unauthorized Actor if the trace data contains sensitive payloads. In terms of the MITRE ATT&CK framework, this scenario maps directly to T1068 Exploitation for Privilege Escalation, as it leverages a flaw in system software to gain higher-level permissions than originally granted. It also relates to T1542 Pre-Attack Phase Activities involving System Firmware or OS configuration manipulation if the trace mechanism is used to persist malicious logic. The lack of validation during registration phase corresponds to CWE-923 Improper Restriction of Excessive Privileges, as the system grants kernel execution rights based on unverified user input.

Mitigation strategies must focus on enforcing strict memory boundary checks and privilege separation at multiple layers. At the API level, the function responsible for registering trace callbacks should validate that any provided pointer falls within a predefined range reserved exclusively for kernel code or explicitly whitelisted trusted modules. Implementing a trampoline mechanism is essential; instead of calling user-provided pointers directly from privileged context, the kernel should invoke an intermediate handler in kernel space that then safely transitions to user mode using proper exception handling mechanisms supported by the architecture. Additionally, enabling hardware-enforced execution protection (NX bit or similar) on user-mode memory regions can prevent code execution even if a valid pointer is supplied, although this depends on specific CPU capabilities and OS support for marking pages as non-executable while still allowing data access. Updating to patched versions of ThreadX that include these validation checks is the primary remediation path for existing deployments.

Responsible

Eclipse

Reservation

09/29/2026

Disclosure

09/29/2026

Moderation

accepted

EPSS

0.00096

KEV

no

Activities

very low

Sources

Do you want to use VulDB in your project?

Use the official API to access entries easily!