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

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

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

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

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

Категории

Все категории
Loading categories
ssbd-tools — Инструменты для тестирования смягчения последствий в ядре Linux для CVE-2018-3639 (также известный как Variant 4) с использованием функции Speculative Store Bypass Disable (SSBD) процессоров x86 | Kitploit
Инструменты/GitHubGitHub/tyhicks/ssbd-tools
Анализ уязвимостейЭксплуатацияАппаратная Безопасность
GitHubtyhicks/ssbd-tools

ssbd-tools

Инструменты для тестирования смягчения последствий в ядре Linux для CVE-2018-3639 (также известный как Variant 4) с использованием функции Speculative Store Bypass Disable (SSBD) процессоров x86

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

Популярное

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

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

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

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

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

Инструменты для использования отключения спекулятивного буфера записи (Speculative Store Bypass Disable)

Проект ssbd-tools представляет собой набор программ, использующих функцию отключения спекулятивного буфера записи (SSBD) в процессорах x86. SSBD — это аппаратная защита от атаки с использованием спекулятивного буфера записи, известной как Variant 4 и зарегистрированной как CVE-2018-3639. Ядро Linux предоставляет контроль за использованием SSBD для каждого процесса, и эти инструменты могут использоваться для применения этих средств контроля и проверки их корректности.

Контроль SSBD для каждого процесса

Ядро Linux предоставляет несколько различных режимов работы, которые могут быть выбраны во время загрузки с помощью параметра ядра spec_store_bypass_disable для SSBD в системах x86. Документация по параметрам ядра хорошо их описывает. Вот фрагмент из этого документа, описывающий параметры:

root@kitploit:~
  on      - Безусловно отключить спекулятивный буфер записи
  off     - Безусловно включить спекулятивный буфер записи
  auto    - Ядро определяет, содержит ли модель процессора реализацию
            спекулятивного буфера записи, и выбирает наиболее подходящую
            защиту. Если процессор не уязвим, выбирается "off".
            Если процессор уязвим, защита по умолчанию зависит от
            архитектуры и Kconfig. См. ниже.
  prctl   - Управление спекулятивным буфером записи для каждого потока
            через prctl. Спекулятивный буфер записи включен
            для процесса по умолчанию. Состояние управления
            наследуется при fork.
  seccomp - То же, что и "prctl" выше, но все потоки seccomp
            будут отключать SSB, если они явно не откажутся.

  Если этот параметр не указан, это эквивалентно
  spec_store_bypass_disable=auto.

  Защита по умолчанию:
  X86:    Если CONFIG_SECCOMP=y, то "seccomp", иначе "prctl"

Особенности для конкретных процессоров

Функциональность SSBD включается/отключается установкой одного бита в модельно-зависимом регистре (MSR) процессора. Точный MSR и расположение бита внутри MSR различаются в зависимости от производителя процессора, семейства процессоров от одного производителя и того, работает ли ядро под гипервизором. Эти инструменты следуют рекомендациям, опубликованным компаниями Intel и AMD, для определения местоположения бита SSBD в текущей среде выполнения.

Почему SSBD может быть недоступен

В некоторых системах поддержка SSBD может отсутствовать. Это может быть связано с рядом причин:

  • Для вашего процессора требуется обновлённый микрокод. Это относится к процессорам Intel. Вы можете получить обновлённый микрокод через обновление прошивки или установив пакеты микрокода вашего дистрибутива Linux (intel-microcode и amd64-microcode для Debian/Ubuntu). Процессоры AMD семейств 15h, 16h и 17h не требуют обновления микрокода.
  • Ваше ядро не было обновлено для поддержки SSBD. Многие поставщики ОС Linux выпустили обновления, поэтому обратитесь к информации о вашем поставщике на странице CERT Variant 4.
  • Вы используете виртуальную машину, и ваш гипервизор не обновлён для поддержки SSBD. Если вы управляете хост-средой, обратитесь к странице CERT выше для получения информации об обновлении соответствующего гипервизора.

Краткое описание программ в ssbd-tools

ssbd-exec

