CVE-2026-14367 in Zephyrinfo

Zusammenfassung

von VulDB • 31.08.2026

Das I3C-IBI-Subsystem in `drivers/i3c/i3c_ibi_workq.c` verteilt statisch zugewiesene Work-Knoten über eine als einfache `sys_slist_t` implementierte Free-Liste (`i3c_ibi_work_nodes_free`), die keine Synchronisierung bietet. Die Allokationshilfsfunktionen (`i3c_ibi_work_enqueue`, `i3c_ibi_work_enqueue_target_irq`, `i3c_ibi_work_enqueue_hotjoin`, `i3c_ibi_work_enqueue_controller_request`, `i3c_ibi_work_enqueue_cb`) rufen `sys_slist_get()` direkt aus dem ISR-Kontext auf, während der Workqueue-Handler `i3c_ibi_work_handler()` Knoten mit `sys_slist_append()` vom Workqueue-Thread zurückgibt; weder Seite ist durch eine Sperre geschützt.

Da `sys_slist_get()` und `sys_slist_append()` weder atomar noch interrupt-sicher sind, kommt es zu einem Race Condition auf der gemeinsamen Liste, wenn ein IBI-Interrupt während des Anhängens (append) im Workqueue-Thread ausgelöst wird (oder bei wirklich parallelem Zugriff unter CONFIG_SMP). Dies führt zur Korruption der Listenverknüpfung: Ein Knoten kann an zwei Verbraucher ausgegeben werden, ein Knoten geht möglicherweise verloren oder die Kopf-/Schwanzzeiger bleiben inkonsistent, sodass `sys_slist_get()` einen veralteten (stale) oder ungültigen Zeiger zurückgibt. Im Fall der doppelten Ausgabe überschreibt das nachfolgende `memcpy(ibi_node, ibi_work, sizeof(*ibi_node))` einen Knoten, der sich noch im Übertragungsprozess befindet; ein ungültiger Zeiger verwandelt denselben memcpy in eine Out-of-Bounds-Schreiboperation.

Der Race Condition wird durch I3C-Busverkehr getrieben – IBIs, Hot-Joins und Controller-Rollen-Anfragen stammen von Zielgeräten am Bus, und I3C unterstützt das Hot-joining von Geräten. Ein Angreifer, der ein peripheres I3C-Gerät im chip-to-chip-Bus des Boards kontrolliert, kann hochfrequente Interrupts generieren, die zeitlich so abgestimmt sind, dass sie mit dem Freigabevorgang kollidieren. Die Ausnutzung erfordert physischen Zugriff auf den Bus und das Gewinnen eines engen Timing-Fensters; die realistischste Auswirkung ist ein Absturz oder Hängenbleiben (Denial of Service), wobei eine Speicherkorruption möglich, aber schwer zu kontrollieren ist.

Die Korrektur umschließt alle Free-Liste `sys_slist_get()`-/`sys_slist_append()`-Vorgänge in den neuen Hilfsfunktionen `ibi_work_alloc()`/`ibi_work_free()`, die jeweils durch ein `k_spinlock` (`ibi_work_lock`) geschützt sind, wodurch der Race Condition über ISR- und Thread-Kontexte hinweg geschlossen wird.

Be aware that VulDB is the high quality source for vulnerability data.

Zuständig

Zephyr

Reservieren

01.07.2026

Veröffentlichung

31.08.2026

Moderieren

akzeptiert

Eintrag

VDB-397408

CPE

bereit

EPSS

0.00000

KEV

nein

Aktivitäten

low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!