Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
spectre-attack — Exemplo de uso do exploit "Spectre" revelado (CVE-2017-5753 e CVE-2017-5715) | Kitploit
Ferramentas/GitHubGitHub/eugnis/spectre-attack
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoSegurança de HardwareAprendizado e EducaçãoExploração de Binários
GitHubeugnis/spectre-attack

spectre-attack

Exemplo de uso do exploit "Spectre" revelado (CVE-2017-5753 e CVE-2017-5715)

Ver Repositório
7711675há 8 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Exemplo de Ataque Spectre

Exemplo de uso do exploit "Spectre" revelado em 2 de janeiro de 2018 (CVE-2017-5753 e CVE-2017-5715)

O Spectre quebra o isolamento entre diferentes aplicações. Ele permite que um atacante engane programas livres de erros, que seguem as melhores práticas, fazendo-os vazar seus segredos. Na verdade, as verificações de segurança dessas melhores práticas aumentam a superfície de ataque e podem tornar as aplicações mais suscetíveis ao Spectre.

  • Artigo do Spectre - Artigo do Spectre e código-fonte

Linguagem

C, usa as bibliotecas:

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

O que o exemplo faz?

Colocamos o texto "The Magic Words are Squeamish Ossifrage." na memória e então tentamos lê-lo usando o exploit. Se o sistema for vulnerável, você verá o mesmo texto na saída, lido da memória.


Neste código, se as instruções compiladas em victim_function() fossem executadas em ordem estrita de programa, a função leria apenas de array1[0..15], pois o tamanho de array1 é 16. No entanto, quando executada especulativamente, leituras fora dos limites são possíveis. A função readMemoryByte() faz várias chamadas de treinamento a victim_function() para fazer o preditor de desvios esperar valores válidos para x, e então faz uma chamada com um x fora dos limites. O desvio condicional é previsto incorretamente, e a execução especulativa resultante lê um byte secreto usando o x fora dos limites. O código especulativo então lê de array2[array1[x] * 512], vazando o valor de array1[x] para o estado do cache. Para completar o ataque, um simples flush+probe é usado para identificar qual linha de cache em array2 foi carregada, revelando o conteúdo da memória. O ataque é repetido várias vezes, de modo que, mesmo que o byte alvo não estivesse inicialmente no cache, a primeira iteração o trará para o cache.

O código não otimizado lê aproximadamente 10KB/segundo em um i7 Surface Pro 3.

Compilação

Usando GCC

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

Usando Visual Studio

Crie um novo projeto vazio, adicione Source.c e clique em Build.

Execução

Teste

.\spectre.out sem parâmetros.

Ler de um endereço

.\spectre.out {address} {length} com parâmetros:

  • address - endereço do ponteiro do char * vítima
  • length - tamanho do char *

Fontes

  • Informações sobre exploits do Spectre
  • CVE-2017-5753 - Variante 1: bypass da verificação de limites
  • CVE-2017-5715 - Variante 2: injeção de alvo de desvio
  • Lista de CPUs afetadas da Intel
Baixar ferramenta