Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDAD

CVE-2026-79978 Escritura fuera de límites en la ruta de lectura de FIFO por streaming RTIO del driver ADXL345

El callback adxl345_process_fifo_samples_cb() limita la cantidad de datos de FIFO a reportar al espacio devuelto por rtio_sqe_rx_buf(), pero luego encola una lectura de bus de 6 bytes por cada entrada de FIFO del hardware en offsets consecutivos desde read_buf, acotado por el conteo reportado por el dispositivo y no por el límite aplicado. Con un búfer menor a un lote completo, el driver escribe hasta 186 bytes más allá del final de la asignación; además, data-fifo_total_bytes no se reiniciaba al inicio del lote…

Alerta de Nureq Monitor

Detectada 23 OCT · 18:38

CVSS 3.1

3.6BAJA

PROBABILIDAD DE EXPLOTACIÓN (EPSS)

0,1 % PERCENTIL 2

EXPLOTACIÓN ACTIVA

No confirmada

EXPLOIT PÚBLICO

No conocido

Qué es CVE-2026-79978

El callback adxl345_process_fifo_samples_cb() limita la cantidad de datos de FIFO a reportar al espacio devuelto por rtio_sqe_rx_buf(), pero luego encola una lectura de bus de 6 bytes por cada entrada de FIFO del hardware en offsets consecutivos desde read_buf, acotado por el conteo reportado por el dispositivo y no por el límite aplicado. Con un búfer menor a un lote completo, el driver escribe hasta 186 bytes más allá del final de la asignación; además, data-fifo_total_bytes no se reiniciaba al inicio del lote…

Productos y versiones afectadas

  • zephyrproject zephyr

    • desde 4.0.0 hasta 4.4.2

Qué hacer

  1. Verificá si usás zephyr y en qué versión: el rango afectado figura arriba.
  2. Actualizá a la versión corregida que indique el fabricante en su aviso (ver referencias) o aplicá la mitigación que publique.
  3. Revisá registros y accesos de los sistemas expuestos para descartar que se haya aprovechado antes de corregir.

Calculadora CVSS

CVSS 3.1 · 3.6 BAJA

CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:L

VECTOR DE ATAQUE (AV)
Local
COMPLEJIDAD DEL ATAQUE (AC)
Alta
PRIVILEGIOS REQUERIDOS (PR)
Bajos
INTERACCIÓN DEL USUARIO (UI)
Ninguna
ALCANCE (S)
Sin cambio
CONFIDENCIALIDAD (C)
Ninguna
INTEGRIDAD (I)
Baja
DISPONIBILIDAD (A)
Baja

Abrir la calculadora completa

Descripción original

The RTIO streaming completion callback adxl345_process_fifo_samples_cb() in drivers/sensor/adi/adxl345/adxl345_stream.c clamps the amount of FIFO data it will report (read_len = MIN(fifo_bytes, buf_avail)) to the space actually returned by rtio_sqe_rx_buf(), but then queues one 6-byte bus read per hardware FIFO entry at consecutive offsets from read_buf, bounded by the device-reported entry count rather than by the clamp. When the allocated buffer is smaller than a full batch, the driver writes up to 186 bytes past the end of the allocation; a companion defect left data->fifo_total_bytes un-reset at batch start, so an aborted or errored chain could leave a stale write offset that pushes the next batch's writes out of bounds as well. A short buffer is an expected, first-class outcome of the RTIO allocator: rtio_block_pool_alloc() walks the requested size down one block at a time until a contiguous run is available, and the driver only demands sizeof(struct adxl345_fifo_data) + 6 bytes as its minimum. Any streaming configuration whose mempool block granularity is smaller than a full FIFO batch (204 bytes) — for example the sensor shell's RTIO_DEFINE_WITH_MEMPOOL(sensor_read_rtio, 8, 8, 32, 64, 4) used by sensor stream <dev> on fifo_wm incl, or the 16-byte-block streaming example in the documentation — takes this path whenever the pool is fragmented or the consuming thread falls behind. The out-of-bounds writes are performed by the I2C/SPI RTIO backend (DMA on many SoCs) into the shared RTIO block pool, corrupting neighbouring live buffers or, for a pool smaller than one batch, memory beyond the pool itself. The written bytes are accelerometer samples and the destination follows the allocation, so there is no controllable corruption primitive: the realistic impact is silent corruption of other RTIO consumers' data or a crash. Reaching it requires a board with an interrupt-wired ADXL345 built with CONFIG_ADXL345_STREAM, plus buffer-pool starvation, which a co-resident local workload can induce but which also occurs spontaneously under load; there is no network, USB or radio path to this code.

Referencias

Historial de la alerta

  1. VULNERABILIDAD Nueva vulnerabilidad detectada.

CÓMO SE HIZOResumen traducido automáticamente al español a partir de la descripción original. Ante dudas, la descripción original y las referencias del fabricante son la fuente de verdad. Cómo funciona.