Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
spectre-attack — Пример использования раскрытого эксплойта "Spectre" (CVE-2017-5753 и CVE-2017-5715) | Kitploit
Инструменты/GitHubGitHub/eugnis/spectre-attack
Криминалистика памятиАнализ уязвимостейЭксплуатацияАппаратная БезопасностьОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHubeugnis/spectre-attack

spectre-attack

Пример использования раскрытого эксплойта "Spectre" (CVE-2017-5753 и CVE-2017-5715)

Репозиторий
77116758 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Пример атаки 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
Скачать инструмент