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

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

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

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

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

Категории

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

spectre-attack-demo

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

Репозиторий
1118 лет назадЕщё не проверено

Популярное

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

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

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

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

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

Пример атаки Spectre

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

Spectre нарушает изоляцию между различными приложениями. Он позволяет атакующему обмануть безошибочные программы, которые следуют лучшим практикам, заставив их раскрыть свои секреты. Более того, проверки безопасности из упомянутых лучших практик фактически увеличивают поверхность атаки и могут сделать приложения более восприимчивыми к Spectre.

  • Spectre paper - статья Spectre и исходный код

Язык

C, используются библиотеки:

  • stdio.h
  • stdlib.h
  • stdint.h
  • intrin.h - для rdtscp и clflush

Что делает пример?

Мы помещаем текст "The Magic Words are Squeamish Ossifrage." в память, а затем пытаемся прочитать его с помощью эксплойта. Если система уязвима, вы увидите тот же текст в выводе, прочитанный из памяти.


В этом коде, если бы скомпилированные инструкции в victim_function() выполнялись в строгом порядке программы, функция читала бы только из array1[0..15], поскольку размер array1 = 16. Однако при спекулятивном выполнении возможно чтение за пределами границ. Функция readMemoryByte() выполняет несколько обучающих вызовов , чтобы предсказатель ветвлений ожидал допустимые значения для x, после чего вызывает функцию с x вне границ. Условный переход предсказывается неверно, и последующее спекулятивное выполнение считывает секретный байт, используя x вне границ. Затем спекулятивный код читает из , утекая значение в состояние кэша. Для завершения атаки применяется простая техника flush+probe, позволяющая определить, какая строка кэша в была загружена, что раскрывает содержимое памяти. Атака повторяется несколько раз, поэтому даже если целевой байт изначально не был в кэше, первая итерация поместит его в кэш.

victim_function()
array2[array1[x] * 512]
array1[x]
array2

Неоптимизированный код считывает примерно 10 КБ/сек на i7 Surface Pro 3.

Источники

  • Spectre exploits info
  • CVE-2017-5753 - Вариант 1: обход проверки границ
  • CVE-2017-5715 - Вариант 2: инъекция цели ветвления
  • Intel affected CPUs list
Скачать инструмент