CVE-2026-87041 in Zephyrinfo

Zusammenfassung

von VulDB • 04.11.2026

Der Verifier für die RTIO-Übermittlungs-Warteschlange rtio_vrfy_sqe() in subsys/rtio/rtio_syscalls.c (in subsys/rtio/rtio_handlers.c vor v4.3.0) akkumulierte die Ergebnisse von K_SYSCALL_MEMORY() mit &= in sein valid_sqe-Flag. Diese Makro-Funktion gibt bei einem Fehler einen Wert ungleich Null zurück (sie basiert auf K_SYSCALL_VERIFY_MSG(), das !(expr) ergibt), sodass jede Puffer-Berechtigungsprüfung das Gegenteil ihres Ergebnisses beitrug. Eine Übermittlung, deren tx.buf-, rx.buf- oder txrx.tx_buf/txrx.rx_buf-Zeiger für den aufrufenden Thread nicht zugänglich war, wurde akzeptiert, während ein legitimer, vom Thread besitzter Puffer dazu führte, dass der aufrufende Thread mit einem Kernel-Oops beendet wurde.

Der Verifier wird im Auftrag des Systemaufrufs rtio_sqe_copy_in_get_handles() ausgeführt (der auch über den Inline-Wrapper rtio_sqe_copy_in() erreicht werden kann), sodass er direkt von nicht vertrauenswürdigen Benutzerraum-Eingaben auf jedem Image angetrieben wird, das mit CONFIG_USERSPACE erstellt wurde. Ein Benutzerthread, dem ein RTIO-Kontext und ein rtio_iodev-Objekt gewährt wurden – die beabsichtigte Nutzung der RTIO-Benutzerraumunterstützung, eingerichtet über rtio_access_grant() –, kann eine SQE (Submission Queue Entry) übermitteln, deren Pufferzeiger und -länge beliebigen Kernel-Speicher benennen; die Objektprüfung auf sqe->iodev bleibt unberührt und besteht weiterhin, und der manipulierte SQE wird unverändert an den Bus-Treiber weitergeleitet.

Downstream-Konsumenten dereferenzieren den Zeiger mit Supervisor-Privilegien. Die generischen RTIO-Fallback-Handler für I2C und I3C (drivers/i2c/i2c_rtio_default.c, drivers/i3c/i3c_rtio_default.c) kopieren sqe.rx.buf/sqe.tx.buf in struct i2c_msg und rufen i2c_transfer() auf, und die herstellerspezifischen SPI/I2C-RTIO-Treiber verhalten sich äquivalent. Eine RTIO_OP_RX-Übermittlung schreibt daher Peripheriedaten in Kernel-Speicher nach Wahl des Angreifers (willkürlicher Kernel-Schreibzugriff), eine RTIO_OP_TX-Übermittlung taktet Kernel-Speicher über den Bus aus (Kernel-Speicheraufdeckung) und ein Zeiger auf nicht zugewiesenen Speicher verursacht einen Kernel-Fault. Dies stellt eine vollständige Umgehung der durch CONFIG_USERSPACE erzwungenen Isolationsgrenze des Benutzerraums dar.

Der Fehler wurde jahrelang maskiert, da die im Baum befindlichen Benutzermodus-RTIO-Tests nur RTIO_OP_NOP und mempool-gestützte Lesezugriffe ausüben, von denen keiner die betroffenen Prüfungen erreicht. Die Korrektur negiert jedes K_SYSCALL_MEMORY()-Ergebnis und validiert zusätzlich den TXRX-Sende-Puffer schreibgeschützt, was mit dem Verhalten der SPI-, I2C- und I3C-Handler übereinstimmt.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Zephyr

Reservieren

08.09.2026

Veröffentlichung

04.11.2026

Moderieren

akzeptiert

Eintrag

VDB-430967

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Might our Artificial Intelligence support you?

Check our Alexa App!