Программа ssbd-exec использует контроль SSBD для каждого процесса перед выполнением другой программы. Она может использовать prctl PR_SET_SPECULATION_CTRL для разрешения спекуляции (-p enable для использования PR_SPEC_ENABLE), запрета спекуляции через SSBD (-p disable для использования PR_SPEC_DISABLE), или постоянного запрета спекуляции во всех будущих дочерних процессах через SSBD (-p force-disable для использования PR_SPEC_FORCE_DISABLE).

Она также может загружать разрешающий seccomp-фильтр (-s empty), который по умолчанию в x86 включает защиту SSBD для процесса. Существует также опция (-s spec-allow) для загрузки разрешающего фильтра, который не включает SSBD.

Использование ssbd-exec

  • Просмотр /proc/PID/status показывает, что задачи не используют SSBD по умолчанию
root@kitploit:~
 $ ./ssbd-exec -- grep Spec /proc/self/status
 Speculation_Store_Bypass:	thread vulnerable
  • Просмотр /proc/PID/status при использовании SSBD через prctl
root@kitploit:~
 $ ./ssbd-exec -p disable -- grep -e Spec -e Seccomp /proc/self/status
 Seccomp:        0
 Speculation_Store_Bypass:       thread mitigated
  • Просмотр /proc/PID/status при работе с разрешающим seccomp-фильтром, который включает SSBD
root@kitploit:~
 $ ./ssbd-exec -s empty -- grep -e Spec -e Seccomp /proc/self/status
 Seccomp:        2
 Speculation_Store_Bypass:       thread force mitigated

ssbd-verify

Программа ssbd-verify проверяет, что фактический бит SSBD в MSR и смещении бита, специфичном для вашего процессора, имеет ожидаемое значение. 0 означает, что SSBD не используется, 1 — что используется.

Программа также может использоваться для проверки того, что значение prctl PR_GET_SPECULATION_CTRL задачи установлено на разрешение спекуляции (-p enable для проверки PR_SPEC_ENABLE), запрет спекуляции через SSBD (-p disable для проверки PR_SPEC_DISABLE) или постоянный запрет спекуляции во всех будущих дочерних процессах через SSBD (-p force-disable для проверки PR_SPEC_FORCE_DISABLE).

Программа может быть настроена на повторную проверку значения бита SSBD с использованием опции -t SECONDS. Если SECONDS равно 0, программа бесконечно циклически проверяет бит SSBD. Ненулевое значение SECONDS приводит к проверке бита SSBD в течение указанного времени.

Эта программа требует, чтобы модуль ядра msr был загружен и пользователь имел права root для чтения бита SSBD из соответствующего MSR.

Использование ssbd-verify

  • Проверка, что SSBD не установлен по умолчанию
root@kitploit:~
 $ sudo ./ssbd-verify 0
 $ sudo ./ssbd-verify 1
 FAIL: SSBD bit verification failed (expected 1, got 0)
  • Проверка, что SSBD установлен при использовании prctl для запрета спекуляции
root@kitploit:~
 $ ./ssbd-exec -p disable -- sudo ./ssbd-verify 1
  • Проверка, что SSBD установлен при загрузке seccomp-фильтра
root@kitploit:~
 $ sudo ./ssbd-exec -s empty -- ./ssbd-verify 1

Примечание: В команде выше требуется sudo для ssbd-exec, потому что NO_NEW_PRIVS используется перед загрузкой seccomp-фильтра. sudo не сможет повысить привилегии, если используется после установки NO_NEW_PRIVS.

ssbd-toggle

Программа ssbd-toggle просто переключает бит SSBD между включением и выключением в бесконечном цикле до тех пор, пока программа не будет завершена. Она может использоваться вместе с ssbd-verify для проверки того, что процесс ssbd-verify всегда имеет ожидаемое значение бита SSBD, когда ядро переключается на его задачу.

Эта программа требует, чтобы модуль ядра msr был загружен и пользователь имел права root для чтения и записи в соответствующий MSR.

Использование ssbd-toggle

  • Переключать бит SSBD процессора 0 до прерывания процесса
root@kitploit:~
 $ sudo ./ssbd-toggle
 ^C

Сборка инструментов

Для сборки инструментов выполните make:

root@kitploit:~
 $ make

Тестирование вашей системы

Чтобы запустить несколько базовых автоматических тестов и убедиться, что SSBD работает должным образом на вашей системе, выполните цель check от имени root:

root@kitploit:~
 $ sudo make check
 PASS
Скачать инструмент