Claude erlangte innerhalb von 8 Stunden eine Root-Shell, indem er einen Exploit für den FreeBSD-Kernel entwickelte
18:15, 02.04.2026
Vor kurzem veröffentlichte der Forscher Nicolas Carlini einen Bericht darüber, wie Claude in nur 8 Stunden einen voll funktionsfähigen Exploit für die Remote-Codeausführung im FreeBSD-Kernel entwickelte.
Details zur Erstellung des Exploits durch ein neuronales Netz
Die entdeckte Schwachstelle trägt die Nummer CVE-2026-4747 und wurde bereits Ende März behoben. Der Forscher beschloss jedoch, erneut zu überprüfen, ob Claude die Beschreibung in einen funktionierenden Exploit umsetzen könnte. In knapp 8 Stunden Arbeit gelang es der KI, einen Code zu reproduzieren, der eine Root-Shell öffnete, wobei die tatsächliche Arbeitszeit von Claude nur etwa 4 Stunden betrug.
Claude entwickelte eine 15-Runden-Strategie für den Exploit, die aus folgenden Schritten bestand:
- In der ersten Runde wird pmap_change_prot() über eine ROP-Kette aufgerufen, um die Speicherrechte des BSS-Kernels auf RWX zu ändern.
- Anschließend wird über 14 Runden hinweg der Shellcode in 32-Byte-Teilen geschrieben.
- Der letzte Schritt besteht darin, die letzten Bytes zu übertragen und zum Shellcode zu springen.
Während der Ausführung jeder Runde wird ein NFS-Kernel-Stream mit kthread_exit() beendet, doch der Server läuft weiter. Der schwierigste Schritt war der Übergang vom Kernel in den Benutzerbereich. Über einen NFS-Thread ist es nicht möglich, execve() direkt aufzurufen, weshalb folgendes Schema verwendet wurde:
- Zunächst ruft der hijacked-Thread kproc_create() auf, wodurch ein vollwertiger Prozess erstellt und anschließend beendet wird.
- Im nächsten Schritt startet der neue Prozess über kern_execve() /bin/sh.
Während der Tests stürzte der Worker-Prozess jedoch aufgrund von Hardware-Breakpoints ab. Um dieses Problem zu beheben, mussten bestimmte Befehle in den Shellcode eingefügt werden, um das DR7-Register zu löschen.
Ein weiterer wichtiger Punkt war die Ermittlung des richtigen Offsets für das Überschreiben des RIP. Claude fand mithilfe einer zyklischen Sequenz heraus, dass der richtige Wert 200 Byte beträgt.
Natürlich wurden bereits vor diesem Experiment Fuzzers eingesetzt, um Schwachstellen im Kernel aufzudecken, doch die Erstellung eines funktionierenden Exploits galt mithilfe von KI bislang als unmöglich. In diesem Fall generierte Claude nicht nur Code, sondern:
- richtete eine Testumgebung ein, wobei er den Bedarf an 2 CPUs berücksichtigte.
- generierte ein Debugging über QEMU.
- verwendete außerdem ROP-Gadgets.
- behebte das Problem mit vererbten Debug-Registern.
Das Auffinden von Fehlern in Programmen mithilfe von Computern war nie ein großes Problem. Aber das Auffinden und Ausnutzen ist ein völlig neuer Ansatz, der ein tiefes Verständnis der Prozesse der Betriebssysteminstallation, der Anpassung, der Speicherverwaltung, der Erstellung von ROP-Ketten und vieles mehr erfordert.
Wir hoffen, dass der Artikel hilfreich war – was meinen Sie? Liken Sie ihn und abonnieren Sie unseren Blog, um weitere praktische Tipps und die neuesten Nachrichten zu Technologien von HostZealot zu erhalten.