Forscher der NCC Group
Insgesamt wurden 6 Schwachstellen im Netzwerk-Stack, 4 im Kernel, 2 in der Befehls-Shell, 5 in Systemaufruf-Handlern, 5 im USB-Subsystem und 3 im Firmware-Update-Mechanismus identifiziert. Zwei Probleme werden als kritisch eingestuft, zwei als hoch, 9 als mittel, 9 als niedrig und 4 als zu berücksichtigen. Kritische Probleme betreffen den IPv4-Stack und den MQTT-Parser, gefährliche betreffen den USB-Massenspeicher und die USB-DFU-Treiber. Zum Zeitpunkt der Offenlegung der Informationen waren lediglich Fixes für 15 der gefährlichsten Schwachstellen vorbereitet; Probleme, die zu Denial-of-Service führten oder mit Fehlern in zusätzlichen Kernel-Schutzmechanismen verbunden waren, blieben unkorrigiert.
Im IPv4-Stack der Plattform wurde eine aus der Ferne ausnutzbare Schwachstelle identifiziert, die bei der Verarbeitung von auf bestimmte Weise modifizierten ICMP-Paketen zu Speicherbeschädigungen führt. Ein weiteres schwerwiegendes Problem wurde im MQTT-Protokollparser gefunden, das durch eine unzureichende Überprüfung der Header-Feldlänge verursacht wird und zur Remote-Codeausführung führen kann. Weniger schwerwiegende Denial-of-Service-Probleme treten im IPv6-Stack und in der CoAP-Protokollimplementierung auf.
Andere Probleme können lokal ausgenutzt werden, um einen Denial-of-Service auszulösen oder Code auf Kernel-Ebene auszuführen. Die meisten dieser Schwachstellen hängen mit der fehlenden ordnungsgemäßen Prüfung der Systemaufrufargumente zusammen und können dazu führen, dass in beliebige Bereiche des Kernel-Speichers geschrieben und daraus gelesen wird. Die Probleme erstrecken sich auch auf den Systemaufrufverarbeitungscode selbst – der Aufruf einer negativen Systemaufrufnummer führt zu einem Ganzzahlüberlauf. Der Kernel erkannte außerdem Probleme bei der Implementierung des ASLR-Schutzes (Adressraum-Randomisierung) und dem Mechanismus zum Setzen von Canary-Marks auf dem Stapel, wodurch diese Mechanismen unwirksam wurden.
Viele Probleme betreffen den USB-Stack und einzelne Treiber. Beispielsweise können Probleme im USB-Massenspeicher einen Pufferüberlauf verursachen und Code auf Kernel-Ebene ausführen, wenn das Gerät an einen vom Angreifer kontrollierten USB-Host angeschlossen ist. Eine Schwachstelle in USB DFU, einem Treiber zum Laden neuer Firmware über USB, ermöglicht es Ihnen, ein geändertes Firmware-Image in den internen Flash des Mikrocontrollers zu laden, ohne Verschlüsselung zu verwenden und den sicheren Startmodus mit Überprüfung von Komponenten mithilfe einer digitalen Signatur zu umgehen. Zusätzlich wurde der offene Bootloader-Code untersucht
Dies kann bei Verwendung des SMP-Protokolls (Simple Management Protocol) über den UART zu einem Pufferüberlauf führen.
Denken Sie daran, dass in Zephyr nur ein globaler gemeinsamer virtueller Adressraum (SASOS, Single Address Space Operating System) für alle Prozesse bereitgestellt wird. Anwendungsspezifischer Code wird mit einem anwendungsspezifischen Kernel kombiniert, um eine monolithische ausführbare Datei zu bilden, die auf bestimmter Hardware geladen und ausgeführt werden kann. Alle Systemressourcen werden zur Kompilierzeit bestimmt, wodurch die Codegröße reduziert und die Leistung erhöht wird. Das Systemabbild kann nur die Kernelfunktionen enthalten, die zum Ausführen der Anwendung erforderlich sind.
Es ist bemerkenswert, dass einer der Hauptvorteile von Zephyr
Source: opennet.ru