{"id":"CVE-2026-94202","kind":"vulnerability","aliases":["CVE-2026-94202"],"related":[],"title":"ThreadX Module Manager: block-pool create reads memory past module bounds","description":"The Module Manager's block-pool create dispatcher proved that two `ALIGN_TYPE` words of the extra-parameter array a memory-protected module supplies lay inside the module's data, and then used indices 0 through 3 of that array.\n\n\n\nOne of the two unproved words is read by the dispatcher's own buffer check, which takes index 1 as the pool start and index 2 as the length to range-check it over. So the out-of-bounds read is performed by the validation code itself, before the kernel service is reached, and the size the caller's pool start is then validated against is a word the manager has not proved the module owns. The other unproved word is read when the service's argument list is built.\n\n\n\nVulnerable function: `_txm_module_manager_tx_block_pool_create_dispatch`, in `common_modules/module_manager/inc/txm_module_manager_dispatch.h`.","summary":"The Module Manager's block-pool create dispatcher reads two words of a memory-protected module's extra-parameter array without proving the module owns them. An attacker who controls a module can read memory outside that module's data during the pool create validation.","severity":"medium","cvss":4.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["embedded","infrastructure","rtos","threadx"],"not_affected_if":["module-manager-disabled"],"how_to_check":"- Look for `common_modules/module_manager/inc/txm_module_manager_dispatch.h` and the function `_txm_module_manager_tx_block_pool_create_dispatch` in your ThreadX source tree\n- unknown","fix":null,"status":"open","published_at":"2026-10-20T16:17:18+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","triaged_at":"2026-10-25T04:33:24+00:00","updated_at":"2026-10-25T04:33:24+00:00","category":"infrastructure","confidence":0.5,"triage":{"at":"2026-10-25T04:33:24Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"local","title":"ThreadX Module Manager: block-pool create reads memory past module bounds","impact":"low","summary":"The Module Manager's block-pool create dispatcher reads two words of a memory-protected module's extra-parameter array without proving the module owns them. An attacker who controls a module can read memory outside that module's data during the pool create validation.","category":"infrastructure","nicknames":[],"who_cares":["threadx","embedded","rtos"],"confidence":0.5,"needs_auth":"unknown","worst_case":"Out-of-bounds memory read by a loaded module","analyst_note":"","how_to_check":"- Look for `common_modules/module_manager/inc/txm_module_manager_dispatch.h` and the function `_txm_module_manager_tx_block_pool_create_dispatch` in your ThreadX source tree\n- unknown","needs_analyst":false,"not_affected_if":["module-manager-disabled"],"who_is_affected":"Systems that build and run ThreadX with the Module Manager and memory-protected modules. The sources do not say which versions are affected or which configurations enable the module manager, so unknown whether a default build is exposed. Teams not using the ThreadX Module Manager can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000895,"input_tokens":3500,"output_tokens":1090,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-94202':15A,18A '0':108C '1':132C '2':139C '3':110C 'align':83C 'argument':202C 'array':45B,91C,113C 'attack':53B 'block':5A,28B,76C,212C 'block-pool':4A,27B,75C 'bound':12A,154C 'buffer':127C 'built':205C 'caller':173C 'check':128C,146C 'code':161C 'common':217C 'control':55B 'creat':7A,30B,69B,78C,214C 'cve':13A,16A 'data':65B,103C 'dispatch':31B,79C,124C,215C 'embed':19B 'extra':43B,89C 'extra-paramet':42B,88C 'function':207C 'index':131C,138C 'indic':107C 'infrastructur':20B 'insid':99C 'kernel':165C 'lay':98C 'length':142C 'list':203C 'manag':3A,25B,73C,185C,210C 'memori':9A,38B,60B,94C 'memory-protect':37B,93C 'modul':2A,11A,24B,40B,49B,57B,63B,72C,96C,101C,190C,209C 'modules/module_manager/inc/txm_module_manager_dispatch.h':218C 'one':114C 'out-of-bound':151C 'outsid':61B 'own':50B,191C 'paramet':44B,90C 'past':10A 'perform':157C 'pool':6A,29B,68B,77C,135C,175C,213C 'protect':39B,95C 'prove':47B,80C,188C 'rang':145C 'range-check':144C 'reach':168C 'read':8A,32B,59B,121C,155C,197C 'rtos':21B 'servic':166C,200C 'size':171C 'start':136C,176C 'suppli':97C 'take':130C 'threadx':1A,22B 'two':33B,82C,117C 'tx':211C 'txm':208C 'type':84C 'unprov':118C,194C 'use':106C 'valid':70B,160C,179C 'vulner':206C 'without':46B 'word':34B,85C,119C,183C,195C","nicknames":[],"mitigations":[],"who_affected":"Systems that build and run ThreadX with the Module Manager and memory-protected modules. The sources do not say which versions are affected or which configurations enable the module manager, so unknown whether a default build is exposed. Teams not using the ThreadX Module Manager can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-20T16:17:18+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"emo@eclipse.org","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-94202","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-94202","severity":null,"published_at":"2026-10-20T16:17:18+00:00","modified_at":"2026-10-20T19:48:50+00:00","first_seen_at":"2026-10-23T21:57:20+00:00","fetched_at":"2026-10-23T22:28:58+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}