Was ist Shadow Stack?

Mechanismus, der bei jedem Funktionsaufruf eine Kopie der Rücksprungadresse auch auf einem separaten Stack ablegt, den normale Schreibzugriffe nicht verändern können, und sie beim Rücksprung mit dem Wert auf dem normalen Stack vergleicht, um Manipulationen der Rücksprungadresse zu erkennen. Bei Abweichung wird eine Ausnahme ausgelöst und die Ausführung gestoppt. Hardwareseitig unterstützt ihn unter anderem Intel CET (Control-flow Enforcement Technology); er erschwert Angriffe wie ROP, die Pufferüberläufe auf dem Stack ausnutzen.

Japanische Bezeichnung: シャドウスタック

„Shadow Stack“ kommt in 2 Übungsfragen aus 1 Themen vor, z. B. Aktuelle Entwicklungen der Hardwaresicherheit.

Fachgebiet: Aktuelle Entwicklungen der Hardwaresicherheit

Jetzt üben: Fragen zu Shadow Stack

Welche Beschreibung des hardwaregestützten Shadow Stack, wie er in Intel CET (Control-flow Enforcement Technology) und anderswo eingesetzt wird, ist richtig?

  1. ADer Stack-Inhalt wird in regelmäßigen Abständen in nichtflüchtigem Speicher gesichert, und bei einem Absturz des Programms wird die Ausführung von dort fortgesetzt
  2. BLokale Variablen von Funktionen werden in einem vom normalen Stack getrennten schnellen Speicher abgelegt, um Cache-Misses zu verringern und Funktionsaufrufe zu beschleunigen
  3. CBeim Aufruf einer Funktion wird eine Kopie der Rücksprungadresse auch auf einem separaten Stack abgelegt, den normale Schreibzugriffe nicht ändern können, und beim Rücksprung werden beide verglichen
Antwort und Erläuterung anzeigen

Antwort: C. Beim Aufruf einer Funktion wird eine Kopie der Rücksprungadresse auch auf einem separaten Stack abgelegt, den normale Schreibzugriffe nicht ändern können, und beim Rücksprung werden beide verglichen

Wird eine Rücksprungadresse etwa durch einen Pufferüberlauf auf dem Stack überschrieben, springt die Ausführung beim Rücksprung aus der Funktion an eine vom Angreifer gewählte Stelle. Beim Shadow Stack legt der call-Befehl die Rücksprungadresse sowohl auf den normalen Stack als auch auf den Shadow Stack, und der ret-Befehl vergleicht beide. Shadow-Stack-Seiten sind ein besonderer Seitentyp, den gewöhnliche Store-Befehle nicht beschreiben können; ein Angreifer, der den normalen Stack überschrieben hat, kann die Kopie daher nicht ändern, und bei Abweichung wird eine Ausnahme ausgelöst und die Ausführung gestoppt.

„Shadow Stack“ in den Erläuterungen

Fragen mit „Shadow Stack“ (2)

  1. Welche Beschreibung des hardwaregestützten Shadow Stack, wie er in Intel CET (Control-flow Enforcement Technology) und anderswo eingesetzt wird, ist richtig?
  2. Welche Zuordnung ist bei Hardwarefunktionen, die die Kontrollflussintegrität unterstützen, richtig: was Rücksprünge aus Funktionen schützt und was indirekte Aufrufe und Sprünge, etwa über Funktionszeiger, schützt?

Verwandte Begriffe

Rücksprungadresse Pufferüberlauf (Buffer Overflow) Kontrollflussintegrität (Control-Flow Integrity) Funktionszeiger Pointer Authentication (PAC) KPTI (Kernel Page-Table Isolation) Meltdown IOMMU DMA (Direct Memory Access) Arm CCA (Confidential Compute Architecture)

Zur Glossarübersicht