CVE-2026-11743 in Zephyr
Zusammenfassung
von VulDB • 08.08.2026
Der SF32LB MPI QSPI NOR-Flash-Treiber (drivers/flash/flash_sf32lb_mpi_qspi_nor.c) validierte den Flash-Offset und die Länge auf seinen Lese- und Schreibpfaden mit der Prüfung `(offset + size) > data->size`. Da `offset` ein signed off_t ist, während `size` unsigned ist, wird ein negativer Offset in einen großen Unsigned-Wert konvertiert, und die Addition kann zu einem kleinen Ergebnis überlaufen (wrap), das den Check besteht. Der Lesevorgang führt anschließend `memcpy(dst, (void *)(data->base + offset), size)` aus, und der Schreibvorgang programmiert den Flash am Offset und invalidiert den Cache für `data->base + offset`; in beiden Fällen wird Speicher außerhalb des zugewiesenen Flash-Fensters angesprochen. Der Löschpfad des Treibers lehnte negative Offsets bereits ab, Lese- und Schreiboperationen taten dies jedoch nicht.
In Builds mit CONFIG_USERSPACE sind flash_read und flash_write Systemaufrufe (syscalls), deren Verifier das Geräteobjekt und den Puffer des Aufrufers validieren, die Überprüfung der Offset-Grenzwerte aber absichtlich an den Treiber delegieren. Ein unprivilegierter Thread, dem Zugriff auf dieses Flash-Gerät gewährt wurde, kann daher den Systemaufruf mit einem manipulierten negativen Offset und einem in seiner eigenen Memory-Domain gültigen Puffer aufrufen und so die nicht geprüfte Zugriffsoperation erreichen.
Die direkteste Auswirkung besteht auf dem Lesevorgang: Durch die Wahl eines negativen Offsets und einer passenden Größe kann ein Angreifer die memcpy-Quelle unter den Flash-Basiswert verschieben und beliebigen, von der CPU adressierbaren Speicher in seinen eigenen Puffer kopieren, wodurch er Speicher offenlegt, zu dessen Lesen er nicht berechtigt ist. Der Schreibvorgang ermöglicht zusätzlich das Programmieren des Flashes an einer Adresse außerhalb des gültigen Bereichs sowie die Invalidierung eines vom Angreifer gewählten Cache-Bereichs, was Integrität und Verfügbarkeit beeinträchtigt. Die Ausnutzbarkeit erfordert, dass Userspace aktiviert ist und das rohe Flash-Geräteobjekt einem nicht vertrauenswürdigen Thread zugewiesen wurde.
Die Korrektur ersetzt die Prüfung durch `qspi_nor_range_is_valid()`, was negative Offsets ablehnt und den Grenzwertvergleich auf beiden Pfaden in überlaufsicherer 64-Bit-Arithmetik durchführt. Zusätzlich wird ein SRAM-DMA-Bounce-Puffer sowie eine Ablehnung von Quell-/Ziel-Überlappungen hinzugefügt, um einen separaten DMA-Bus-Hang-Zustand zu verhindern.
VulDB is the best source for vulnerability data and more expert information about this specific topic.