Sploitus

Exploit for spectre-attack

kitploit Β· 2026-08-19

Exploit Code

MARKDOWN62 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-EUGNIS-SPECTRE-ATTACK
# ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π°Ρ‚Π°ΠΊΠΈ Spectre

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования раскрытого эксплойта Β«SpectreΒ» ΠΎΡ‚ 2 января 2018 Π³ΠΎΠ΄Π° (CVE-2017-5753 ΠΈ CVE-2017-5715)

Spectre Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прилоТСниями. Он позволяСт Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΠΌΠ°Π½ΠΎΠΌ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌ, Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΡŒ свои сСкрСты. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ бСзопасности ΠΈΠ· упомянутых Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ фактичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ прилоТСния Π±ΠΎΠ»Π΅Π΅ восприимчивыми ΠΊ Spectre.

  * Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Spectre β€” Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ Spectre ΠΈ исходный ΠΊΠΎΠ΄



## Π―Π·Ρ‹ΠΊ

C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

  * stdio.h
  * stdint.h
  * intrin.h β€” для rdtscp ΠΈ clflush



## Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€?

ΠœΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ тСкст Β«The Magic Words are Squeamish Ossifrage.Β» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π° Π·Π°Ρ‚Π΅ΠΌ пытаСмся ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ эксплойта. Если систСма уязвима, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ‚ΠΎΡ‚ ΠΆΠ΅ тСкст, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΉ ΠΈΠ· памяти.

* * *

Π’ этом ΠΊΠΎΠ΄Π΅, Ссли Π±Ρ‹ скомпилированныС инструкции Π² `victim_function()` Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ строго Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ порядкС, функция Ρ‡ΠΈΡ‚Π°Π»Π° Π±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· `array1[0..15]`, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ array1 = 16. Однако ΠΏΡ€ΠΈ спСкулятивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π³Ρ€Π°Π½ΠΈΡ†. Ѐункция `readMemoryByte()` нСсколько Ρ€Π°Π· Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ `victim_function()` Π² ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… цСлях, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π» допустимыС значСния x, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Ρ‘ с x Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†. Условный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ прСдсказываСтся Π½Π΅Π²Π΅Ρ€Π½ΠΎ, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ спСкулятивноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ считываСт сСкрСтный Π±Π°ΠΉΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ x Π²Π½Π΅ Π³Ρ€Π°Π½ΠΈΡ†. Π—Π°Ρ‚Π΅ΠΌ спСкулятивный ΠΊΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· `array2[array1[x] * 512]`, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ значСния `array1[x]` Π² состояниС кэша. Для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π°Ρ‚Π°ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ простой ΠΌΠ΅Ρ‚ΠΎΠ΄ flush+probe, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая строка кэша Π² `array2` Π±Ρ‹Π»Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π°, Ρ‡Ρ‚ΠΎ раскрываСт содСрТимоС памяти. Атака повторяСтся нСсколько Ρ€Π°Π·, поэтому Π΄Π°ΠΆΠ΅ Ссли Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Π±Π°ΠΉΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Π±Ρ‹Π» Π² кэшС, пСрвая итСрация помСстит Π΅Π³ΠΎ Π² кэш.

НСоптимизированный ΠΊΠΎΠ΄ считываСт ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 10 ΠšΠ‘/с Π½Π° i7 Surface Pro 3.

## Π‘Π±ΠΎΡ€ΠΊΠ°

### Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GCC

`gcc -std=c99 Source.c -o spectre.out` ΠΈΠ»ΠΈ `make`

### Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Visual Studio

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ пустой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Source.c ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π‘Π±ΠΎΡ€ΠΊΠ°Β» (Build).

## Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

### ВСст

`.\spectre.out` Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

### Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу

`.\spectre.out {address} {length}` с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ:

  * address β€” адрСс указатСля victim char *
  * length β€” Π΄Π»ΠΈΠ½Π° char *



## Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ

  * Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΠ± эксплойтах Spectre
  * CVE-2017-5753 β€” Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1: ΠΎΠ±Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†
  * CVE-2017-5715 β€” Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2: ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΡ Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ адрСса ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°
  * Бписок Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹Ρ… процСссоров Intel