25 Schwachstellen in RTOS Zephyr, darunter solche, die über ein ICMP-Paket ausgenutzt werden

Forscher der NCC Group veröffentlicht haben Kostenlose Projektauditergebnisse Zephyr, Entwicklung ein Echtzeitbetriebssystem (RTOS), das darauf abzielt, Geräte auszurüsten, die dem Internet-of-Things-Konzept (IoT, Internet of Things) entsprechen. Bei der Prüfung wurde es aufgedeckt 25 Schwachstellen in Zephyr und 1 Schwachstelle in MCUboot. Zephyr wird unter Beteiligung von Intel-Unternehmen entwickelt.

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 MCUboot, bei dem eine harmlose Schwachstelle gefunden wurde,
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 упоминается Entwicklung mit Blick auf die Sicherheit. Genehmigtdass alle Phasen der Entwicklung obligatorische Phasen zur Bestätigung der Sicherheit des Codes durchlaufen: Fuzzing-Tests, statische Analyse, Penetrationstests, Codeüberprüfung, Analyse der Backdoor-Implementierung und Bedrohungsmodellierung.

Source: opennet.ru

Kommentar hinzufügen