Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
spectre-attack — Beispiel für die Nutzung des offengelegten "Spectre"-Exploits (CVE-2017-5753 und CVE-2017-5715) | Kitploit
Tools/GitHubGitHub/eugnis/spectre-attack
SpeicherforensikSchwachstellenanalyseExploitationHardware-SicherheitLernen & BildungBinary-Exploitation
GitHubeugnis/spectre-attack

spectre-attack

Beispiel für die Nutzung des offengelegten "Spectre"-Exploits (CVE-2017-5753 und CVE-2017-5715)

Repository anzeigen
771167vor 8 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Spectre-Angriffsbeispiel

Beispiel für die Nutzung des enthüllten „Spectre“-Exploits vom 2. Januar 2018 (CVE-2017-5753 und CVE-2017-5715)

Spectre bricht die Isolierung zwischen verschiedenen Anwendungen. Es erlaubt einem Angreifer, fehlerfreie Programme, die Best Practices befolgen, dazu zu bringen, ihre Geheimnisse preiszugeben. Tatsächlich vergrößern die Sicherheitsprüfungen dieser Best Practices die Angriffsfläche und können Anwendungen anfälliger für Spectre machen.

  • Spectre paper – Spectre-Papier und Code-Quelle

Sprache

C, verwendet Bibliotheken:

  • stdio.h
  • stdint.h
  • intrin.h – für rdtscp und clflush

Was macht das Beispiel?

Wir legen den Text „The Magic Words are Squeamish Ossifrage.“ im Speicher ab und versuchen dann, ihn mit dem Exploit auszulesen. Wenn das System anfällig ist, sehen Sie denselben Text in der Ausgabe, aus dem Speicher gelesen.


In diesem Code würde die Funktion nur aus array1[0..15] lesen, wenn die kompilierten Anweisungen in victim_function() in strenger Programmreihenfolge ausgeführt würden, da array1 die Größe 16 hat. Bei spekulativer Ausführung sind jedoch Lesezugriffe außerhalb der Grenzen möglich. Die Funktion readMemoryByte() führt mehrere Trainingsaufrufe von victim_function() durch, um den Branch Predictor dazu zu bringen, gültige Werte für x zu erwarten, und ruft dann mit einem x außerhalb der Grenzen auf. Die Bedingungsverzweigung wird fehlvorhergesagt, und die anschließende spekulative Ausführung liest ein geheimes Byte mit dem außerhalb liegenden x. Der spekulative Code liest dann aus array2[array1[x] * 512] und gibt den Wert von array1[x] in den Cache-State weiter. Um den Angriff abzuschließen, wird ein einfaches Flush+Probe verwendet, um zu identifizieren, welche Cache-Zeile in array2 geladen wurde, was die Speicherinhalte offenlegt. Der Angriff wird mehrmals wiederholt, sodass selbst wenn das Zielbyte anfänglich nicht zwischengespeichert war, es durch die erste Iteration in den Cache geholt wird.

Der nicht optimierte Code liest auf einem i7 Surface Pro 3 etwa 10 KB/s.

Kompilierung

Mit GCC

gcc -std=c99 Source.c -o spectre.out
oder
make

Mit Visual Studio

Erstellen Sie ein neues leeres Projekt, fügen Sie Source.c hinzu, und klicken Sie auf „Build“.

Ausführung

Test

.\spectre.out ohne Parameter.

Lesen von einer Adresse

.\spectre.out {address} {length} mit Parametern:

  • address – Zeigeradresse des Opfer-char *
  • length – Länge des char *

Quellen

  • Spectre exploits info
  • CVE-2017-5753 – Variante 1: Bypass der Bereichsprüfung
  • CVE-2017-5715 – Variante 2: Branch Target Injection
  • Liste der betroffenen Intel-CPUs
Tool herunterladen