Kernel page-table isolation
Kernel page-table isolation (kurz KPTI, vormals KAISER)[1] ist ein Workaround für die Meltdown genannte Sicherheitslücke in den x86-Prozessoren von Intel. Dies wird durch eine bessere Trennung zwischen Benutzerspeicher und Kernelspeicher erreicht.[2][3] KPTI wurde in den Linux-Kernel 4.15 integriert,[4] der für Anfang 2018 erwartet wird, und außerdem auf den Linux Kernel 4.14.11 zurückportiert.[5] Für Windows und macOS[6] gibt es ähnliche Updates. KPTI schützt nicht vor der Sicherheitslücke Spectre.[7]
Hintergrund
KPTI baut auf KAISER auf, einem früheren Workaround für einen weitaus geringeren Fehler, der im Juni 2017 veröffentlicht wurde als Meltdown noch nicht bekannt war.
Ohne aktivem KPTI würde Linux, bei jeder Ausführung von Code im Benutzerspeicher (Anwendungen), auch seinen gesamten Kernelspeicher in Seitentabellen verwalten, wenngleich zugriffsgeschützt. Der Vorteil hierbei ist die ständige Verfügbarkeit der Seitentabellen, falls eine Anwendung einen Kernel-Systemaufruf macht oder ein Interrupt ausgelöst wird. Hierdurch kann ein durch Kontextwechsel entstehender Overhead (TLB-Flush, Seitentabellen-Swapping, usw.) vermieden werden.[2]
2014 wurde beim Linux Kernel Address Space Layout Randomization (KASLR) eingeführt,[8] der die Ausnützung anderer Schwachstellen im Kernel erschwert,[9] durch das Verstecken der Kerneladressen vor dem Benutzerspeicher. Trotz der Zugangsverhinderung zu diesen Speicherzuordnungen zum Kernel, hat sich die Verwundbarkeit durch einige Seitenkanalattacken bei modernen Prozessoren herausgestellt. Dadurch lässt sich die Adresse des Speichers ausspähen, was eine Umgehung von KASLR bedeutet.[3][10][11][12]
Im Januar 2018 wurde die Meltdown Sicherheitslücke bekannt, die weitaus schwerer wiegt, und nur Intel x86-Prozessoren betrifft.[7] Man fand heraus, dass auch der Speicherinhalt vom Kernelspeicher ausgespäht werden kann, nicht nur die Speicherzuordnungen, wie ursprünglich gedacht. Daraufhin wurden die KAISER-Patches zur Behebung dieses Fehlers umgewidmet (und zu KPTI umbenannt).
AMD x86-Prozessoren sind nicht von Meltdown betroffen, und benötigen daher auch keinen Workaround.[7][13] Allerdings sind AMD Prozessoren dennoch anfällig für die Umgehung von KASLR, falls KPTI nicht aktiv ist.
Umsetzung
KPTI behebt die Möglichkeit der Ausspähung, durch die vollständige Trennung der Seitentabellen des Benutzer- und Kernelspeichers. Auf Prozessoren die PCID unterstützen, kann ein Leeren des TLB vermieden werden,[2] aber auch dann kommt es zu signifikanten Performanceinbussen, insbesondere bei häufigen Systemaufrufen oder Interrupts.
Der Overhead wurde mit 0,28 % bemessen, von den damaligen KAISER-Autoren;[3] ein Linux-Entwickler bemaß ihn mit etwa 5 % für die meisten Anwendungsfälle, und bis zu 30 % in einigen Fällen, trotz der PCID-Optimierung;[2] für das Datenbankmanagmentsystem PostgreSQL waren die Auswirkungen bei Nur-Lese-Tests auf einem Intel-Skylake-Prozessor 7-17 % (oder 16-23 % ohne PCID),[14] während ein voller Benchmark 13-19 % verlor (Coffee Lake vs. Broadwell-E).[15] Redis wurde um 6-7 % verlangsamt.[15]
Siehe auch
Einzelnachweise
- ↑ Jonathan Corbet: The current state of kernel page-table isolation In: LWN.net, 20. Dezember 2017
- ↑ a b c d Jonathan Corbet: KAISER: hiding the kernel from user space In: LWN.net, 15. November 2017
- ↑ a b c Daniel Gruss, Moritz Lipp, Michael Lipp, Richard Fellner, Clémentine Maurice, Stefan Mangard: KASLR is Dead: Long Live KASLR. Engineering Secure Software and Systems 2017. 24. Juni 2017 (gruss.cc [PDF]).
- ↑ Jonathan Corbet: Kernel page-table isolation merged In: LWN.net, 20. Dezember 2017
- ↑ Greg Kroah-Hartman: Linux 4.14.11 Changelog. In: kernel.org.
- ↑ Apple has already partially implemented fix in macOS for 'KPTI' Intel CPU security flaw. In: AppleInsider. Abgerufen am 3. Januar 2018 (amerikanisches Englisch).
- ↑ a b c Devin Coldewey: Kernel panic! What are Meltdown and Spectre, the bugs affecting nearly every computer and device? In: TechCrunch, 4. Januar 2018 (englisch).
- ↑ Linux kernel 3.14, Section 1.7. Kernel address space randomization. In: kernelnewbies.org. 30. März 2014, abgerufen am 2. April 2014.
- ↑ Abhishek Bhattacharjee, Daniel Lustig: Architectural and Operating System Support for Virtual Memory. Morgan & Claypool Publishers, 2017, ISBN 978-1-62705-933-6, S. 56 (englisch, google.com).
- ↑ Yeongjin Jang, Sangho Lee, Taesoo Kim: Breaking Kernel Address Space Layout Randomization with Intel TSX. ACM, New York, NY, USA 2016, ISBN 978-1-4503-4139-4, S. 380–392, doi:10.1145/2976749.2978321 (oregonstate.edu [PDF]).
- ↑ Daniel Gruss, Clémentine Maurice, Anders Fogh, Moritz Lipp, Stefan Mangard: Prefetch Side-Channel Attacks: Bypassing SMAP and Kernel ASLR. ACM, New York, NY, USA 2016, ISBN 978-1-4503-4139-4, S. 368–379, doi:10.1145/2976749.2978356 (gruss.cc [PDF]).
- ↑ R. Hund, C. Willems, T. Holz: Practical Timing Side Channel Attacks against Kernel Space ASLR. Mai 2013, S. 191–205, doi:10.1109/sp.2013.23 (ieee-security.org [PDF]).
- ↑ An Update on AMD Processor Security In: AMD, 4. Januar 2018
- ↑ Andres Freund: heads up: Fix for intel hardware bug will lead to performance regressions. In: PostgreSQL development mailing list (pgsql-hackers). 2. Januar 2018 .
- ↑ a b Michael Larabel: Initial Benchmarks Of The Performance Impact Resulting From Linux's x86 Security Changes. In: Phoronix. 2. Januar 2018 .