Адбыўся рэліз першай (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) з дапамогай параметру -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 на некаторых сістэмах.
Крыніца: linux.org.ru