SMEP / SMAP
Was ist SMEP / SMAP?
SMEP / SMAPSMEP und SMAP sind CPU-Features, die verhindern, dass der Kernel User-Space-Seiten ausfuehrt oder liest/schreibt, und damit haeufige lokale Privilege-Escalation-Techniken blockieren.
Supervisor Mode Execution Prevention (SMEP) und Supervisor Mode Access Prevention (SMAP) sind x86_64-Erweiterungen, von Intel mit Ivy Bridge (SMEP, 2012) und Broadwell (SMAP, 2014) eingefuehrt; ARM bietet PXN und PAN. SMEP loest eine Exception aus, wenn der Kernel Code aus einer User-Mapping-Seite ausfuehrt, und stoppt ret2usr-Angriffe. SMAP faltet jeden Kernel-Zugriff (Lesen/Schreiben) auf User-Seiten, sofern EFLAGS.AC nicht temporaer via stac/clac gesetzt ist (Linux: copy_from_user-Wrapper). Beide eliminieren eine grosse Klasse von Kernel-Exploits, die zuvor in User-Memory pivotierten, und ergaenzen KASLR, kCFI, KPTI und CET.
● Beispiele
- 01
Auf einer SMEP-CPU loest ein Kernel-Exploit beim Sprung zu User-Shellcode #PF aus.
- 02
Linux copy_from_user nutzt unter SMAP stac/clac fuer User-Buffer-Zugriffe.
● Häufige Fragen
Was ist SMEP / SMAP?
SMEP und SMAP sind CPU-Features, die verhindern, dass der Kernel User-Space-Seiten ausfuehrt oder liest/schreibt, und damit haeufige lokale Privilege-Escalation-Techniken blockieren. Es gehört zur Kategorie Anwendungssicherheit der Cybersicherheit.
Was bedeutet SMEP / SMAP?
SMEP und SMAP sind CPU-Features, die verhindern, dass der Kernel User-Space-Seiten ausfuehrt oder liest/schreibt, und damit haeufige lokale Privilege-Escalation-Techniken blockieren.
Wie funktioniert SMEP / SMAP?
Supervisor Mode Execution Prevention (SMEP) und Supervisor Mode Access Prevention (SMAP) sind x86_64-Erweiterungen, von Intel mit Ivy Bridge (SMEP, 2012) und Broadwell (SMAP, 2014) eingefuehrt; ARM bietet PXN und PAN. SMEP loest eine Exception aus, wenn der Kernel Code aus einer User-Mapping-Seite ausfuehrt, und stoppt ret2usr-Angriffe. SMAP faltet jeden Kernel-Zugriff (Lesen/Schreiben) auf User-Seiten, sofern EFLAGS.AC nicht temporaer via stac/clac gesetzt ist (Linux: copy_from_user-Wrapper). Beide eliminieren eine grosse Klasse von Kernel-Exploits, die zuvor in User-Memory pivotierten, und ergaenzen KASLR, kCFI, KPTI und CET.
Wie schützt man sich gegen SMEP / SMAP?
Schutzmaßnahmen gegen SMEP / SMAP kombinieren typischerweise technische Kontrollen und operative Praktiken, wie in der Definition oben beschrieben.
Welche anderen Bezeichnungen gibt es für SMEP / SMAP?
Übliche alternative Bezeichnungen: SMEP, SMAP, PXN, PAN.
● Verwandte Begriffe
- appsec№ 581
KASLR
Kernel-ASLR (KASLR) randomisiert bei jedem Boot Kernel-Basis und Modul-Ladeadressen, sodass Angreifer keine festen Kernel-Adressen fuer lokale Rechteausweitungen verwenden koennen.
- appsec№ 217
Control-Flow Integrity
Control-Flow Integrity (CFI) beschraenkt indirekte Aufrufe und Returns auf einen vorab berechneten Satz legitimer Ziele und blockiert ROP- bzw. JOP-Angriffe.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) ist eine CPU-Funktion, die einen Hardware-Shadow-Stack mit Indirect Branch Tracking (IBT) kombiniert, um ROP-, JOP- und COP-Exploits zu stoppen.
- appsec№ 670
Speichersicherheit
Speichersicherheit (Memory Safety) ist die Eigenschaft, dass ein Programm niemals Speicher liest, schreibt oder ausfuehrt, den es nicht legitim allokiert hat, und schaltet damit ganze Schwachstellenklassen aus.
- appsec№ 303
DEP
Data Execution Prevention (auch NX oder W^X) markiert Speicherseiten als nicht ausfuehrbar, sodass Angreifer keinen in Stack oder Heap eingeschleusten Shellcode starten koennen.
- appsec№ 925
Return-Oriented Programming
Return-Oriented Programming (ROP) ist eine Exploit-Technik des Code-Reuse, die kurze, mit RET endende Instruktionsfolgen verkettet, um beliebige Berechnungen ohne neuen Code auszufuehren.