CVE-2026-19737
Last modified
CVE-2026-19737 is a medium-severity vulnerability rated 5.5/10 on the CVSS scale. i2s_esp32_trigger_check() in drivers/i2s/i2s_esp32.c validates the requested direction only for I2S_DIR_BOTH. The I2S_DIR_RX and I2S_DIR_TX branches read dev_cfg->rx.data->configured / dev_cfg->tx.data->configured without first checking the stream pointers. EPSS estimates a 0.10% chance of exploitation in the next 30 days.
Description
i2s_esp32_trigger_check() in drivers/i2s/i2s_esp32.c validates the requested direction only for I2S_DIR_BOTH. The I2S_DIR_RX and I2S_DIR_TX branches read dev_cfg->rx.data->configured / dev_cfg->tx.data->configured without first checking the stream pointers. The device instantiation macro I2S_ESP32_STREAM_INIT() sets both .conf and .data to NULL for a direction the devicetree does not describe, so on an instance that wires only one direction — the normal shape for audio output or a worldsemi,ws2812-i2s LED strip — the other direction dereferences a NULL pointer instead of returning an error. i2s_trigger() is a Zephyr syscall, and z_vrfy_i2s_trigger() in drivers/i2s/i2s_handlers.c validates only the device object and the presence of the trigger API pointer; the dir argument is passed to the driver unvalidated. On a build with CONFIG_USERSPACE enabled, a user-mode thread that has been granted the I2S device can issue a single i2s_trigger() call naming the unwired direction and cause a load from address 0 in kernel mode. Among the Espressif parts that carry this driver, userspace is available in-tree only on RISC-V SoCs with CONFIG_RISCV_PMP, and v4.4.0 is the first release where that is buildable: the ESP32-C6 HPCORE selects RISCV_PMP when it is not built for MCUboot. ESP32-C5 in v4.4.x carries the same PMP-region and userspace linker support but does not select RISCV_PMP by default. Espressif Xtensa targets do not support Zephyr userspace, and in a non-userspace build the bad direction can only come from in-kernel application code. The impact is limited to availability: the access is a read at offset 0 of the missing stream structure, so there is no attacker-controlled offset, no write primitive and no information disclosure. With the default fatal-error handler the resulting exception halts the system, giving an unprivileged user-mode thread a system-wide denial of service. The fix adds the same pointer check the I2S_DIR_BOTH branch already performed and returns -ENOSYS for a direction the instance does not implement; the driver's other entry points (i2s_esp32_config_check(), i2s_esp32_config_get(), i2s_esp32_read(), i2s_esp32_write()) already guarded the pointers, and a static audit found no equivalent unguarded path. The driver defect is older than the affected range. The unguarded dereference is present from v4.2.0 (reached through i2s_esp32_trigger_stream(), whose if (stream) guard tests the address of a struct member and is never false) and takes its present i2s_esp32_trigger_check() form in v4.3.0. No in-tree Espressif configuration before v4.4.0 can run a user-mode thread, so in v4.2.x and v4.3.x the direction argument can only come from trusted kernel code. Those releases carry the bug but are not listed as affected; the fix has also been merged to v4.3-branch as hardening.
Metrics
Weakness Enumeration
Affected Software
Source: CNA advisory (CVE.org). NVD analysis pending.
| Vendor | Product | Versions |
|---|---|---|
| zephyrproject | zephyr | >= 4.4.0, < 4.5.0 |
References
Timeline
- Published
- Last Modified
- Status
- Awaiting Analysis
Frequently Asked Questions
What is CVE-2026-19737?
How severe is CVE-2026-19737?
How do I fix CVE-2026-19737?
How Strix Helps
- How Strix found a critical auth bypass in etcdStrix autonomously discovered a critical authentication bypass in etcd, later designated CVE-2026-33413.
- Autonomous PentestingAI agents that find and validate exploitable vulnerabilities like this one across your applications.
- PR ReviewsPentest every pull request so vulnerable code is caught before it ships to production.
- AI Penetration TestingHow AI-driven penetration testing continuously covers your attack surface.
Related CVEs from 2026
- CVE-2026-1973A vulnerability was determined in Free5GC up to 4.1.0. The i…7.5
- CVE-2026-19730The 'podman quadlet install --replace' command opens the exi…4.2
- CVE-2026-19733Server-Side request forgery (SSRF) vulnerability in Yordam I…5.3
- CVE-2026-19734Missing Authorization and Authorization Bypass Through User-…8.6
- CVE-2026-19735The RFC 6528 initial-sequence-number implementation in subsy…4.8
- CVE-2026-19736The NXP MCUX TRNG entropy driver in drivers/entropy/entropy_…7.8
- CVE-2026-19738The Bluetooth Link Layer Control Procedure (LLCP) implementa…6.5
- CVE-2026-19739The Bluetooth Link Layer control procedure code in subsys/bl…6.5
- CVE-2026-1974A vulnerability was identified in Free5GC up to 4.1.0. This …7.5
- CVE-2026-19740The Link Layer Control Procedure (LLCP) implementation of th…6.5
- CVE-2026-19741Zephyr's OpenThread integration defined CONFIG_OPENTHREAD_JO…7.5
- CVE-2026-19742The IPv6 stack derived the long-lived secret key used to com…3.7
Are you affected by CVE-2026-19737?
Run a free Strix scan to check your systems for this vulnerability.
Scan your code nowSource: NVD / NIST
