CVE-2026-19676 in Zephyrinfo

Zusammenfassung

von VulDB • 21.10.2026

Der User-Mode-Verifier für den Systemaufruf `peci_transfer()`, also `z_vrfy_peci_transfer()` in `drivers/peci/peci_handlers.c`, prüfte nur die Berechtigungen des Device-Objekts und kopierte das vom Aufrufer bereitgestellte `struct peci_msg` mit `k_usermode_from_copy()`. Dieser Kopiervorgang validiert lediglich die äußere Struktur; die Zeiger (`buf`) und Längenwerte (`len`) innerhalb der eingebetteten Member `tx_buffer` und `rx_buffer` von `struct peci_buf` blieben vollständig vom Aufrufer kontrollierbar und wurden ungeprüft an den Treiber weitergegeben.

Jeder im Kernel-Baum vorhandene PECI-Treiber dereferenziert diese Zeiger im Supervisor-Modus: `peci_npcx_transfer()` in `drivers/peci/peci_npcx.c` und `peci_it8xxx2_transfer()` in `drivers/peci/peci_ite_it8xxx2.c` kopieren Hardware-Bytes nach `rx_buffer.buf[i]` und lesen Kommando-Bytes aus `tx_buffer.buf[i]`, während `peci_xec_read()` bzw. `peci_xec_write()` in `drivers/peci/peci_mchp_xec.c` dasselbe tun, wobei bei `rx_buffer.len` überhaupt keine Begrenzung erfolgt. Ein Thread im User-Mode, dem das PECI-Device-Objekt gewährt wurde – was der übliche Weg ist, wie eine Anwendung ein Gerät unter `CONFIG_USERSPACE` verfügbar macht –, könnte daher `rx_buffer.buf` auf Kernel-Datenstrukturen zeigen lassen und den Treiber veranlassen, dort von der Hardware bereitgestellte Bytes zu schreiben, oder `tx_buffer.buf` auf Kernel-Speicher zeigen lassen und dessen Inhalte auf den PECI/eSPI Out-of-Band-Bus schieben.

Die Auswirkung ist eine vollständige Flucht vom User-Mode in den Kernel: Eine beliebige Write-P Primitive im Kernel (Integritätsverletzung und dadurch Code-Ausführung mit Supervisor-Rechten), ein beliebiges Read aus dem Kernel, das einem Beobachter des PECI-Busses offengelegt wird, sowie ein trivial erreichbarer Fault im Supervisor-Modus, wenn eine nicht gemappte Adresse angegeben wird. Für die Ausnutzung sind `CONFIG_USERSPACE=y`, mindestens einer der aktivierten PECI-Treiber (`CONFIG_PECI_NPCX`, `CONFIG_PECI_XEC` oder `CONFIG_PECI_ITE_IT8XXX2`) und lokale Code-Ausführung in einem User-Mode-Thread erforderlich, das/der über die Berechtigung für das PECI-Gerät verfügt.

Die Korrektur fügt Prüfungen mit `K_SYSCALL_MEMORY_READ()` und `K_SYSCALL_MEMORY_WRITE()` für die beiden eingebetteten Puffer hinzu sowie einen Guard durch `size_add_overflow()`, der das Frame-Check-Sequence-Byte berücksichtigt, welches in der RX-Länge enthalten ist.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Zephyr

Reservieren

13.08.2026

Veröffentlichung

21.10.2026

Moderieren

akzeptiert

Eintrag

VDB-424966

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Want to stay up to date on a daily basis?

Enable the mail alert feature now!