Kees Cook, ehemaliger Hauptsystemadministrator von kernel.org und Leiter des Ubuntu Security Teams, der nun bei Google tätig ist und sich mit der Sicherheit von Android und ChromeOS beschäftigt, hat eine Reihe von Patches veröffentlicht, die eine Randomisierung der Stack-Verschiebungen bei der Verarbeitung von Systemaufrufen implementieren. Diese Patches erhöhen die Sicherheit des Kernels, indem sie die Platzierung des Stacks verändern, was Angriffe auf den Stack erheblich schwieriger und weniger erfolgreich macht. Die ursprüngliche Implementierung unterstützt die Prozessoren ARM64 und x86/x86_64.
Die ursprüngliche Idee des Patches stammt von dem Projekt PaX RANDKSTACK. Im Jahr 2019 versuchte Elena Reshetova, Ingenieurin bei Intel, eine Umsetzung dieser Idee zu entwickeln, die für die Integration in den Hauptkern von Linux geeignet ist. Später übernahm Kees Cook die Initiative und stellte eine für die Hauptversion des Kernels geeignete Implementierung vor. Die Patches sollen in die Veröffentlichung 5.13 aufgenommen werden. Der Modus wird standardmäßig deaktiviert sein. Zur Aktivierung werden der Kernel-Befehlszeilenparameter „randomize_kstack_offset=on/off“ und die Einstellung CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT vorgeschlagen. Die overhead-Kosten bei Aktivierung des Modus werden auf etwa 1% Performanceverlust geschätzt.
Der Kern des vorgeschlagenen Schutzes liegt in der Auswahl einer zufälligen Stack-Verschiebung bei jedem Systemaufruf, was die Bestimmung der Stack-Anordnung im Speicher erschwert, selbst wenn Informationen über die Adressen vorliegen, da sich die Basisadresse des Stacks beim nächsten Systemaufruf ändert. Im Gegensatz zur PaX RANDKSTACK-Implementierung wird die Randomisierung in den vorgeschlagenen Kernel-Patches nicht in der Anfangsphase (cpu_current_top_of_stack) durchgeführt, sondern nach der Festlegung der pt_regs-Struktur, was die Verwendung von ptrace-basierten Methoden zur Bestimmung der randomisierten Verschiebung während eines lang laufenden Systemaufrufs unmöglich macht.
Quelle: opennet.ru
