out-of-tree v1.0.0 ― инструментарий для разработки и тестирования эксплоитов и модулей ядра Linux

good-penguin.png

Состоялся релиз первой (v1.0.0) версии out-of-tree ― инструментария для разработки и тестирования эксплоитов и модулей ядра Linux.

out-of-tree позволяет автоматизировать некоторые рутинные действия по созданию окружений для отладки модулей ядра и эксплоитов, генерации статистики надежности эксплоитов, а также предоставляет возможность простой интеграции в CI (Continuous Integration).

Каждый модуль ядра либо эксплоит описывается файлом .out-of-tree.toml, где указывается информация о необходимом окружении и (в случае, если это эксплоит) о ограничениях работы при наличии определенных мер безопасности (security mitigations).

Также инструментарий позволяет определять конкретные версии ядра, затронутые уязвимостью (с помощью команды --guess), а также может использоваться для упрощения бинарного поиска конкретного коммита.

Далее список изменений со времен версии v0.2.

Добавлено

  • Реализована возможность ограничивать количество генерируемых (out-of-tree kernel autogen) ядер (на основе описания в .out-of-tree.toml) и запусков проверки (out-of-tree pew) c помощью параметра --max=X.

  • Новая команда genall, позволяющая сгененировать все ядра для определенного дистрибутива и версии.

  • Все логи теперь хранятся в sqlite3 базе данных. Реализованы команды для простых часто необходимых запросов, а также экспорт данных в json и markdown.

  • Реализован подсчет вероятности успешной эксплуатации (на основе предыдущих запусков).

  • Возможность сохранять результаты сборки (новый параметр --dist для команды out-of-tree pew)

  • Поддержка генерации метаданных для ядер, установленных в хостовой системе, а также сборка непосредственно на хосте.

  • Поддержка сторонних ядер.

  • Теперь отладочное окружение (out-of-tree debug) автоматически ищет отладочные символы на хостовой системе.

  • Добавлена возможность управления мерами безопасности (security mitigations) флагами включения/отключения KASLR, SMEP, SMAP и KPTI во время отладки.

  • Добавлен параметр --threads=N для команды запуска тестирования out-of-tree pew, с помощью которого можно указать количество потоков, в которых будет выполняться сборка/запуск и тестирование эксплоитов и модулей ядра.

  • Возможность задать тег, который будет записываться в лог и далее может использоваться для расчета статистики.

  • Добавлена возможность указать версию ядра без использования регулярных выражений.

  • Новая команда pack, используемая для массовых тестов эксплоитов и модулей ядра в поддиректориях.

  • В конфигурации (.out-of-tree.toml) для эксплоита и модуля ядра добавлена возможность отключать KASLR, SMEP, SMAP и KPTI, а также указывать необходимое количество ядер и памяти.

  • Теперь образы (rootfs) загружаются автоматически во время работы kernel autogen. bootstrap больше не нужен.

  • Поддержка ядер CentOS.

Изменения

  • Теперь, если нет образа (rootfs) для нужной версии дистрибутива ― out-of-tree будет пытаться использовать образ наиболее близкой версии. Например, образ Ubuntu 18.04 для Ubuntu 18.10.

  • Теперь тесты для модулей ядра не будут считаться провальными в том случае, если они отсутствуют (нет тестов ― нет ошибок!).

  • Теперь out-of-tree будет возвращать отрицательный код ошибки в том случае, если хотя бы один этап (сборка, запуск или тестирование) на любом из ядер был завершен с ошибкой.

  • Проект перешел на использование Go modules, сборка с GO111MODULE=on теперь предпочтительна.

  • Добавлены тесты по умолчанию.

  • Теперь test.sh будет использован по умолчанию в том случае, если сборка в ${TARGET}_test не реализована в Makefile.

  • Лог ядра более не очищается перед запуском модуля ядра или эксплоита. Некоторые из эксплоитов используют утечку базы ядра в dmesg для обхода KASLR, поэтому очистка может нарушить реализованную логику эксплоита.

  • qemu/kvm теперь использует все возможности хостового процессора.

Удалено

  • Фабрика ядер убрана полностью в связи с реализацией генерации ядер на основе инкрементально дополняемых Dockerfile.

  • bootstrap более ничего не делает. Команда будет удалена в следующем релизе.

Исправлено

  • На macOS более не требуется GNU coreutils для работы.

  • Временные файлы перенесены в ~/.out-of-tree/tmp/ из-за ошибок монтирования внутри docker на некоторых системах.

>>> Документация

>>> CHANGELOG

>>> Подробности

©  Linux.org.ru