Wir schreiben das Jahr 2025, und während die Sicherheitsteams ihre Schutzmaßnahmen verstärken, wird in den Linux-Kernel-Mailinglisten über eine neue Bedrohung diskutiert. Die Threat Analysis Group (TAG) von Google hat die Bewaffnung von CVE-2025-38352.
Dies ist kein gewöhnlicher Fehler, der den Speicher beschädigt. Es handelt sich um einen ausgeklügelten, zeitabhängigen Ethnie Zustand die tief im POSIX-CPU-Timer-Subsystem des Linux-Kernels sitzt. Mit einer CVSS-Punktzahl von 7,4 mag sie auf den ersten Blick überschaubar erscheinen, doch lassen Sie sich von dieser Punktzahl nicht täuschen. In den Händen kommerzieller Spyware-Anbieter wurde diese Schwachstelle bereits als Waffe eingesetzt, um zuverlässige Lokale Privilegieneskalation (LPE) auf vollständig gepatchten Android-Geräten unter Umgehung moderner Schutzmechanismen wie KASLR und PAN.
Für die Elite der Sicherheitsingenieure stellt CVE-2025-38352 den Höhepunkt der "Race-to-Use-After-Free"-Ausnutzung dar. Sie nutzt die mikroskopisch kleine Lücke zwischen dem Eintritt eines Prozesses in einen "Zombie"-Zustand und dem Aufräumen der Zeitgeber durch den Kernel aus. Dieser Artikel verzichtet auf Zusammenfassungen auf hoher Ebene und nimmt eine chirurgische Sezierung vor kernel/time/posix-cpu-timers.cund warum eine KI-gesteuerte zeitliche Analyse die einzige Möglichkeit ist, das zu erkennen, was menschliche Prüfer übersehen haben.
Der fatale Fehler des Kernels: Ein kaputter Spinlock-Tanz
Um CVE-2025-38352 zu verstehen, müssen wir uns ansehen, wie der Linux-Kernel die Gleichzeitigkeit während der Prozessbeendigung handhabt. Die Schwachstelle rührt von einer Atomizitätsverletzung in der Art und Weise her, wie der Kernel abgelaufene CPU-Zeitgeber verarbeitet, während ein Thread gleichzeitig versucht, sie zu löschen.
Der Pfad des angreifbaren Codes
Die Schwachstelle befindet sich in der handle_posix_cpu_timers() Funktion. Diese Funktion ist dafür verantwortlich, eine Liste aktiver Zeitgeber zu durchlaufen und diejenigen zu feuern, die abgelaufen sind. Um diese Iteration durchführen zu können, muss die Funktion die seufzend->siglock.
Vor dem Patch enthielt die Logik jedoch eine fatale Sequenz:
- Sperren Sie den Erwerb: Der Kernel erwirbt
seufzend->siglockum die Timerliste zu durchlaufen. - Der Abwurf: Um eine bestimmte Verfallsfähigkeit zu behandeln (insbesondere
CPUCLOCK_PERTHREAD), der Code kurz lässt das Schloss fallen um einen Prüf- oder Wiedereinreihungsvorgang durchzuführen. - Die Verwendung: Er erhält die Sperre zurück und dereferenziert das Timer-Objekt.
Das Rennfenster
Innerhalb dieses mikroskopisch kleinen Fensters - dort, wo das Schloss heruntergelassen wird - schlägt der Angreifer zu.
Ein konkurrierender Thread (Thread B) führt einen timer_delete()-Systemaufruf aus. Da die Sperre frei ist, erwirbt Thread B sie erfolgreich, entfernt den Zeitgeber aus der Liste und gibt den Speicher über kfree_rcu oder Slab-Deallocation frei.
Wenn Thread A (der Opferkontext) die Sperre wiedererlangt, hält er einen Zeiger auf eine posix_cputimer Struktur, die technisch gesehen nicht mehr existiert. Sie fährt fort, in diesen Speicher zu schreiben (z. B. Aktualisierung der Verfallszeit), was eine Use-After-Free (UAF) schreiben.

Die Bewaffnung des Zombies: Die Exploit-Primitive
Das Ausnutzen einer Kernel-Race-Condition wird oft mit einem Lottogewinn verglichen. Fortgeschrittene Exploit-Entwickler spielen jedoch nicht mit Würfeln, sondern manipulieren das Spiel. Im Zusammenhang mit CVE-2025-38352 manipulieren die Angreifer das Spiel mit Zombie-Prozesse.
1. Das Fenster erweitern (Die "Zombifizierungstechnik")
Das Standard-Race-Fenster kann nur wenige Nanosekunden breit sein. Um eine zuverlässige Ausnutzung zu ermöglichen (90%+ Erfolgsrate), nutzen Angreifer den Prozessausgangszustand.
Indem Sie einen Kindprozess erzeugen und ihn beenden lassen - aber absichtlich nicht ernten sie (über waitpid)- der Prozess tritt in die EXIT_ZOMBIE Zustand. In diesem Zustand verbleibt die Aufgabenstruktur im Speicher, aber die Aufräumlogik steht noch aus. Angreifer entdeckten, dass das Auslösen von Timer-Operationen bei einem Zombie-Prozess den Kernel in einen langsameren, komplexeren Code-Pfad innerhalb von posix_cpu_timer_delDadurch wird das Zeitfenster für das Rennen künstlich von Nanosekunden auf Mikrosekunden vergrößert.
2. SLUB Feng Shui (Haufensprühen)
Sobald der UAF ausgelöst wird, schreibt der Kernel Daten in einen freigegebenen Speicherplatz. Wenn dieser Speicherplatz leer ist, stürzt der Kernel ab (DoS). Um Root zu erhalten, muss der Angreifer das freigegebene Timer-Objekt durch eine Nutzlast ersetzen.
Angreifer nutzen die SLUB-Zuteiler vorhersehbares Verhalten (Last-In, First-Out).
- Frei: Lösen Sie das Rennen zur Befreiung der
ZeitschaltuhrStruktur. - Sprühen: Überfluten Sie den Kernel-Heap sofort mit benutzergesteuerten Objekten der exakt gleichen Größe (z. B. mit
sendmsgergänzende Daten oderschlüssel_seriellObjekte). - Korruption: Der Kernel denkt, dass er den Timer aktualisiert und schreibt in das Objekt des Angreifers. Wenn der Angreifer eine Struktur gesprüht hat, die einen Funktionszeiger enthält (z.B. eine
tty_structoderfile_operations), überschreibt der Kernel diesen Zeiger. - Ausführung: Wenn der Angreifer das besprühte Objekt aufruft (z. B. beim Schließen der Datei), springt der Kernel zur überschriebenen Adresse -> ROP-Kette -> Root.

