out-of-tree v1.0.0 - narzędzia do tworzenia i testowania exploitów oraz modułów jądra Linuksa


out-of-tree v1.0.0 - narzędzia do tworzenia i testowania exploitów oraz modułów jądra Linuksa

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

Dodaj komentarz