Es wurden Patches eingeführt, um Linux-Kernel-Stack-Adressen für Systemaufrufe zufällig zu sortieren

Kees Cook, ehemaliger Chefsystemadministrator von kernel.org und Leiter des Ubuntu-Sicherheitsteams, der jetzt bei Google an der Sicherung von Android und ChromeOS arbeitet, hat eine Reihe von Patches veröffentlicht, um Offsets im Kernel-Stack bei der Verarbeitung von Systemaufrufen zufällig zu verteilen. Patches verbessern die Kernel-Sicherheit, indem sie die Stapelplatzierung ändern, wodurch Angriffe auf den Stapel wesentlich schwieriger und weniger erfolgreich werden. Die erste Implementierung unterstützt ARM64- und x86/x86_64-Prozessoren.

Die ursprüngliche Idee für den Patch stammt vom PaX RANDKSTACK-Projekt. Im Jahr 2019 versuchte Elena Reshetova, eine Ingenieurin von Intel, eine Implementierung dieser Idee zu erstellen, die für die Aufnahme in den Haupt-Linux-Kernel geeignet ist. Später ergriff Kees Cook die Initiative und präsentierte eine für die Hauptversion des Kernels geeignete Implementierung. Die Patches sollen als Teil der Version 5.13 enthalten sein. Der Modus ist standardmäßig deaktiviert. Um es zu aktivieren, werden der Kernel-Befehlszeilenparameter „randomize_kstack_offset=on/off“ und die Einstellung CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT vorgeschlagen. Der Aufwand für die Aktivierung des Modus wird auf etwa 1 % Leistungsverlust geschätzt.

Der Kern des vorgeschlagenen Schutzes besteht darin, für jeden Systemaufruf einen zufälligen Stack-Offset zu wählen, was es schwierig macht, das Stack-Layout im Speicher zu bestimmen, selbst nach dem Empfang von Adressdaten, da der nächste Systemaufruf die Basisadresse des Stacks ändert. Im Gegensatz zur PaX RANDKSTACK-Implementierung wird in den zur Aufnahme in den Kernel vorgeschlagenen Patches die Randomisierung nicht in der Anfangsphase (cpu_current_top_of_stack) durchgeführt, sondern nach dem Festlegen der pt_regs-Struktur, was es unmöglich macht, ptrace-basierte Methoden zur Bestimmung des randomisierten Offsets zu verwenden während eines lang andauernden Systemaufrufs.

Source: opennet.ru

Kommentar hinzufügen