Objavljena je prva (v1.0.0) verzija out-of-tree alata za razvoj i testiranje exploita i modula jezgre Linuxa.
out-of-tree vam omogućuje automatiziranje nekih rutinskih radnji za stvaranje okruženja za otklanjanje pogrešaka modula jezgre i eksploatacija, generiranje statistike pouzdanosti eksploatacije, a također pruža mogućnost jednostavne integracije u CI (Continuous Integration).
Svaki modul jezgre ili iskorištavanje opisano je datotekom .out-of-tree.toml, koja navodi informacije o potrebnom okruženju i (ako se radi o iskorištavanju) ograničenjima rada u prisutnosti određenih sigurnosnih mjera.
Skup alata također vam omogućuje da identificirate određene verzije kernela zahvaćene ranjivošću (koristeći naredbu --guess), a također se može koristiti za pojednostavljenje binarnih pretraga za određeni commit.
Ispod je popis promjena od verzije v0.2.
dodano
-
Implementirana je mogućnost ograničavanja broja generiranih (autogen kernela izvan stabla) kernela (na temelju opisa u .out-of-tree.toml) i provjera pokretanja (klupa izvan stabla) pomoću —max= X parametar.
-
Nova naredba genall, koja vam omogućuje generiranje svih kernela za određenu distribuciju i verziju.
-
Svi zapisnici sada su pohranjeni u sqlite3 bazi podataka. Implementirane naredbe za jednostavne često potrebne upite, kao i izvoz podataka u json i markdown.
-
Implementiran izračun vjerojatnosti uspješnog rada (na temelju prethodnih lansiranja).
-
Mogućnost spremanja rezultata izgradnje (novi --dist parametar za naredbu izvan stabla)
-
Podrška za generiranje metapodataka za kernele instalirane na glavnom sustavu, kao i za izgradnju izravno na glavnom računalu.
-
Podrška za kernele trećih strana.
-
Okruženje za otklanjanje pogrešaka izvan stabla sada automatski traži simbole za otklanjanje pogrešaka na glavnom sustavu.
-
Dodana je mogućnost upravljanja sigurnosnim ublažavanjima s oznakama za uključivanje/isključivanje KASLR, SMEP, SMAP i KPTI tijekom uklanjanja pogrešaka.
-
Dodan je parametar --threads=N naredbi za testiranje izvan stabla, koja se može koristiti za određivanje broja niti u kojima će se graditi/pokretati i testirati eksploatacije i moduli kernela.
-
Mogućnost postavljanja oznake koja će biti zabilježena u dnevniku i zatim se može koristiti za izračun statistike.
-
Dodana je mogućnost određivanja verzije kernela bez korištenja regularnih izraza.
-
Nova naredba za pakiranje, koja se koristi za masovno testiranje eksploatacija i modula kernela u poddirektorijima.
-
U konfiguraciji (.out-of-tree.toml) za exploit i kernel modul dodana je mogućnost onemogućavanja KASLR, SMEP, SMAP i KPTI, kao i određivanje potrebnog broja jezgri i memorije.
-
Sada se slike (rootfs) učitavaju automatski dok je kernel autogen pokrenut. bootstrap više nije potreban.
-
Podrška za CentOS kernele.
promjene
-
Sada, ako ne postoji slika (rootfs) za traženu verziju distribucije, izvan stabla će pokušati koristiti sliku najbliže verzije. Na primjer, slika Ubuntu 18.04 za Ubuntu 18.10.
-
Sada se testovi za module jezgre neće smatrati pogreškama ako nedostaju (bez testova - nema grešaka!).
-
Sada će out-of-tree vratiti negativni kod pogreške ako barem jedna faza (izgradnja, pokretanje ili testiranje) na bilo kojoj od jezgri nije uspjela.
-
Projekt je prešao na korištenje Go modula, sada se preferira izrada s GO111MODULE=on.
-
Dodani zadani testovi.
-
Test.sh sada će se koristiti prema zadanim postavkama ako sklop u ${TARGET}_test nije implementiran u Makefile.
-
Dnevnik kernela više se ne briše prije pokretanja modula kernela ili iskorištavanja. Neki od iskorištavanja koriste curenje baze kernela u dmesg-u za zaobilaženje KASLR-a, tako da čišćenje može pokvariti implementiranu logiku iskorištavanja.
-
qemu/kvm sada koristi sve mogućnosti glavnog procesora.
Uklonjeno
-
Tvornica kernela potpuno uklonjeno zbog implementacije generiranja kernela temeljenog na postupno ažuriranim Docker datotekama.
-
bootstrap ne radi ništa drugo. Naredba će biti uklonjena u sljedećem izdanju.
Ispravljeno
-
Na macOS-u GNU coreutils više nije potreban za rad.
-
Privremene datoteke premještene su u ~/.out-of-tree/tmp/ zbog grešaka u montiranju unutar dockera na nekim sustavima.
Izvor: linux.org.ru