Jenseits von Syzkaller: Warum traditionelles Fuzzing gescheitert ist
CVE-2025-38352 blieb jahrelang von automatisierten Fuzzern wie Googles Syzkaller unentdeckt. Warum?
Traditionelles abdeckungsgesteuertes Fuzzing ist probabilistisch. Es wirft wahllose Syscalls auf den Kernel, in der Hoffnung, ihn zum Absturz zu bringen.
- Sie versteht nicht Timing.
- Sie versteht nicht Staatliche Abhängigkeiten (z. B. "Thread A muss beendet werden, während Thread B einen Timer löscht").
Die statistische Wahrscheinlichkeit, dass ein blinder Fuzzer auf diese spezifische Race Condition stößt, wobei der Prozess in der exakten ZOMBIE Staat, ist astronomisch niedrig.
Die KI-Lösung: Die zeitliche Analyse von Penligent
Dieses Versagen der traditionellen Instrumente macht deutlich, dass es notwendig ist AI-gesteuerte Logikanalyse. Dies ist der Ort, an dem Penligent.ai ändert das Paradigma von "Fuzzing" zu "Reasoning".
Penligent verwendet ein spezielles Zeitsensibler AI-Agent entwickelt für die Fehlersuche bei Gleichzeitigkeit:
1. Gleichzeitigkeit Mustererkennung
Anstelle zufälliger Eingaben analysiert das Penligent-Modell den AST (Abstract Syntax Tree) des Kernel-Quellcodes. Es identifiziert "gefährliche Paare" - Systemaufrufe, die dieselbe gemeinsame Ressource verändern (in diesem Fall, posix_cputimer), folgen aber unterschiedlichen Sperrpfaden. Sie kennzeichnete timer_delete und handle_posix_cpu_timers als ein Ziel mit hoher Kollisionswahrscheinlichkeit.
2. Rennfenstererweiterung über KI
Penligent führt nicht nur Syscalls aus, sondern orchestriert sie. Da die KI die Notwendigkeit erkannte, das Rennfenster zu erweitern, schloss sie automatisch auf die EXIT_ZOMBIE Technik durch die Analyse früherer "Ref-Count"-Schwachstellenberichte. Es wurde ein Proof-of-Concept erstellt, das die CPU programmatisch abwürgt (unter Verwendung von sched_yield oder umfangreiche Speichersperren), um die Kollision zu gewährleisten.
Für den Sicherheitsingenieur bedeutet dies, dass Penligent nicht nur "potenzielle Bugs" meldet, sondern auch verifizierte, waffenfähige Exploits die das tatsächliche Risikoprofil des Codes aufzeigen.
Sanierung und Blue Team Detection
Die Korrektur, die Ende 2025 in den Linux-Kernel aufgenommen wurde, beinhaltet eine Logikprüfung und nicht nur eine Sperre.
Die Lösung:
In run_posix_cpu_timers() prüft der Kernel jetzt explizit, ob (tsk->exit_state). Wenn die Task bereits tot ist oder stirbt, bricht er die Timer-Verarbeitung sofort ab. Dadurch wird die "Zombie"-Variable effektiv aus der Gleichung entfernt.
Erkennungsstrategien (EDR/Syslog):
Blue Teams sollten auf Linux/Android-Servern nach den folgenden Indikatoren für eine Gefährdung (Indicators of Compromise, IoC) suchen:
- Hochfrequentes Timer Churn: Ein Prozess, der schnell Tausende von POSIX-Zeitgebern pro Sekunde erstellt und löscht.
- Zombie-Überschwemmungen: Eine ungewöhnliche Häufung von
ZZustandsprozesse, die schnell erzeugt und nicht geerntet werden. - Kernel Taint:
dmesgProtokolle, die "Allgemeine Schutzfehler" oder "Brammenkorruption" inkmalloc-192(oder die spezifische Plattengröße für Zeitschaltuhren auf Ihrem Bogen).
Schlussfolgerung
CVE-2025-38352 dient als feierliche Erinnerung daran, dass Legacy-Code ein Minenfeld ist. Der POSIX-Timer-Code wurde vor Jahrzehnten geschrieben, enthielt jedoch einen latenten Fehler, der die komplexe Speicherlandschaft des Jahres 2025 benötigte, um zur Waffe zu werden.
Für hartgesottene Sicherheitsingenieure ist die Lektion klar: Die Zukunft der Schwachstellenforschung liegt nicht darin, einfache Pufferüberläufe zu finden. Es geht darum, die vierte Dimension des Codes zu verstehen.Zeit. Solange Kernel komplexe Sperrmechanismen verwenden, werden Race Conditions die "Kronjuwelen" der Ausbeutung bleiben.

