Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
spectre-attack — Ejemplo de uso del exploit 'Spectre' revelado (CVE-2017-5753 y CVE-2017-5715) | Kitploit
Herramientas/GitHubGitHub/eugnis/spectre-attack
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónSeguridad de HardwareAprendizaje y EducaciónExplotación de Binarios
GitHubeugnis/spectre-attack

spectre-attack

Ejemplo de uso del exploit 'Spectre' revelado (CVE-2017-5753 y CVE-2017-5715)

Ver Repositorio
7711675hace 8 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Ejemplo de ataque Spectre

Ejemplo de uso del exploit revelado "Spectre" del 2 de enero de 2018 (CVE-2017-5753 y CVE-2017-5715)

Spectre rompe el aislamiento entre diferentes aplicaciones. Permite a un atacante engañar a programas libres de errores, que siguen las mejores prácticas, para que filtren sus secretos. De hecho, las comprobaciones de seguridad de dichas mejores prácticas aumentan la superficie de ataque y pueden hacer que las aplicaciones sean más susceptibles a Spectre.

  • Spectre paper - Artículo de Spectre y código fuente

Lenguaje

C, utiliza las librerías:

  • stdio.h
  • stdint.h
  • intrin.h - para rdtscp y clflush

¿Qué hace el ejemplo?

Estamos colocando el texto "The Magic Words are Squeamish Ossifrage." en la memoria y luego intentamos leerlo mediante el exploit. Si el sistema es vulnerable, verás el mismo texto en la salida, leído de la memoria.


En este código, si las instrucciones compiladas en victim_function() se ejecutaran en estricto orden de programa, la función solo leería de array1[0..15] ya que el tamaño de array1 es 16. Sin embargo, cuando se ejecuta especulativamente, las lecturas fuera de los límites son posibles. La función readMemoryByte() realiza varias llamadas de entrenamiento a victim_function() para hacer que el predictor de saltos espere valores válidos para x, luego llama con una x fuera de los límites. El salto condicional falla en la predicción, y la ejecución especulativa subsiguiente lee un byte secreto usando la x fuera de límites. Luego, el código especulativo lee de array2[array1[x] * 512], filtrando el valor de array1[x] en el estado de la caché. Para completar el ataque, se utiliza un simple flush+probe para identificar qué línea de caché en array2 se cargó, revelando el contenido de la memoria. El ataque se repite varias veces, por lo que incluso si el byte objetivo no estaba inicialmente en la caché, la primera iteración lo traerá a la caché.

El código sin optimizar lee aproximadamente 10KB/segundo en un i7 Surface Pro 3.

Compilación

Usando GCC

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

Usando Visual Studio

Crea un nuevo proyecto vacío y agrega Source.c, luego haz clic en Compilar.

Ejecución

Prueba

.\spectre.out sin parámetros.

Leer desde dirección

.\spectre.out {address} {length} con parámetros:

  • address - dirección del puntero del char víctima *
  • length - longitud del char *

Fuentes

  • Spectre exploits info
  • CVE-2017-5753 - Variante 1: omisión de verificación de límites
  • CVE-2017-5715 - Variante 2: inyección de destino de salto
  • Intel affected CPUs list
Descargar herramienta