CVE-2026-0648 (GCVE-0-2026-0648)
Vulnerability from cvelistv5 – Published: 2026-01-27 15:40 – Updated: 2026-01-27 15:53
VLAI?
Summary
The vulnerability stems from an incorrect error-checking logic in the CreateCounter() function (in threadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c) when handling the return value of osek_get_counter(). Specifically, the current code checks if cntr_id equals 0u to determine failure, but @osek_get_counter() actually returns E_OS_SYS_STACK (defined as 12U) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.
As a result, when the counter pool is depleted, the code proceeds to cast the error code (12U) to a pointer (OSEK_COUNTER *), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., 0x0000000C), which can trigger immediate HardFaults or silent memory corruption.
This vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access.
Severity ?
7.8 (High)
CWE
- CWE-253 - Incorrect Check of Function Return Value
Assigner
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| Eclipse Foundation | Eclipse ThreadX |
Affected:
6.1.7 , ≤ 6.4.3
(semver)
|
Credits
Lavine Yue
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-0648",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "no"
},
{
"Technical Impact": "total"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-01-27T15:53:06.324106Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-01-27T15:53:36.128Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"product": "Eclipse ThreadX",
"repo": "https://github.com/eclipse-threadx/threadx",
"vendor": "Eclipse Foundation",
"versions": [
{
"lessThanOrEqual": "6.4.3",
"status": "affected",
"version": "6.1.7",
"versionType": "semver"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "Lavine Yue"
}
],
"descriptions": [
{
"lang": "en",
"supportingMedia": [
{
"base64": false,
"type": "text/html",
"value": "\u003cp\u003eThe vulnerability stems from an incorrect error-checking logic in the \u003ccode\u003eCreateCounter()\u003c/code\u003e\u0026nbsp;function (in \u003ccode\u003ethreadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c\u003c/code\u003e) when handling the return value of \u003ccode\u003eosek_get_counter()\u003c/code\u003e. Specifically, the current code checks if \u003ccode\u003ecntr_id\u003c/code\u003e\u0026nbsp;equals \u003ccode\u003e0u\u003c/code\u003e\u0026nbsp;to determine failure, but \u003ccode\u003e@osek_get_counter()\u003c/code\u003e\u0026nbsp;actually returns \u003ccode\u003eE_OS_SYS_STACK\u003c/code\u003e\u0026nbsp;(defined as \u003ccode\u003e12U\u003c/code\u003e) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.\u003c/p\u003e\u003cp\u003eAs a result, when the counter pool is depleted, the code proceeds to cast the error code (\u003ccode\u003e12U\u003c/code\u003e) to a pointer (\u003ccode\u003eOSEK_COUNTER *\u003c/code\u003e), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., \u003ccode\u003e0x0000000C\u003c/code\u003e), which can trigger immediate HardFaults or silent memory corruption.\u003c/p\u003e\u003cp\u003eThis vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access.\u003c/p\u003e\u003cbr\u003e"
}
],
"value": "The vulnerability stems from an incorrect error-checking logic in the CreateCounter()\u00a0function (in threadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c) when handling the return value of osek_get_counter(). Specifically, the current code checks if cntr_id\u00a0equals 0u\u00a0to determine failure, but @osek_get_counter()\u00a0actually returns E_OS_SYS_STACK\u00a0(defined as 12U) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.\n\nAs a result, when the counter pool is depleted, the code proceeds to cast the error code (12U) to a pointer (OSEK_COUNTER *), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., 0x0000000C), which can trigger immediate HardFaults or silent memory corruption.\n\nThis vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access."
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
},
"format": "CVSS",
"scenarios": [
{
"lang": "en",
"value": "GENERAL"
}
]
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-253",
"description": "CWE-253 Incorrect Check of Function Return Value",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-01-27T15:40:31.216Z",
"orgId": "e51fbebd-6053-4e49-959f-1b94eeb69a2c",
"shortName": "eclipse"
},
"references": [
{
"url": "https://github.com/eclipse-threadx/threadx/security/advisories/GHSA-xj75-fc68-h4rw"
}
],
"source": {
"discovery": "UNKNOWN"
},
"x_generator": {
"engine": "Vulnogram 0.5.0"
}
}
},
"cveMetadata": {
"assignerOrgId": "e51fbebd-6053-4e49-959f-1b94eeb69a2c",
"assignerShortName": "eclipse",
"cveId": "CVE-2026-0648",
"datePublished": "2026-01-27T15:40:31.216Z",
"dateReserved": "2026-01-06T16:19:46.498Z",
"dateUpdated": "2026-01-27T15:53:36.128Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"nvd": "{\"cve\":{\"id\":\"CVE-2026-0648\",\"sourceIdentifier\":\"emo@eclipse.org\",\"published\":\"2026-01-27T16:16:35.107\",\"lastModified\":\"2026-04-02T20:30:57.860\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"The vulnerability stems from an incorrect error-checking logic in the CreateCounter()\u00a0function (in threadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c) when handling the return value of osek_get_counter(). Specifically, the current code checks if cntr_id\u00a0equals 0u\u00a0to determine failure, but @osek_get_counter()\u00a0actually returns E_OS_SYS_STACK\u00a0(defined as 12U) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.\\n\\nAs a result, when the counter pool is depleted, the code proceeds to cast the error code (12U) to a pointer (OSEK_COUNTER *), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., 0x0000000C), which can trigger immediate HardFaults or silent memory corruption.\\n\\nThis vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access.\"},{\"lang\":\"es\",\"value\":\"La vulnerabilidad se deriva de una l\u00f3gica incorrecta de comprobaci\u00f3n de errores en la funci\u00f3n CreateCounter() (en threadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c) al manejar el valor de retorno de osek_get_counter(). Espec\u00edficamente, el c\u00f3digo actual comprueba si cntr_id es igual a 0u para determinar un fallo, pero @osek_get_counter() en realidad devuelve E_OS_SYS_STACK (definido como 12U) cuando falla. Esta discrepancia hace que la rama de error nunca se ejecute, incluso cuando el pool de contadores est\u00e1 agotado.\\n\\nComo resultado, cuando el pool de contadores se agota, el c\u00f3digo procede a convertir el c\u00f3digo de error (12U) a un puntero (OSEK_COUNTER *), creando un puntero salvaje. Las escrituras posteriores a miembros de este puntero conducen a escrituras en direcciones de memoria ilegales (por ejemplo, 0x0000000C), lo que puede desencadenar HardFaults inmediatos o corrupci\u00f3n de memoria silenciosa.\\n\\nEsta vulnerabilidad plantea riesgos significativos, incluyendo posibles ataques de denegaci\u00f3n de servicio (mediante llamadas repetidas para agotar el pool de contadores) y acceso no autorizado a la memoria.\"}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"emo@eclipse.org\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"HIGH\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.1,\"impactScore\":6.0},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:H\",\"baseScore\":6.3,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"HIGH\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.0,\"impactScore\":5.2}]},\"weaknesses\":[{\"source\":\"emo@eclipse.org\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-253\"}]},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-787\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:eclipse:threadx:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.1.7\",\"versionEndExcluding\":\"6.4.5\",\"matchCriteriaId\":\"77069C96-3BA5-4AC9-92D4-6753DE8FC8A6\"}]}]}],\"references\":[{\"url\":\"https://github.com/eclipse-threadx/threadx/security/advisories/GHSA-xj75-fc68-h4rw\",\"source\":\"emo@eclipse.org\",\"tags\":[\"Third Party Advisory\"]}]}}",
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-0648\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-01-27T15:53:06.324106Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-01-27T15:53:25.302Z\"}}], \"cna\": {\"source\": {\"discovery\": \"UNKNOWN\"}, \"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Lavine Yue\"}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV3_1\": {\"scope\": \"CHANGED\", \"version\": \"3.1\", \"baseScore\": 7.8, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"HIGH\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"GENERAL\"}]}], \"affected\": [{\"repo\": \"https://github.com/eclipse-threadx/threadx\", \"vendor\": \"Eclipse Foundation\", \"product\": \"Eclipse ThreadX\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.1.7\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.4.3\"}], \"defaultStatus\": \"unaffected\"}], \"references\": [{\"url\": \"https://github.com/eclipse-threadx/threadx/security/advisories/GHSA-xj75-fc68-h4rw\"}], \"x_generator\": {\"engine\": \"Vulnogram 0.5.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"The vulnerability stems from an incorrect error-checking logic in the CreateCounter()\\u00a0function (in threadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c) when handling the return value of osek_get_counter(). Specifically, the current code checks if cntr_id\\u00a0equals 0u\\u00a0to determine failure, but @osek_get_counter()\\u00a0actually returns E_OS_SYS_STACK\\u00a0(defined as 12U) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.\\n\\nAs a result, when the counter pool is depleted, the code proceeds to cast the error code (12U) to a pointer (OSEK_COUNTER *), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., 0x0000000C), which can trigger immediate HardFaults or silent memory corruption.\\n\\nThis vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access.\", \"supportingMedia\": [{\"type\": \"text/html\", \"value\": \"\u003cp\u003eThe vulnerability stems from an incorrect error-checking logic in the \u003ccode\u003eCreateCounter()\u003c/code\u003e\u0026nbsp;function (in \u003ccode\u003ethreadx/utility/rtos_compatibility_layers/OSEK/tx_osek.c\u003c/code\u003e) when handling the return value of \u003ccode\u003eosek_get_counter()\u003c/code\u003e. Specifically, the current code checks if \u003ccode\u003ecntr_id\u003c/code\u003e\u0026nbsp;equals \u003ccode\u003e0u\u003c/code\u003e\u0026nbsp;to determine failure, but \u003ccode\u003e@osek_get_counter()\u003c/code\u003e\u0026nbsp;actually returns \u003ccode\u003eE_OS_SYS_STACK\u003c/code\u003e\u0026nbsp;(defined as \u003ccode\u003e12U\u003c/code\u003e) when it fails. This mismatch causes the error branch to never execute even when the counter pool is exhausted.\u003c/p\u003e\u003cp\u003eAs a result, when the counter pool is depleted, the code proceeds to cast the error code (\u003ccode\u003e12U\u003c/code\u003e) to a pointer (\u003ccode\u003eOSEK_COUNTER *\u003c/code\u003e), creating a wild pointer. Subsequent writes to members of this pointer lead to writes to illegal memory addresses (e.g., \u003ccode\u003e0x0000000C\u003c/code\u003e), which can trigger immediate HardFaults or silent memory corruption.\u003c/p\u003e\u003cp\u003eThis vulnerability poses significant risks, including potential denial-of-service attacks (via repeated calls to exhaust the counter pool) and unauthorized memory access.\u003c/p\u003e\u003cbr\u003e\", \"base64\": false}]}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-253\", \"description\": \"CWE-253 Incorrect Check of Function Return Value\"}]}], \"providerMetadata\": {\"orgId\": \"e51fbebd-6053-4e49-959f-1b94eeb69a2c\", \"shortName\": \"eclipse\", \"dateUpdated\": \"2026-01-27T15:40:31.216Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-0648\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-01-27T15:53:36.128Z\", \"dateReserved\": \"2026-01-06T16:19:46.498Z\", \"assignerOrgId\": \"e51fbebd-6053-4e49-959f-1b94eeb69a2c\", \"datePublished\": \"2026-01-27T15:40:31.216Z\", \"assignerShortName\": \"eclipse\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…