Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
kfd — kfd, kurz für Kernel-Dateideskriptor, ist ein Projekt zum Lesen und Schreiben von Kernel-Speicher auf Apple-Geräten. | Kitploit
Tools/GitHubGitHub/felix-pb/kfd
iOS-SicherheitExploitationMobile SicherheitBinary-Exploitation
GitHubfelix-pb/kfd

kfd

kfd, kurz für Kernel-Dateideskriptor, ist ein Projekt zum Lesen und Schreiben von Kernel-Speicher auf Apple-Geräten.

Repository anzeigen
1k1846vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Kurzer Hinweis: Ich habe nicht vor, Offsets für andere Geräte und iOS-Versionen hinzuzufügen.

kfd

kfd, kurz für kernel file descriptor, ist ein Projekt zum Lesen und Schreiben von Kernel-Speicher auf Apple-Geräten. Es nutzt verschiedene Sicherheitslücken, die ausgenutzt werden können, um hängende PTEs (dangling PTEs) zu erhalten, die im Folgenden als PUAF-Primitive bezeichnet werden, kurz für „physical use-after-free“. Anschließend belegt es bestimmte Kernel-Objekte innerhalb dieser physischen Seiten neu und manipuliert sie direkt aus dem User Space über die hängenden PTEs, um eine KRKW-Primitive zu erreichen, kurz für „kernel read/write“. Der Exploit-Code ist vollständig in einer Bibliothek enthalten, libkfd, aber das Projekt enthält auch einfache ausführbare Wrapper für iOS und macOS. Die öffentliche API von libkfd ist recht klein und intuitiv:

root@kitploit:~
enum puaf_method {
    puaf_physpuppet,
    puaf_smith,
    puaf_landa,
};

enum kread_method {
    kread_kqueue_workloop_ctl,
    kread_sem_open,
};

enum kwrite_method {
    kwrite_dup,
    kwrite_sem_open,
};

u64 kopen(u64 puaf_pages, u64 puaf_method, u64 kread_method, u64 kwrite_method);
void kread(u64 kfd, u64 kaddr, void* uaddr, u64 size);
void kwrite(u64 kfd, void* uaddr, u64 kaddr, u64 size);
void kclose(u64 kfd);

kopen() öffnet konzeptionell einen „Kernel-Dateideskriptor“. Es nimmt die folgenden 4 Argumente entgegen:

  • puaf_pages: Die Zielanzahl physischer Seiten mit hängenden PTEs.
  • puaf_method: Die Methode zum Erlangen der PUAF-Primitive, mit den folgenden Optionen:
    • puaf_physpuppet:
      • Diese Methode nutzt CVE-2023-23536.
      • Behoben in iOS 16.4 und macOS 13.3.
      • Aus der App-Sandbox erreichbar, aber nicht aus der WebContent-Sandbox.
      • 52.500 US-Dollar Apple-Security-Bounty-Prämie.
    • puaf_smith:
      • Diese Methode nutzt CVE-2023-32434.
      • Behoben in iOS 16.5.1 und macOS 13.4.1.
      • Aus der WebContent-Sandbox erreichbar und wurde möglicherweise aktiv ausgenutzt.
    • puaf_landa:
      • Diese Methode nutzt CVE-2023-41974.
      • Behoben in iOS 17.0 und macOS 14.0.
      • Aus der App-Sandbox erreichbar, aber nicht aus der WebContent-Sandbox.
      • 70.000 US-Dollar Apple-Security-Bounty-Prämie.
  • kread_method: Die Methode, mit der die anfängliche kread()-Primitive erlangt wird.
  • kwrite_method: Die Methode, mit der die anfängliche -Primitive erlangt wird.

Wenn der Exploit erfolgreich ist, gibt kopen() einen 64-Bit-opaken Dateideskriptor zurück. In der Praxis ist dies nur ein User-Space-Zeiger auf eine Struktur, die von libkfd benötigt wird. Da auf diese Struktur jedoch nicht außerhalb der Bibliothek zugegriffen werden sollte, wird sie als opaker Integer zurückgegeben. Wenn der Exploit fehlschlägt, gibt die Bibliothek eine Fehlermeldung aus, schläft 30 Sekunden lang und beendet sich mit dem Statuscode 1. Sie schläft 30 Sekunden lang, weil der Kernel beim Beenden für bestimmte PUAF-Methoden, die nach KRKW eine gewisse Bereinigung erfordern (z. B. puaf_smith), einen Panic auslösen könnte.

kread() und kwrite() sind das User-Space-Pendant zu copyout() bzw. copyin(). Bitte beachten Sie, dass die Optionen für kread_method und kwrite_method in einem separaten Write-up beschrieben werden. Darüber hinaus können die anfänglichen Primitive, die diese Methoden gewähren, verwendet werden, um eine bessere KRKW-Primitive aufzubauen. Schließlich schließt kclose() einfach den Kernel-Dateideskriptor. Alle nehmen den opaken Integer, der von kopen() zurückgegeben wird, als erstes Argument entgegen.


Wie baue und starte ich kfd auf einem iPhone?

In Xcode öffnen Sie den Hauptordner des Projekts und schließen Sie Ihr iOS-Gerät an.

  • Um das Projekt zu bauen, wählen Sie Produkt > Build (⌘B).
  • Um das Projekt auszuführen, wählen Sie Produkt > Run (⌘R) und klicken Sie dann in der App auf die Schaltfläche „kopen“.

Wie baue und starte ich kfd auf einem Mac?

Navigieren Sie in einem Terminal zum Hauptordner des Projekts.

Optional können Sie, um die globalen und pro-Prozess geltenden Dateideskriptor-Limits zu erhöhen, was die Erfolgsquote insbesondere bei mehreren aufeinanderfolgenden Läufen verbessert, den Befehl make s eingeben und das sudo-Passwort tippen.

  • Um das Projekt zu bauen, geben Sie den Befehl make b ein.
  • Um das Projekt auszuführen, geben Sie den Befehl make r ein.
  • Um das Projekt auf einmal zu bauen und auszuführen, geben Sie den Befehl make br ein.

Wo finde ich detaillierte Write-ups zu den Exploits?

Diese README hat einen Überblick auf hoher Ebene über das kfd-Projekt gegeben. Sobald eine PUAF-Primitive erzielt wurde, ist der Rest des Exploits generisch. Daher habe ich den gemeinsamen Teil der Exploits in ein eigenes Write-up aufgenommen:

  • Exploiting PUAFs

Darüber hinaus habe ich den vulnerability-spezifischen Teil der Exploits, die zum Erzielen der PUAF-Primitive verwendet werden, in einzelne Write-ups aufgeteilt, die unten in chronologischer Reihenfolge der Entdeckung aufgeführt sind:

  • PhysPuppet
  • Smith
  • Landa

Bitte beachten Sie jedoch, dass diese Write-ups für ein Publikum geschrieben wurden, das bereits mit dem virtuellen Speichersystem von XNU vertraut ist.

Tool herunterladen
kwrite()