Została wydana pierwsza (v1.0.0) wersja out-of-tree, zestawu narzędzi do tworzenia i testowania exploitów oraz modułów jądra Linuksa.
out-of-tree pozwala zautomatyzować niektóre rutynowe działania w celu stworzenia środowisk do debugowania modułów jądra i exploitów, generowania statystyk niezawodności exploitów, a także zapewnia możliwość łatwej integracji z CI (Continous Integration).
Każdy moduł jądra lub exploit jest opisany w pliku .out-of-tree.toml, który określa informacje o wymaganym środowisku i (jeśli jest to exploit) ograniczeniach działania w przypadku pewnych zabezpieczeń.
Zestaw narzędzi umożliwia także identyfikację konkretnych wersji jądra dotkniętych luką (za pomocą polecenia --guess), a także może być użyty do uproszczenia wyszukiwania binarnego konkretnego zatwierdzenia.
Poniżej znajduje się lista zmian od wersji v0.2.
обавлено
-
Zaimplementowano możliwość ograniczenia liczby generowanych (autogenerowanych jąder poza drzewem) jąder (w oparciu o opis w pliku .out-of-tree.toml) i sprawdzania przebiegów (ławka poza drzewem) przy użyciu opcji —max= Parametr X.
-
Nowe polecenie genall, które pozwala wygenerować wszystkie jądra dla określonej dystrybucji i wersji.
-
Wszystkie dzienniki są teraz przechowywane w bazie danych sqlite3. Zaimplementowano polecenia dla prostych, często potrzebnych zapytań, a także eksportu danych do json i markdown.
-
Zaimplementowano obliczanie prawdopodobieństwa udanej operacji (na podstawie poprzednich uruchomień).
-
Możliwość zapisywania wyników kompilacji (nowy parametr --dist dla polecenia ławki poza drzewem)
-
Obsługa generowania metadanych dla jąder zainstalowanych w systemie hosta, a także budowania bezpośrednio na hoście.
-
Obsługa jąder innych firm.
-
Środowisko debugowania poza drzewem automatycznie wyszukuje teraz symbole debugowania w systemie hosta.
-
Dodano możliwość zarządzania ograniczeniami bezpieczeństwa za pomocą włączania/wyłączania flag KASLR, SMEP, SMAP i KPTI podczas debugowania.
-
Do polecenia testowania ławek poza drzewem dodano parametr --threads=N, którego można użyć do określenia liczby wątków, w których można budować/uruchamiać oraz testować exploity i moduły jądra.
-
Możliwość ustawienia tagu, który będzie zapisywany w logu i będzie mógł być następnie wykorzystany do wyliczania statystyk.
-
Dodano możliwość określenia wersji jądra bez użycia wyrażeń regularnych.
-
Nowe polecenie pack, używane do masowego testowania exploitów i modułów jądra w podkatalogach.
-
W konfiguracji (.out-of-tree.toml) modułu exploita i jądra dodano możliwość wyłączenia KASLR, SMEP, SMAP i KPTI, a także określenia wymaganej liczby rdzeni i pamięci.
-
Teraz obrazy (rootfs) są ładowane automatycznie podczas działania autogenu jądra. bootstrap nie jest już potrzebny.
-
Obsługa jąder CentOS.
Zmiany
-
Teraz, jeśli nie ma obrazu (rootfs) dla wymaganej wersji dystrybucji, out-of-tree spróbuje użyć obrazu najbliższej wersji. Na przykład obraz Ubuntu 18.04 dla Ubuntu 18.10.
-
Teraz testy modułów jądra nie będą uznawane za awarie, jeśli ich brakuje (żadnych testów – żadnych błędów!).
-
Teraz out-of-tree zwróci negatywny kod błędu, jeśli co najmniej jeden etap (kompilacja, uruchomienie lub testowanie) na którymkolwiek z rdzeni zakończy się niepowodzeniem.
-
W projekcie przestawiono się na moduły Go, obecnie preferowane jest budowanie z GO111MODULE=on.
-
Dodano testy domyślne.
-
Test.sh będzie teraz używany domyślnie, jeśli zestaw w ${TARGET}_test nie jest zaimplementowany w pliku Makefile.
-
Dziennik jądra nie jest już czyszczony przed uruchomieniem modułu jądra lub exploita. Niektóre exploity korzystają z wycieku jądra w dmesg, aby ominąć KASLR, więc czyszczenie może złamać logikę zaimplementowaną w exploitie.
-
qemu/kvm wykorzystuje teraz wszystkie możliwości procesora hosta.
REMOVED
-
Fabryka jądra całkowicie usunięty ze względu na wdrożenie generowania jądra w oparciu o przyrostowo aktualizowane pliki Dockerfile.
-
bootstrap nie robi nic więcej. Polecenie zostanie usunięte w następnej wersji.
справлено
-
W systemie macOS nie jest już wymagane działanie GNU coreutils.
-
Pliki tymczasowe zostały przeniesione do ~/.out-of-tree/tmp/ z powodu błędów montowania w oknie dokowanym w niektórych systemach.
Źródło: linux.org.ru