out-of-tree v1.0.0 ― інструментарый для распрацоўкі і тэсціравання эксплоітаў і модуляў ядра Linux


out-of-tree v1.0.0 ― інструментарый для распрацоўкі і тэсціравання эксплоітаў і модуляў ядра Linux

Адбыўся рэліз першай (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

Дадаць каментар