---
id: "CVE-2026-94023"
kind: "vulnerability"
aliases: ["CVE-2026-94023"]
title: "ThreadX: Module Manager lets a module delete kernel objects it does not own"
severity: "medium"
cvss: 6.9
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["embedded", "module-manager", "rtos", "runtime", "threadx"]
not_affected_if: ["no-module-manager", "single-trusted-module"]
published_at: "2026-10-20T16:17:17+00:00"
first_seen_at: "2026-10-23T21:57:20+00:00"
updated_at: "2026-10-25T03:40:25+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-94023", "first_seen_at": "2026-10-23T21:57:20+00:00"}]
---

# ThreadX: Module Manager lets a module delete kernel objects it does not own

ThreadX's Module Manager checks only whether an object lies outside a module's own memory before dispatching a delete call, so a module can destroy shared kernel objects such as queues, semaphores and mutexes that other modules or the application created. The sources do not describe a code-execution path, so the worst case is disruption of shared objects that other code depends on.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- unknown

## Fix

- unknown

## Timeline

- 2026-10-23T21:57:20+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-94023

## From the sources

A ThreadX module reaches a kernel object's delete service through the Module Manager's dispatch layer, which asked one question about the pointer: does the object lie outside the module's own code and data. That is the policy for *using* an object, and using an object a module does not own is supported and intended — `txm_module_object_pointer_get_extended` searches the system's created objects by name and hands back objects the application created and objects other modules created, so that a module can send to a shared queue, take a shared semaphore or get a shared mutex.



Destroying one of those is not sharing it. A module could name any object it had a pointer to and have the privileged dispatcher delete it.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
