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
