Forscher von NCC Group Ergebnisse des Audits des Open-Source-Projekts , ein Echtzeitbetriebssystem (RTOS), das darauf abzielt, Geräte entsprechend dem Konzept des "Internet der Dinge" (IoT, Internet of Things) auszustatten. Im Rahmen des Audits wurden festgestellt in Zephyr und 1 Schwachstelle in MCUboot. Die Entwicklung von Zephyr erfolgt in Zusammenarbeit mit Unternehmen wie Intel.
Insgesamt wurden 6 Schwachstellen im Netzwerk-Stack, 4 im Kernel, 2 in der Shell, 5 in den Systemaufruf-Handlern, 5 im USB-Subsystem und 3 im Firmware-Update-Mechanismus gefunden. Zwei Probleme erhielten eine kritische Gefahrenstufe, zwei eine hohe, 9 eine moderate, 9 eine niedrige und 4 zur Berücksichtigung. Kritische Probleme betreffen den IPv4-Stack und den MQTT-Parser, gefährliche die Treiber für USB-Massenspeicher und USB DFU. Zum Zeitpunkt der Offenlegung wurden nur für 15 der gefährlichsten Schwachstellen Patches vorbereitet, während die Probleme, die zu einem Denial of Service führen oder mit Mängeln in den Kern-Sicherheitsmechanismen verbunden sind, noch ungepatcht bleiben.
Im IPv4-Stack der Plattform wurde eine aus der Ferne ausnutzbare Schwachstelle entdeckt, die zu Speicherbeschädigungen führt, wenn bestimmten modifizierten ICMP-Paketen verarbeitet werden. Ein weiteres ernstes Problem wurde im MQTT-Protokollparser gefunden, verursacht durch unzureichende Längenprüfungen der Felder im Header, was zu remote Code Execution führen kann. Weniger gefährliche Probleme, die zu einem Denial of Service führen, wurden im IPv6-Stack und in der CoAP-Protokollimplementierung gefunden.
Die übrigen Probleme können lokal ausgenutzt werden, um einen Denial of Service zu verursachen oder Kerncode auszuführen. Der Großteil dieser Schwachstellen hängt mit unzureichenden Prüfungen der Argumente von Systemaufrufen zusammen und kann zu der Lese- und Schreibzugriff auf beliebige Bereiche des Kernel-Speichers führen. Die Probleme betreffen auch den Code, der Systemaufrufe bearbeitet – der Zugriff auf eine negative Systemaufrufnummer führt zu einer Ganzzahlüberlauf. Im Kernel wurden ebenfalls Probleme mit der ASLR-Implementierung (Address Space Layout Randomization) und dem Mechanismus zur Setzung von Canary-Werten im Stack gefunden, wodurch diese Mechanismen ineffektiv werden.
Viele Probleme betreffen den USB-Stack und spezifische Treiber. Beispielsweise kann ein Problem im USB-Massenspeicher zu einem Buffer Overflow führen und Code im Kernel ausführen, wenn ein Gerät an einen vom Angreifer kontrollierten USB-Host angeschlossen wird. Eine Schwachstelle im USB DFU, einem Treiber zum Laden neuer Firmware über USB, erlaubt das Laden eines modifizierten Firmware-Images in den internen Flash des Mikrocontrollers ohne Verschlüsselung und umgeht den sicheren Bootmodus zur Überprüfung von Komponenten durch digitale Signaturen. Zusätzlich wurde der Code des offenen Bootloaders , in dem eine nicht gefährliche Schwachstelle gefunden wurde,
die zu einem Buffer Overflow beim Einsatz des SMP-Protokolls (Simple Management Protocol) über UART führen kann.
Erinnern wir uns, dass für alle Prozesse in Zephyr nur ein globaler, gemeinsam genutzter virtueller Adressraum bereitgestellt wird (SASOS, Single Address Space Operating System). Anwendungs-spezifischer Code wird mit einem anwendungsspezifischen Kernel kombiniert und bildet eine monolithische ausführbare Datei zum Laden und Ausführen auf bestimmter Hardware. Alle Systemressourcen werden zur Kompilierungszeit definiert, was die Code-Größe reduziert und die Leistung erhöht. In das System-Image können nur die Funktionen des Kernels aufgenommen werden, die zur Ausführung der Anwendung erforderlich sind.
Bemerkenswert ist, dass eines der Hauptmerkmale von Zephyr die sicherheitsbewusste Entwicklung ist. , sodass alle Phasen der Entwicklung obligatorische Sicherheitsbestätigungsstufen durchlaufen: Fuzzing-Tests, statische Analyse, Penetrationstests, Code-Überprüfungen, Backdoor-Analyse und Bedrohungsmodellierung.
Quelle: opennet.ru
