Първата (v1.0.0) версия на out-of-tree, набор от инструменти за разработване и тестване на експлойти и модули на ядрото на Linux, беше пусната.
out-of-tree ви позволява да автоматизирате някои рутинни действия за създаване на среди за отстраняване на грешки в модули на ядрото и експлойти, генериране на статистики за надеждност на експлойтите, а също така предоставя възможност за лесно интегриране в CI (непрекъсната интеграция).
Всеки модул на ядрото или експлойт се описва от файл .out-of-tree.toml, който определя информация за необходимата среда и (ако е експлойт) ограничения за работа при наличието на определени мерки за сигурност.
Инструментариумът също така ви позволява да идентифицирате конкретни версии на ядрото, засегнати от уязвимост (с помощта на командата --guess), и може също да се използва за опростяване на двоични търсения за конкретен ангажимент.
По-долу е даден списък на промените от версия v0.2.
Добавен
-
Внедрена е възможността за ограничаване на броя на генерираните (автоген на ядрото извън дървото) ядра (въз основа на описанието в .out-of-tree.toml) и проверка на изпълнението (извън дървовидната пейка), използвайки —max= X параметър.
-
Нова команда genall, която ви позволява да генерирате всички ядра за конкретна дистрибуция и версия.
-
Всички регистрационни файлове вече се съхраняват в базата данни sqlite3. Внедрени команди за прости често необходими заявки, както и експортиране на данни в json и markdown.
-
Внедрено изчисляване на вероятността за успешна операция (въз основа на предишни изстрелвания).
-
Възможност за запазване на резултатите от изграждането (нов параметър --dist за команда pew извън дървото)
-
Поддръжка за генериране на метаданни за ядра, инсталирани на хост системата, както и изграждане директно на хоста.
-
Поддръжка на ядра на трети страни.
-
Средата за отстраняване на грешки извън дървото вече автоматично търси символи за отстраняване на грешки в хост системата.
-
Добавена е възможност за управление на смекчаване на сигурността с флагове за активиране/деактивиране KASLR, SMEP, SMAP и KPTI по време на отстраняване на грешки.
-
Добавен е параметърът --threads=N към командата за тестване на pew извън дървото, която може да се използва за указване на броя нишки, в които да се изграждат/изпълняват и тестват експлойти и модули на ядрото.
-
Възможност за задаване на етикет, който ще бъде записан в дневника и след това може да се използва за изчисляване на статистика.
-
Добавена е възможност за указване на версията на ядрото без използване на регулярни изрази.
-
Нова команда за пакетиране, използвана за масово тестване на експлойти и модули на ядрото в поддиректории.
-
В конфигурацията (.out-of-tree.toml) за експлойта и модула на ядрото е добавена възможност за деактивиране на KASLR, SMEP, SMAP и KPTI, както и задаване на необходимия брой ядра и памет.
-
Сега изображенията (rootfs) се зареждат автоматично, докато автоматичното генериране на ядрото работи. bootstrap вече не е необходим.
-
Поддръжка на CentOS ядра.
промени
-
Сега, ако няма изображение (rootfs) за необходимата версия на дистрибуцията, out-of-tree ще се опита да използва изображението на най-близката версия. Например изображение на Ubuntu 18.04 за Ubuntu 18.10.
-
Сега тестовете за модули на ядрото няма да се считат за грешки, ако липсват (няма тестове - няма грешки!).
-
Сега out-of-tree ще върне отрицателен код за грешка, ако поне един етап (изграждане, стартиране или тест) на някое от ядрата е неуспешен.
-
Проектът е преминал към използване на модули Go, изграждането с GO111MODULE=on вече е за предпочитане.
-
Добавени тестове по подразбиране.
-
Test.sh вече ще се използва по подразбиране, ако асемблирането в ${TARGET}_test не е имплементирано в Makefile.
-
Регистърът на ядрото вече не се изчиства преди стартиране на модул на ядрото или експлойт. Някои от експлойтите използват изтичане на база на ядрото в dmesg, за да заобиколят KASLR, така че почистването може да наруши внедрената логика на експлойта.
-
qemu/kvm вече използва всички възможности на хост процесора.
заличава
-
Фабрика на ядрото напълно премахнат поради внедряването на генериране на ядро въз основа на постепенно актуализирани Dockerfiles.
-
bootstrap не прави нищо друго. Командата ще бъде премахната в следващото издание.
Поправено
-
В macOS GNU coreutils вече не се изисква да работи.
-
Временните файлове са преместени в ~/.out-of-tree/tmp/ поради грешки при монтиране в докер на някои системи.
Източник: linux.org.ru