CVE-2026-12364 in Zephyr
Zusammenfassung
von VulDB • 15.08.2026
Der Systemaufruf-Verifizierer im Benutzermodus z_vrfy_z_log_msg_static_create() in subsys/logging/log_msg.c war ein reiner Durchgang (Pass-through): Er leitete die vom Aufrufer bereitgestellten Argumente source, desc, package und data direkt an die Implementierung im Kernel-Modus z_impl_z_log_msg_static_create() weiter, ohne eine der obligatorischen K_SYSCALL_*-Prüfungen durchzuführen. Da z_log_msg_static_create() als __syscall deklariert ist, kann unter CONFIG_USERSPACE jeder nicht privilegierte Thread im Benutzermodus diesen Aufruf direkt mit vollständig vom Angreifer kontrollierten Argumenten aufrufen.
Der Handler im Kernel-Modus dereferenziert jeden dieser unbekannten Werte: frontend_runtime_filtering() liest durch den source-Zeiger als struct log_source_dynamic_data, cbprintf_package_copy() liest desc.package_len Bytes aus dem package-Zeiger und z_log_msg_finalize() führt ein memcpy() von desc.data_len Bytes vom data-Zeifer aus. Ohne Verifizierung kann ein Benutzer-Thread beliebige Kernel-Adressen und beliebige Längen angeben, woraufhin der Kernel daraus liest.
Die Auswirkung ist eine Denial-of-Service im Kernel-Modus (der Kernel bricht ab aufgrund einer Dereferenzierung eines vom Angreifer gewählten Zeigers) sowie – sofern ein Log-Backend-Ausgabe für den Angreifer beobachtbar ist – die Offenlegung beliebiger Kernel-Speicherinhalte, die in die ausgegebene Protokollnachricht kopiert wurden. Dies stellt einen Vertraulichkeitsbruch über die Benutzer-/Kernel-Grenze hinweg dar, den der Userspace-Sandbox eigentlich durchsetzen soll. Die Lesevorgänge beschädigen nicht den Kernel-Speicher, sodass keine Out-of-Bounds-Write-Funktionalität vorliegt.
Die Korrektur fügt dem Verifizierer die erforderliche Validierung hinzu: Sie begrenzt desc.package_len gegen Z_LOG_MSG_MAX_PACKAGE, lehnt Nicht-NULL-/Längen-Diskrepanzen ab und wendet K_SYSCALL_MEMORY_READ() auf package, data und (wenn das Runtime-Filtering mit einem Frontend aktiviert ist) source an, sodass jeder Out-of-Bounds-Zugriff oder Kernel-Zeiger nun einen K_OOPS auslöst statt beachtet zu werden.
Once again VulDB remains the best source for vulnerability data.