1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-zombieload

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ZombieLoad PoC

В этом репозитории содержится несколько приложений, демонстрирующих ZombieLoad. Для получения технической информации об ошибке обратитесь к статье:

  • «ZombieLoad: Cross-Privilege-Boundary Data Sampling» авторов Шварц, Липп, Могими, Ван Булк, Стеклины, Прешер и Грусс.

Proof of Concepts

Этот репозиторий содержит четыре различных атаки типа proof-of-concept, демонстрирующие ZombieLoad. Также он включает в себя четыре разных приложения-жертвы для проверки утечки в различных сценариях.

Все демонстрации протестированы на Intel Core i7-8650U, но они должны работать в любой системе Linux с любым современным процессором Intel Core или Xeon с 2010 года. Мы предоставляем три варианта для Linux, которые мы тестировали на Ubuntu 18.04.1 LTS, и два варианта для Windows, которые мы тестировали в Windows 10 (сборка 1803 17134.706).

Для достижения наилучших результатов мы рекомендуем быстрый процессор, поддерживающий Intel TSX (например, почти любой Intel Core i7-5xxx, i7-6xxx или i7-7xxx).

Сборка

Демонстрациям PoC для компиляции требуется только GCC и Make (в Linux) или MinGW-w64 (в Windows).

Собрать атакующее или защищающееся приложение можно просто запустив команду make в папке приложения.

Варианты атак

Репозиторий содержит четыре варианта атак.

Вариант 1 (только Linux)

Вариант 1 — самый быстрый, простой и стабильный вариант для привилегированного атакующего (то есть он требует прав root). Поэтому, кроме тестирования, этот вариант особенно полезен для атак на SGX или для атак на виртуальные машины.

Запуск

Для этого варианта KASLR и KPTI должны быть отключены. Это можно сделать, предоставив параметры nopti nokaslr командной строке ядра. Затем запустите атакующее приложение на одном гиперпотоке с правами root: sudo taskset -c 3 ./leak.

Вариант 2 (Linux и Windows)

Вариант 2 — быстрый вариант, который не требует никаких привилегий. Однако он работает только на процессорах, поддерживающих Intel TSX. Вариант 2 — единственный вариант, который также работает на процессорах с уже имеющимися аппаратными средствами защиты от Meltdown и Foreshadow.

Запуск

Просто запустите атакующее приложение на одном гиперпотоке: taskset -c 3 ./leak.

Вариант 3 (только Windows)

Вариант 3 не требует каких-либо функций процессора или привилегий, но работает только в Windows.

Запуск

Запустите атакующее приложение на одном гиперпотоке: start /affinity 3 .\leak.exe. Может пройти некоторое время (до 1 минуты), прежде чем начнётся утечка, так как демонстрационной программе нужно дождаться, пока Windows соберёт информацию о памяти, используемой программой. Запуск другой программы, использующей память (например, браузера), иногда сокращает время ожидания.

Вариант 4 (только Linux)

Вариант 4 — интересный специальный подтип Варианта 2, который работает только на процессорах, поддерживающих и Intel TSX, и SGX. Этот вариант использует семантику прерывания страницы при доступе к зарезервированной процессором памяти в режиме без анклава и, следовательно, требует либо разрешения на создание анклава, либо прав root.

Запуск

Демонстрационная программа для этого варианта требует доступа на чтение к виртуальным устройствам Linux /dev/cpu/CPUNUM/msr и /dev/mem. Это можно сделать, загрузив драйвер msr, а также небольшой пользовательский драйвер, чтобы снять ограничения CONFIG_STRICT_DEVMEM по умолчанию в Linux:

$ sudo modprobe msr
$ cd module && make load

Затем запустите атакующую программу на одном гиперпотоке с правами root: sudo taskset -c 3 ./leak.

Приложения-жертвы

Все варианты атак могут использоваться для утечки данных из следующих приложений-жертв. Все приложения-жертвы выдают одну заглавную букву. Независимо от выбранной жертвы и атакующей программы, атакующая программа отображает гистограмму утечённых значений.

Пример вывода выглядит следующим образом (для секретной буквы «X», загруженной жертвой).

