Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
spectre-attack — Esempio di utilizzo dell'exploit "Spectre" divulgato (CVE-2017-5753 e CVE-2017-5715) | Kitploit
Strumenti/GitHubGitHub/eugnis/spectre-attack
Memory ForensicsAnalisi delle VulnerabilitàExploitSicurezza HardwareApprendimento e FormazioneBinary Exploitation
GitHubeugnis/spectre-attack

spectre-attack

Esempio di utilizzo dell'exploit "Spectre" divulgato (CVE-2017-5753 e CVE-2017-5715)

Vedi Repository
7711678 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Esempio di attacco Spectre

Esempio di utilizzo dell'exploit "Spectre" rivelato il 2 gennaio 2018 (CVE-2017-5753 e CVE-2017-5715)

Spectre rompe l'isolamento tra diverse applicazioni. Consente a un attaccante di indurre programmi privi di errori, che seguono le best practice, a far trapelare i propri segreti. In effetti, i controlli di sicurezza di tali best practice aumentano la superficie d'attacco e possono rendere le applicazioni più vulnerabili a Spectre.

  • Articolo su Spectre - Articolo su Spectre e codice sorgente

Linguaggio

C, usa le librerie:

  • stdio.h
  • stdint.h
  • intrin.h - per rdtscp e clflush

Cosa fa l'esempio?

Mettiamo il testo "Le parole magiche sono Squeamish Ossifrage." in memoria e poi proviamo a leggerlo usando l'exploit. Se il sistema è vulnerabile, vedrai lo stesso testo nell'output, letto dalla memoria.


In questo codice, se le istruzioni compilate in victim_function() venissero eseguite in rigoroso ordine di programma, la funzione leggerebbe solo da array1[0..15] poiché array1 ha dimensione 16. Tuttavia, quando eseguita in modo speculativo, sono possibili letture fuori dai limiti. La funzione readMemoryByte() effettua diverse chiamate di addestramento a victim_function() per far sì che il predittore di salto si aspetti valori validi per x, quindi chiama con una x fuori dai limiti. Il salto condizionale viene previsto in modo errato e l'esecuzione speculativa che ne consegue legge un byte segreto usando la x fuori dai limiti. Il codice speculativo legge quindi da array2[array1[x] * 512], facendo trapelare il valore di array1[x] nello stato della cache. Per completare l'attacco, viene utilizzato un semplice flush+probe per identificare quale linea di cache in array2 è stata caricata, rivelando il contenuto della memoria. L'attacco viene ripetuto più volte, quindi anche se il byte target inizialmente non è in cache, la prima iterazione lo porterà nella cache.

Il codice non ottimizzato legge circa 10KB/secondo su un i7 Surface Pro 3.

Compilazione

Con GCC

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

Con Visual Studio

Crea un nuovo progetto vuoto e aggiungi Source.c, quindi fai clic su Build.

Esecuzione

Test

.\spectre.out senza parametri.

Lettura da indirizzo

.\spectre.out {address} {length} con parametri:

  • address - indirizzo del puntatore alla char * vittima
  • length - lunghezza della char *

Fonti

  • Informazioni sugli exploit Spectre
  • CVE-2017-5753 - Variante 1: bypass del controllo dei limiti
  • CVE-2017-5715 - Variante 2: iniezione della destinazione del salto
  • Elenco CPU Intel interessate
Scarica lo strumento