Saltar al contenido
DUPIN
ALERTAS · EN VIVO
Contacto

VULNERABILIDAD

CVE-2026-79976 Desreferencia de puntero NULL en el binding target MCTP I2C+GPIO activable por un controlador I2C par

El registro seleccionado y la fase de datos no se limpiaban al recibir un STOP, por lo que el búfer de paquete quedaba en NULL. Un controlador en el bus puede, con dos transacciones normales y sin autenticación, volver a entrar en la misma rama de mctp_i2c_gpio_target_stop() con un búfer NULL y provocar una desreferencia de puntero NULL.

Alerta de Nureq Monitor

Detectada 21 OCT · 16:26

CVSS 3.1

7.1ALTA

PROBABILIDAD DE EXPLOTACIÓN (EPSS)

0,2 % PERCENTIL 10

EXPLOTACIÓN ACTIVA

No confirmada

EXPLOIT PÚBLICO

No conocido

Qué es CVE-2026-79976

El registro seleccionado y la fase de datos no se limpiaban al recibir un STOP, por lo que el búfer de paquete quedaba en NULL. Un controlador en el bus puede, con dos transacciones normales y sin autenticación, volver a entrar en la misma rama de mctp_i2c_gpio_target_stop() con un búfer NULL y provocar una desreferencia de puntero NULL.

Productos y versiones afectadas

  • zephyrproject zephyr

    • desde 4.3.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 · 7.1 ALTA

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

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

Abrir la calculadora completa

Descripción original

The MCTP-over-I2C+GPIO target binding in subsys/pmci/mctp/mctp_i2c_gpio_target.c emulates a small pseudo-register file, where the bus controller first writes a register number and then writes or reads payload bytes. The selected register (b->reg_addr) and the data-phase flag (b->rxtx) were never cleared when the controller issued an I2C STOP, so after a completed transfer the target still had a data register selected while the packet buffer that register refers to had already been consumed and set to NULL by mctp_i2c_gpio_target_stop(). A controller on the bus can re-enter the same branch of mctp_i2c_gpio_target_stop() with a NULL buffer using two ordinary transactions and no authentication: first a normal packet write to MCTP_I2C_GPIO_RX_MSG_ADDR followed by STOP (which delivers and frees b->rx_pkt), then a bare read transaction followed by STOP. The failing read_requested() call leaves the stale state untouched and the I2C driver still delivers the STOP callback, which then calls mctp_bus_rx() with a NULL packet. The symmetric case exists on the transmit side, where the stale MCTP_I2C_GPIO_TX_MSG_ADDR selection dereferences b->tx_pkt->end after b->tx_pkt has been cleared and additionally signals b->tx_complete a second time, causing the next outbound packet to be dropped. The dereference happens in the I2C target interrupt handler, so on any target that traps accesses to address 0 the result is a fatal exception and a device reset or halt — a denial of service inflicted by any device able to act as controller on the shared management bus (for example compromised firmware on a peer MCTP endpoint or on the BMC). On parts where address 0 is readable, the impact degrades to a malformed packet buffer being handed to the MCTP stack and lost transmit packets. No attacker-controlled value is written and no confidentiality or integrity boundary is crossed. The fix resets b->reg_addr to MCTP_I2C_GPIO_INVALID_ADDR and clears b->rxtx at every STOP, so a new register must be selected before any data phase can run again. Only builds that opt into the experimental CONFIG_MCTP subsystem with CONFIG_MCTP_I2C_GPIO_TARGET=y are affected.

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.