Page generated: 07 Nov 2026, 18:00 UTC
← Dashboard

CVE-2026-87039

The user-mode syscall verifier z_vrfy_i2s_configure() in drivers/i2s/i2s_handlers.c copies the caller's struct i2s_config in from user memory and then, when cfg->frame_clk_freq is 0 (the API's "unconfigure the stream" request), jumps straight to z_impl_i2s_configure() without per…

Read full description
The user-mode syscall verifier z_vrfy_i2s_configure() in drivers/i2s/i2s_handlers.c copies the caller's struct i2s_config in from user memory and then, when cfg->frame_clk_freq is 0 (the API's "unconfigure the stream" request), jumps straight to z_impl_i2s_configure() without performing the K_SYSCALL_OBJ(config.mem_slab, K_OBJ_MEM_SLAB) ownership/type check or the block_size sanity check. The mem_slab field is a struct k_mem_slab *, so on that path a completely unvalidated, user-chosen pointer reaches driver code that is entitled to trust it as a real kernel object. Any thread running under CONFIG_USERSPACE that has access to an I2S device object can trigger this with a single i2s_configure() call. Most in-tree drivers special-case frame_clk_freq == 0 and never store the caller's structure, but drivers/i2s/i2s_litex.c does not: i2s_litex_configure() only logs a warning for a mismatched frame clock, then memcpy()s the caller's config into stream->cfg and marks the stream I2S_STATE_READY. A subsequent i2s_trigger() with I2S_TRIGGER_START enables the FIFO interrupt, and the interrupt handlers i2s_litex_isr_rx() / i2s_litex_isr_tx() then call k_mem_slab_alloc() and k_mem_slab_free() on the attacker-supplied pointer in supervisor context. The result is an arbitrary-pointer read/write primitive executed by the kernel on behalf of an unprivileged thread — k_mem_slab_alloc() takes a spinlock at slab->lock and reads and writes slab->free_list and the link word inside the returned "block" — which defeats the CONFIG_USERSPACE isolation boundary entirely. The same missing validation is a hazard for out-of-tree I2S drivers that retain the configuration on the unconfigure path. Builds without CONFIG_USERSPACE are unaffected, since the verifier is not used. The fix zeroes config.mem_slab and config.block_size on the unconfigure path so the driver can never receive an unvalidated pointer, while still allowing a stream to be unconfigured by a caller that does not own a memory slab, as the API documents.
CVSS 7.8 (HIGH)

Attention and evidence

HYPE SCORE
0.0/10
REALITY · THREAT PRIORITY
2.7/10
General review priority; not probability

Evidence confidence: Insufficient evidence

Why this priority?
  • Technical severity: CVSS 7.8: +2.73
  • Fresh EPSS: 0.10%: +0.00

General review priority, not probability, victim count or asset-specific risk. A range covers missing CVSS/EPSS inputs within the current evidence state.

Sources: 1 documents and public datasets.

Hype components

Headline sample (25%)
0/100
Press, 30 days (60%)
0/100
Grounded branding (15%)
0/100
HYPE TOTAL0/100

Sources and documents

Latest Vulnerabilities
Technical advisory · 04 Nov 2026, 06:17 · CVE-2026-87039 - I2S configure syscall handler passes an unvalidated user-supplied kernel object pointer to drivers

Score evolution

● Hype   ● Reality

0.01.02.03.04.05.004 Nov 2026 · INSUFFICIENT DATAHype 0.0Reality 2.704 Nov 2026 · BELOW THRESHOLDSHype 0.0Reality 2.7Nov 4Nov 4

━ Hype Score (Perceived)  ━ Reality threat priority. Definition changes are not new attacks.

Public exploit evidence

0

Public exploit entries / repo candidates

Evidence context and dated references

Reality is general threat/review priority, combining observed exploitation, CVSS severity and fresh EPSS. Evidence confidence is separate. This is not calibrated risk, a victim count or an asset-specific assessment. A range reflects missing numeric inputs. Published 3 days ago. Exploitation evidence usually takes weeks to show up: a low reality score can mean there is no data yet, not that the flaw is mild.

Evidence in context

Confidence in exploitation evidence
Insufficient evidence
Priority basis
Exploitation in attacks unconfirmed; CVSS 7.8; EPSS 0.1%
Attention, last 30 days
0 distinct story titles; 0 press documents; 0 publisher domains.
Technical potential
local access, low privileges, no user interaction, additional attack conditions.
Observed activity
No exploitation observation is recorded.
Known scale
Not quantified.
Evidence confidence basis
Insufficient evidence

Score evaluated: 2026-11-05 14:00:29.412792+00:00 · EPSS snapshot: 2026-11-05T12:03:04Z

Source event timeline
Published
04 Nov 2026, 06:09
Score calculated
05 Nov 2026, 14:00