out-of-tree v1.0.0 – Tools zum Entwickeln und Testen von Exploits und Linux-Kernelmodulen


out-of-tree v1.0.0 – Tools zum Entwickeln und Testen von Exploits und Linux-Kernelmodulen

Die erste (v1.0.0) Version von out-of-tree, einem Toolkit zum Entwickeln und Testen von Exploits und Linux-Kernelmodulen, wurde veröffentlicht.

Mit Out-of-Tree können Sie einige Routineaktionen automatisieren, um Umgebungen zum Debuggen von Kernel-Modulen und Exploits zu erstellen, Exploit-Zuverlässigkeitsstatistiken zu erstellen und bietet außerdem die Möglichkeit zur einfachen Integration in CI (Continuous Integration).

Jedes Kernelmodul oder jeder Exploit wird durch eine Datei .out-of-tree.toml beschrieben, die Informationen über die erforderliche Umgebung und (falls es sich um einen Exploit handelt) Einschränkungen für den Betrieb bei Vorhandensein bestimmter Sicherheitsmaßnahmen angibt.

Mit dem Toolkit können Sie außerdem bestimmte Kernelversionen identifizieren, die von einer Schwachstelle betroffen sind (mit dem Befehl --guess), und es kann auch zur Vereinfachung der binären Suche nach einem bestimmten Commit verwendet werden.

Nachfolgend finden Sie eine Liste der Änderungen seit Version v0.2.

Verfasst am

  • Es wurde die Möglichkeit implementiert, die Anzahl der generierten (Out-of-Tree-Kernel-Autogen-)Kernel (basierend auf der Beschreibung in .out-of-tree.toml) zu begrenzen und Läufe (Out-of-Tree-Pew) mithilfe von —max= zu überprüfen X-Parameter.

  • Neuer Befehl „genall“, mit dem Sie alle Kernel für eine bestimmte Distribution und Version generieren können.

  • Alle Protokolle werden jetzt in der SQLite3-Datenbank gespeichert. Implementierte Befehle für einfache, häufig benötigte Abfragen sowie den Export von Daten nach JSON und Markdown.

  • Berechnung der Wahrscheinlichkeit eines erfolgreichen Betriebs implementiert (basierend auf früheren Starts).

  • Möglichkeit zum Speichern von Build-Ergebnissen (neuer Parameter --dist für Out-of-Tree-Pew-Befehl)

  • Unterstützung für die Generierung von Metadaten für auf dem Hostsystem installierte Kernel sowie für die Erstellung direkt auf dem Host.

  • Unterstützung für Kernel von Drittanbietern.

  • Die Out-of-Tree-Debug-Umgebung sucht jetzt automatisch nach Debugging-Symbolen auf dem Hostsystem.

  • Es wurde die Möglichkeit hinzugefügt, Sicherheitsminderungen mit den Aktivierungs-/Deaktivierungsflags KASLR, SMEP, SMAP und KPTI während des Debuggens zu verwalten.

  • Dem Out-of-Tree-Pew-Testbefehl wurde der Parameter --threads=N hinzugefügt, mit dem die Anzahl der Threads angegeben werden kann, in denen Exploits und Kernelmodule erstellt/ausgeführt und getestet werden sollen.

  • Die Möglichkeit, ein Tag festzulegen, das im Protokoll aufgezeichnet wird und dann zur Berechnung von Statistiken verwendet werden kann.

  • Möglichkeit hinzugefügt, die Kernelversion ohne Verwendung regulärer Ausdrücke anzugeben.

  • Neuer Pack-Befehl, der für Massentests von Exploits und Kernel-Modulen in Unterverzeichnissen verwendet wird.

  • In der Konfiguration (.out-of-tree.toml) für das Exploit- und Kernel-Modul wurde die Möglichkeit hinzugefügt, KASLR, SMEP, SMAP und KPTI zu deaktivieren sowie die erforderliche Anzahl von Kernen und Speicher anzugeben.

  • Jetzt werden Bilder (rootfs) automatisch geladen, während die Kernel-Autogenierung ausgeführt wird. Bootstrap wird nicht mehr benötigt.

  • Unterstützung für CentOS-Kernel.

Änderungen

  • Wenn nun kein Image (rootfs) für die erforderliche Version der Distribution vorhanden ist, versucht out-of-tree, das Image der nächstgelegenen Version zu verwenden. Beispiel: Ubuntu 18.04-Image für Ubuntu 18.10.

  • Nun gelten Tests für Kernelmodule nicht mehr als fehlgeschlagen, wenn sie fehlen (keine Tests – keine Fehler!).

  • Jetzt gibt Out-of-Tree einen negativen Fehlercode zurück, wenn mindestens eine Phase (Build, Launch oder Test) auf einem der Kerne fehlgeschlagen ist.

  • Das Projekt ist auf die Verwendung von Go-Modulen umgestiegen, das Bauen mit GO111MODULE=on wird nun bevorzugt.

  • Standardtests hinzugefügt.

  • Test.sh wird jetzt standardmäßig verwendet, wenn die Assembly in ${TARGET}_test nicht im Makefile implementiert ist.

  • Das Kernel-Protokoll wird nicht mehr gelöscht, bevor ein Kernel-Modul oder ein Exploit ausgeführt wird. Einige der Exploits nutzen ein Kernel-Basisleck in dmesg, um KASLR zu umgehen, sodass die Bereinigung möglicherweise die implementierte Logik des Exploits kaputt macht.

  • qemu/kvm nutzt nun alle Fähigkeiten des Host-Prozessors.

gelöscht

  • Kernel-Fabrik aufgrund der Implementierung der Kernel-Generierung basierend auf inkrementell aktualisierten Docker-Dateien vollständig entfernt.

  • Bootstrap macht nichts anderes. Der Befehl wird in der nächsten Version entfernt.

Behoben

  • Unter macOS ist die Ausführung von GNU coreutils nicht mehr erforderlich.

  • Temporäre Dateien wurden aufgrund von Mountfehlern im Docker auf einigen Systemen nach ~/.out-of-tree/tmp/ verschoben.

Source: linux.org.ru

Kommentar hinzufügen