Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRun as granted user-mode thread with SMBus object
-
DeliveryInvoke remove_cb syscall with crafted pointer
-
ExploitVerifier skips pointer validation
-
ExecutionUnregister supervisor callback or dereference bad pointer in kernel
-
ImpactDisable alert handling or trigger fatal kernel fault
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a Zephyr build with CONFIG_USERSPACE=y AND CONFIG_SMBUS=y AND an SMBus driver implementing the callback operations - specifically drivers/smbus/intel_pch_smbus.c with CONFIG_SMBUS_INTEL_PCH_SMBALERT or CONFIG_SMBUS_INTEL_PCH_HOST_NOTIFY, or drivers/smbus/smbus_stm32.c with CONFIG_SMBUS_STM32_SMBALERT. The attacker must be a local user-mode thread that has already been granted the SMBus device object (PR:L, AV:L). There is explicitly NO impact on builds without CONFIG_USERSPACE and NO impact on configurations that do not enable an SMBus driver with SMBALERT or Host Notify support. The CONFIG_ASSERT=y fault/DoS and address-disclosure path additionally depends on assertions being compiled in. |
| Impact | This is a genuinely low-to-moderate risk, config-gated local privilege/integrity issue - the CVSS of 4.4 is honest, not inflated. The vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L correctly captures that exploitation is LOCAL (AV:L) by an already-authenticated low-privileged user-mode thread (PR:L) with no user interaction, producing only partial integrity and availability impact and no confidentiality loss per the vendor. There is no EPSS score, no CISA KEV listing, and no public exploit code identified at time of analysis, so there is no public exploit identified at time of analysis. The key risk-dampening factor is not the CVSS metrics but the narrow prerequisite surface: the vulnerable syscalls only exist and matter on builds with CONFIG_USERSPACE=y, CONFIG_SMBUS=y, and a specific driver (Intel PCH or STM32) compiled with SMBALERT/Host-Notify support, and the attacking thread must already have been granted the SMBus device object. No signals conflict here - low real-world risk is consistent across CVSS, missing EPSS/KEV, and the absence of a POC. Note the description also mentions a minor address-mapping side channel (fault vs no-fault, and 0 vs -ENOENT return codes), which arguably warrants C:L; the vendor nonetheless scored C:N, treating it as negligible. |
| Exploit ScenarioDerived | On a Zephyr image built with CONFIG_USERSPACE, CONFIG_SMBUS, and an SMBALERT/Host-Notify-capable driver, a low-privileged user-mode thread that holds the SMBus device object invokes smbus_smbalert_remove_cb() or smbus_host_notify_remove_cb() with an attacker-chosen pointer; because images have fixed symbol addresses and the syscall returns 0 on a hit versus -ENOENT on a miss, the attacker searches for and unregisters a callback a supervisor component registered, silently disabling alert handling. Alternatively, on a CONFIG_ASSERT=y build, supplying a bogus pointer causes the __ASSERT(callback->handler, ...) check to dereference it in supervisor mode, triggering a kernel-mode fault and fatal system error (DoS), while the fault/no-fault outcome leaks which addresses are mapped. No public exploit code is known, and exploitation is local and requires the prior grant of the SMBus device object. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 01, 2026
Local user-mode threads in Zephyr RTOS builds that enable CONFIG_USERSPACE and CONFIG_SMBUS can invoke the smbus_smbalert_remove_cb() and smbus_host_notify_remove_cb() syscalls with an arbitrary pointer, silently unregistering SMBALERT or Host Notify callbacks that supervisor-mode code registered and thereby disabling alert handling system-wide; the same pointer can also be probed for valid kernel addresses because the syscall returns 0 on a hit versus -ENOENT on a miss. Exploitation is authenticated and local (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L, 4.4), requiring a user-mode thread that has already been granted the SMBus device object, and is limited to configurations using the Intel PCH SMBus driver with CONFIG_SMBUS_INTEL_PCH_SMBALERT or CONFIG_SMBUS_INTEL_PCH_HOST_NOTIFY, or the STM32 SMBus driver with CONFIG_SMBUS_STM32_SMBALERT; builds with CONFIG_ASSERT=y additionally turn a bogus pointer into a supervisor-mode fault and fatal system error, leaking which addresses are mapped. There is no impact on builds without CONFIG_USERSPACE or without an SMBus driver supporting SMBALERT/Host Notify, and no public exploit identified at time of analysis.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the hardening change in commit 331df881a8b8cb4296699a8251c9fd74a4308f3d, which removes the smbus_smbalert_remove_cb() and smbus_host_notify_remove_cb() syscall entry points and republishes them as static inline functions so that callback-list manipulation is reachable only from supervisor mode, and track https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-hqh5-956f-5x2r for the patched release that carries it. If the commit cannot be backported immediately, the most targeted compensating control is to drop the SMBALERT/Host Notify driver options that expose the callback path - CONFIG_SMBUS_INTEL_PCH_SMBALERT, CONFIG_SMBUS_INTEL_PCH_HOST_NOTIFY, and CONFIG_SMBUS_STM32_SMBALERT - at the cost of losing alert and host-notify handling on those platforms, or to stop granting the SMBus device object to user-mode threads so they cannot reach the verifier at all, which breaks any legitimate user-mode SMBus client. Disabling CONFIG_ASSERT=y removes the supervisor-mode dereference and the resulting fault/address-disclosure oracle but also strips all kernel assertions and is not a substitute for the pointer-validation fix, while turning off CONFIG_USERSPACE entirely closes the flaw by eliminating the userspace boundary but sacrifices memory isolation for the whole application. None of these are equivalent to the upstream fix, which is the only option that preserves functionality while closing the missing-authorization gap; because impact is integrity-only and low (CVSS 4.4), deferring the patch is defensible only on systems that neither expose SMBALERT/Host Notify drivers to user-mode threads nor rely on CONFIG_ASSERT builds.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Zephyr's userspace model splits callers into user-mode threads and supervisor-mode kernel code, with __syscall entry points fronted by z_vrfy_* verifiers that must check both object permissions (K_SYSCALL_OBJ against K_OBJ_DRIVER_SMBUS) and memory access rights (K_SYSCALL_MEMORY_READ / K_SYSCALL_MEMORY_WRITE) before forwarding arguments into z_impl_* kernel implementations. The verifiers in drivers/smbus/smbus_handlers.c for smbus_smbalert_remove_cb() and smbus_host_notify_remove_cb() performed only the device-object check and passed the raw struct smbus_callback *cb pointer through unchecked, so an untrusted userspace address reached smbus_callback_remove() in drivers/smbus/smbus_utils.h, where it is compared as a node identity against the kernel's sys_slist_t of registered callbacks - a missing-authorization weakness (CWE-862) rather than a memory-corruption bug. The affected CPE is cpe:2.3:a:zephyrproject:zephyr:*:*:*:*:*:*:*:*, and the design intent is visible in the fix commit 331df881a8b8cb4296699a8251c9fd74a4308f3d, which deletes both z_vrfy_* shims and their marshalling headers and demotes the functions to ordinary static inline wrappers, matching an earlier 2023 change that had already removed the smbus_smbalert_set_cb() and smbus_host_notify_set_cb() syscalls for the same reason. Because Zephyr images use fixed symbol addresses and the return value distinguishes a hit (0) from a miss (-ENOENT), the address of a registered callback is both derivable and searchable by an attacker; with CONFIG_ASSERT=y the __ASSERT(callback->handler, ...) dereference executes in supervisor mode, so the fault/no-fault outcome discloses whether a given address is mapped.
Know when Zephyr gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
Local user-mode thread already holding the SMBus object (AV:L, PR:L); no interaction; unregistering supervisor callbacks gives I:L and a CONFIG_ASSERT kernel fault gives A:L; vendor scores the address side-channel as C:N.
Primary rating from Vendor (zephyr).
CVSS VectorVendor: zephyr
DescriptionCVE.org
The SMBus driver API exposed smbus_smbalert_remove_cb() and smbus_host_notify_remove_cb() as Zephyr syscalls. Their verifiers in drivers/smbus/smbus_handlers.c validated only the dev argument with K_SYSCALL_OBJ(dev, K_OBJ_DRIVER_SMBUS) and forwarded the caller-supplied struct smbus_callback *cb pointer into kernel-mode driver code without any K_SYSCALL_MEMORY_READ/K_SYSCALL_MEMORY_WRITE validation. A companion change in 2023 had already removed the matching smbus_smbalert_set_cb() / smbus_host_notify_set_cb() syscalls for this reason, but the two removal syscalls were left exposed.
On a build with CONFIG_USERSPACE=y, CONFIG_SMBUS=y and a driver implementing the callback operations (drivers/smbus/intel_pch_smbus.c with CONFIG_SMBUS_INTEL_PCH_SMBALERT/CONFIG_SMBUS_INTEL_PCH_HOST_NOTIFY, or drivers/smbus/smbus_stm32.c with CONFIG_SMBUS_STM32_SMBALERT), any user-mode thread that has been granted the SMBus device object can invoke these syscalls with an arbitrary pointer. The value reaches smbus_callback_remove() in drivers/smbus/smbus_utils.h, which uses it as a node identity against the kernel's sys_slist_t of registered callbacks.
The consequence is that an unprivileged thread can unregister an SMBALERT or Host Notify callback that a supervisor-mode component registered, silently disabling alert handling for the rest of the system; because Zephyr images have fixed symbol addresses and the syscall returns 0 on a hit versus -ENOENT on a miss, the target address is both derivable and searchable. In builds with CONFIG_ASSERT=y the __ASSERT(callback->handler, ...) check additionally dereferences the caller-supplied address in supervisor mode, so a bogus pointer raises a kernel-mode fault and a fatal system error, and the fault/no-fault outcome discloses which addresses are mapped.
The fix removes both syscall entry points, demoting the two functions to ordinary static inline calls so that callback list manipulation is available only to supervisor-mode code. There is no impact on builds without CONFIG_USERSPACE, and no impact on configurations that do not enable an SMBus driver with SMBALERT or Host Notify support.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Potential off-by-one buffer overflow vulnerability in the Zephyr fuse file system. Rated critical severity (CVSS 10.0),
An out-of-bounds write in the Zephyr RTOS DNS resolver (dns_unpack_name()) lets a crafted DNS response corrupt memory on
Possible variant of CVE-2021-3434 in function le_ecred_reconf_req. Rated critical severity (CVSS 9.8), this vulnerabilit
Unchecked user input length in /subsys/net/l2/wifi/wifi_shell.c can cause buffer overflows. Rated critical severity (CVS
Potential buffer overflow vulnerability in the Zephyr CAN bus subsystem. Rated critical severity (CVSS 9.8), this vulner
Integer Underflow in 6LoWPAN IPHC Header Uncompression in Zephyr. Rated critical severity (CVSS 9.8), this vulnerability
Buffer overflow in Zephyr USB DFU DNLOAD. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable
DOS: Incorrect 802154 Frame Validation for Omitted Source / Dest Addresses. Rated critical severity (CVSS 9.8), this vul
zephyr-rtos version 1.12.0 contains a NULL base pointer reference vulnerability in sys_ring_buf_put(), sys_ring_buf_get(
Potential buffer overflow vulnerabilities n the Zephyr Bluetooth subsystem. Rated critical severity (CVSS 9.6), this vul
The documentation specifies that the BT_GATT_PERM_READ_LESC and BT_GATT_PERM_WRITE_LESC defines for a Bluetooth characte
Potential buffer overflows in the Bluetooth subsystem due to asserts being disabled in /subsys/bluetooth/host/hci_core.c
EUVD-2026-90880
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB