Objavljena je prva (v1.0.0) verzija out-of-tree, alata za razvoj i testiranje exploit-a i modula jezgre Linuxa.
out-of-tree vam omogućava da automatizujete neke rutinske radnje za kreiranje okruženja za otklanjanje grešaka u modulima kernela i eksploatacije, generisanje statistike o pouzdanosti eksploatacije, a takođe pruža mogućnost lake integracije u CI (kontinuirana integracija).
Svaki modul kernela ili eksploatacija opisana je datotekom .out-of-tree.toml, koja specificira informacije o potrebnom okruženju i (ako je eksploat) ograničenja za rad u prisustvu određenih sigurnosnih ublažavanja.
Komplet alata vam takođe omogućava da identifikujete specifične verzije kernela na koje utiče ranjivost (koristeći naredbu --guess), a takođe se može koristiti za pojednostavljenje binarnih pretraga za određeno urezivanje.
Ispod je lista promjena od verzije v0.2.
Dodano
-
Implementirana je mogućnost ograničavanja broja generiranih (autogena kernela van stabla) kernela (na osnovu opisa u .out-of-tree.toml) i provjeravanja (out-of-tree pew) pomoću —max= X parametar.
-
Nova naredba genall, koja vam omogućava da generišete sve kernele za određenu distribuciju i verziju.
-
Svi dnevnici su sada pohranjeni u sqlite3 bazi podataka. Implementirane komande za jednostavne često potrebne upite, kao i izvoz podataka u json i markdown.
-
Implementirano izračunavanje vjerovatnoće uspješnog rada (na osnovu prethodnih lansiranja).
-
Mogućnost spremanja rezultata izgradnje (novi --dist parametar za komandu pew van stabla)
-
Podrška za generisanje metapodataka za kernele instalirane na host sistemu, kao i izgradnju direktno na hostu.
-
Podrška za kernele treće strane.
-
Okruženje za otklanjanje grešaka izvan stabla sada automatski traži simbole za otklanjanje grešaka na host sistemu.
-
Dodata je mogućnost upravljanja sigurnosnim ublažavanjima uz omogućavanje/onemogućavanje zastavica KASLR, SMEP, SMAP i KPTI tokom otklanjanja grešaka.
-
Dodan parametar --threads=N naredbi za testiranje pew-a van stabla, koja se može koristiti za specificiranje broja niti u kojima će se izgraditi/pokrenuti i testirati eksploatacije i moduli kernela.
-
Mogućnost postavljanja oznake koja će biti zabilježena u dnevniku, a zatim se može koristiti za izračunavanje statistike.
-
Dodata mogućnost specificiranja verzije kernela bez korištenja regularnih izraza.
-
Nova naredba pack, koja se koristi za masovno testiranje exploit-a i modula kernela u poddirektorijumima.
-
U konfiguraciji (.out-of-tree.toml) za exploit i kernel modul, dodata je mogućnost onemogućavanja KASLR, SMEP, SMAP i KPTI, kao i specificiranje potrebnog broja jezgara i memorije.
-
Sada se slike (rootf-ovi) automatski učitavaju dok je kernel autogen pokrenut. bootstrap više nije potreban.
-
Podrška za CentOS kernele.
Promjene
-
Sada, ako ne postoji slika (rootfs) za potrebnu verziju distribucije, out-of-tree će pokušati koristiti sliku najbliže verzije. Na primjer, slika Ubuntu 18.04 za Ubuntu 18.10.
-
Sada se testovi za module kernela neće smatrati greškama ako nedostaju (nema testova - nema grešaka!).
-
Sada će izvan stabla vratiti negativan kod greške ako barem jedna faza (izrada, pokretanje ili testiranje) na bilo kojoj od jezgara nije uspjela.
-
Projekat je prešao na korištenje Go modula, sada se preferira izgradnja sa GO111MODULE=on.
-
Dodati zadani testovi.
-
Test.sh će se sada koristiti po defaultu ako sklop u ${TARGET}_test nije implementiran u Makefile.
-
Dnevnik kernela se više ne briše prije pokretanja modula kernela ili eksploatacije. Neki od eksploatacija koriste curenje baze kernela u dmesg-u da zaobiđu KASLR, tako da čišćenje može narušiti implementiranu logiku eksploatacije.
-
qemu/kvm sada koristi sve mogućnosti glavnog procesora.
Uklonjeno
-
Kernel Factory potpuno uklonjeno zbog implementacije generisanja kernela na osnovu postepeno ažuriranih Dockerfiles-a.
-
bootstrap ne radi ništa drugo. Komanda će biti uklonjena u sljedećem izdanju.
Ispravljeno
-
Na macOS-u, GNU coreutils više nije potreban za pokretanje.
-
Privremeni fajlovi su premešteni u ~/.out-of-tree/tmp/ zbog grešaka pri montiranju unutar docker-a na nekim sistemima.
izvor: linux.org.ru