Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
spectre-attack — Exemple d'utilisation de l'exploit « Spectre » révélé (CVE-2017-5753 et CVE-2017-5715) | Kitploit
Outils/GitHubGitHub/eugnis/spectre-attack
Criminalistique MémoireAnalyse des VulnérabilitésExploitationSécurité MatérielleApprentissage et ÉducationExploitation de Binaires
GitHubeugnis/spectre-attack

spectre-attack

Exemple d'utilisation de l'exploit « Spectre » révélé (CVE-2017-5753 et CVE-2017-5715)

Voir le dépôt
771167il y a 8 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exemple d'attaque Spectre

Exemple d'utilisation de l'exploit « Spectre » révélé le 2 janvier 2018 (CVE-2017-5753 et CVE-2017-5715)

Spectre brise l'isolation entre différentes applications. Il permet à un attaquant de tromper des programmes sans erreur, qui suivent les meilleures pratiques, en leur faisant divulguer leurs secrets. En fait, les vérifications de sécurité de ces meilleures pratiques augmentent la surface d'attaque et peuvent rendre les applications plus vulnérables à Spectre.

  • Article sur Spectre - Article sur Spectre et code source

Langage

C, utilise les bibliothèques :

  • stdio.h
  • stdint.h
  • intrin.h - pour rdtscp et clflush

Que fait l'exemple ?

Nous plaçons le texte « The Magic Words are Squeamish Ossifrage. » en mémoire, puis nous essayons de le lire à l'aide de l'exploit. Si le système est vulnérable, vous verrez le même texte en sortie, lu depuis la mémoire.


Dans ce code, si les instructions compilées dans victim_function() étaient exécutées dans un ordre strictement séquentiel, la fonction ne lirait que dans array1[0..15] puisque la taille d'array1 = 16. Cependant, lorsqu'elle est exécutée de manière spéculative, des lectures hors limites sont possibles. La fonction readMemoryByte() effectue plusieurs appels d'entraînement à victim_function() pour que le prédicteur de branche s'attende à des valeurs valides pour x, puis l'appelle avec un x hors limites. Le branchement conditionnel fait une mauvaise prédiction, et l'exécution spéculative qui s'ensuit lit un octet secret en utilisant le x hors limites. Le code spéculatif lit ensuite array2[array1[x] * 512], faisant fuir la valeur de array1[x] dans l'état du cache. Pour terminer l'attaque, un simple flush+probe est utilisé pour identifier quelle ligne de cache dans array2 a été chargée, révélant le contenu de la mémoire. L'attaque est répétée plusieurs fois ; ainsi, même si l'octet cible n'était pas initialement dans le cache, la première itération l'y placera.

Le code non optimisé lit environ 10 Ko/s sur un i7 Surface Pro 3.

Compilation

Avec GCC

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

Avec Visual Studio

Créez un nouveau projet vide, ajoutez Source.c, puis cliquez sur Build.

Exécution

Test

.\spectre.out sans paramètres.

Lecture depuis une adresse

.\spectre.out {adresse} {longueur} avec les paramètres :

  • adresse - adresse du pointeur char * de la victime
  • longueur - longueur du char *

Sources

  • Informations sur les exploits Spectre
  • CVE-2017-5753 - Variante 1 : contournement du contrôle des limites
  • CVE-2017-5715 - Variante 2 : injection de cible de branchement
  • Liste des CPU Intel concernés
Télécharger l’outil