A: (   0) 
B: (   0) 
C: (   0) 
D: (   0) 
E: (   1) 
F: (   0) 
G: (   2) 
H: (   0) 
I: (   0) 
J: (   0) 
K: (   0) 
L: (   0) 
M: (   0) 
N: (   0) 
O: (   0) 
P: (  12) 
Q: (   1) 
R: (   1) 
S: (   0) 
T: (   0) 
U: (   2) 
V: (   1) 
W: (   0) 
X: (1303) ############################################################
Y: (   0) 
Z: (   1) 

Приложение-жертва в пространстве пользователя (Linux) Непривилегированное пользовательское приложение, которое постоянно загружает одно и то же значение из своей памяти

Запуск (Linux)

Просто запустите жертву на том же физическом ядре, но на другом гиперпотоке, как злоумышленник: taskset -c 7 ./secret. Вы также можете предоставить секретную букву приложению-жертве в качестве параметра, например, taskset -c 7 ./secret B, чтобы получить доступ к памяти, содержащей буквы «B». По умолчанию используется секретная буква «X».

Как только жертва будет запущена, в процессе злоумышленника должен появиться чёткий сигнал, то есть полоса для просочившейся буквы должна стать длиннее.

Запуск (Windows)

Просто запустите жертву на том же физическом ядре, но на другом гиперпотоке, как злоумышленник: start /affinity 7 .\secret.exe. Вы также можете указать секретную букву в приложении-жертве как параметр, например, start /affinity 7 .\secret.exe B, чтобы получить доступ к памяти, которая содержит буквы «B». По умолчанию используется секретная буква «X».

Как только жертва будет запущена, в процессе злоумышленника должен появиться чёткий сигнал, то есть полоса для просочившейся буквы должна стать длиннее.

Ядро-жертва (только Linux)

Модуль ядра, который постоянно загружает букву «J».

Запуск

Перед запуском жертвы модуль ядра необходимо загрузить в ядро. Это делается с помощью команды sudo insmod leaky.ko. Затем просто запустите жертву на том же физическом ядре, но на другом гиперпотоке, как злоумышленник: taskset -c 7 ./secret.

Как только жертва будет запущена, в процессе злоумышленника должен появиться чёткий сигнал, то есть полоса для буквы «J» должна стать длиннее.

Intel SGX-жертва (только Linux)

Анклав Intel SGX, который постоянно загружает букву «S». Для этой жертвы требуется установить драйвер и SDK SGX.

Запуск

Просто запустите жертву на том же физическом ядре, но на другом гиперпотоке, как злоумышленник: taskset -c 7 ./secret.

Как только жертва будет запущена, в процессе злоумышленника должен появиться чёткий сигнал, то есть полоса для буквы «S» должна стать длиннее.

Виртуальная машина-жертва (Linux и Windows)

Виртуальная машина, содержащая приложение, которое постоянно загружает одно и то же значение из памяти. Для этой жертвы требуются установленные QEMU и включённый VT-x.

Запуск

Просто запустите виртуальную машину на том же физическом ядре, но на другом гиперпотоке, как злоумышленник: taskset -c 7 ./secret.sh. Как только виртуальная машина запустится, запустите жертву с помощью secret X, где «X» — это секретный символ. В процессе злоумышленника должен появиться чёткий сигнал, то есть полоса для просочившейся буквы должна стать длиннее. ## Предупреждения Предупреждение №1: Мы предоставляем этот код как есть. Вы несёте ответственность за защиту себя, своего имущества и данных, а также других лиц от любых рисков, связанных с этим кодом. Этот код может вызвать неожиданное и нежелательное поведение на вашем компьютере. Данный код может не обнаружить уязвимость на вашей машине.

Предупреждение №2: Если вы обнаружите, что компьютер уязвим для ZombieLoad, возможно, вы захотите избегать использования его в качестве многопользовательской системы. ZombieLoad нарушает защиту памяти процессора. На машине, которая уязвима для ZombieLoad, один процесс потенциально может прочитать все данные, используемые другими процессами или ядром.

Предупреждение №3: Данный код предназначен только для тестирования. Не запускайте его на каких-либо продуктивных системах. Не используйте его на любой системе, которой может пользоваться другой человек или организация.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Данный проект включает в себя несколько приложений, предназначенных для проверки уязвимости ZombieLoad процессоров Intel. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-zombieload.git
git@api.gitlife.ru:oschina-mirror/mirrors-zombieload.git
oschina-mirror
mirrors-zombieload
mirrors-zombieload
master