HIGH
iio DAC Debugfs Buffer Overflow
CVE-2026-23092
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI7.8HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: iio: dac: ad3552r-hs: fix out-of-bound write in ad3552r_hs_write_data_source When simple_write_to_buffer() succeeds, it returns the number of bytes actually copied to the buffer. The code incorrectly uses 'count' as the index for null termination instead of the actual bytes copied. If count exceeds the buffer size, this leads to out-of-bounds write. Add a check for the count and use the return value as the index. The bug was validated using a demo module that mirrors the original code and was tested under QEMU. Pattern of the bug: - A fixed 64-byte stack buffer is filled using count. - If count > 64, the code still does buf[count] = '\0', causing an - out-of-bounds write on the stack. Steps for reproduce: - Opens the device node. - Writes 128 bytes of A to it. - This overflows the 64-byte stack buffer and KASAN reports the OOB. Found via static analysis. This is similar to the commit da9374819eb3 ("iio: backend: fix out-of-bound write")
02KernelScan AI Analysis
Risk summary
An attacker with local access can write more than 64 bytes to a debugfs file, causing a stack buffer overflow. This could lead to kernel memory corruption, denial of service, or potentially privilege escalation through stack manipulation.
Vulnerability analysis
Summary: Out-of-bounds write vulnerability in IIO DAC driver debugfs interface
Root Cause: The ad3552r_hs_write_data_source function uses a 64-byte stack buffer but incorrectly uses the user-provided 'count' parameter as an index for null termination instead of the actual bytes copied by simple_write_to_buffer(). When count exceeds the buffer size, buf[count] = '\0' writes beyond the buffer boundaries.
Attack Surface: Local access required to write to the debugfs file node. Attackers need filesystem access to /sys/kernel/debug/ and the specific IIO device debugfs entry.
Fix Mechanism: The patch adds a bounds check (count >= sizeof(buf)) and uses the return value from simple_write_to_buffer() as the index for null termination instead of the unchecked count parameter.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 6.18 | 6.18.8 | db16e7c52032 |
| mainline | 6.19 | 978d28136c53 |