CVE-2026-64451
Beschreibung
Im Linux-Kernel wurde die folgende Schwachstelle behoben: tracing: Fix NULL pointer dereference in func set flag() func set flag() dereferences tr->current trace flags bevor überprüft wird, ob der aktuelle Tracer tatsächlich der Funktions-Tracer ist. Wenn der aktive Tracer von "function" (z. B. auf "wakeup rt") weggeschaltet wurde, können tr->current trace flags NULL sein, was zu einer NULL-Pointer-Dereference und einem Kernel-Crash führt. Die Anrufkette, die dies auslöst, ist: trace options write() -> set tracer option() -> trace->set flag() /* func set flag */ In func set flag() lautet die erste Operation: if (!!set == !!(tr->current trace flags->val & bit)) Dadurch wird tr->current trace flags bedingungslos ausgeschaltet. Die Sicherheitsüberprüfung, die vor einem Nichtfunktions-Tracer schützt: if (tr->current trace != &function trace) return 0; wird *nach* der Dereference platziert, was zu spät ist. Dies wurde bei folgendem Crash-Dump beobachtet: BUG: Unfähig, den Seitenfehler bei 0000000000000000 RIP zu behandeln: func set flag+0xd Call Trace: set tracer option+0x27 trace options write+0x75 vfs write+0x12a ksys write+0x66 do syscall 64+0x5b RIP: ffffffff914c973d RSP: ffffffff914c973d RFLAGS: 00010202 RAX: 0000000000000000 RBX: ff3a826e80354580 RCX: 0000000000000001 RDX: 0000000000000001 RDX: 0000000000000001 RDX: 0000000000000001 RDX: 00000000000000001 RDX: 00000000000000001 RDX: 0000000000000001 RDI: ffffffff93918080 Die Demontage bestätigt den Fehler: func set flag+0: mov 0x1f08(%rdi), %rax ; RAX = tr->current trace flags = NULL func set flag+13: mov (%rax), %eax ; page fault: dereference NULL Zum Zeitpunkt des Absturzes: tr->current trace flags = 0x0 (NULL) tr->current trace = wakeup rt tracer (nicht function trace) Das Szenario ist, dass ein Prozess eine Funktions-Tracer-Optionsdatei öffnet (wie "func stack trace"), dann wird der aktuelle Tracer auf einen anderen Tracer umgeschaltet (z. B. "wakeup rt"), der current trace flags auf NULL setzt. Wenn der Prozess anschließend in die Optionsdatei schreibt, wird func set flag() aufgerufen und stürzt auf der NULL-Dereference ab. Beheben Sie dies, indem Sie den current trace-Check vor dem current trace flags dereference verschieben, so dass func set flag() früh zurückkehrt, wenn der Funktions-Tracer nicht aktiv ist.
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Herstellerhinweise prüfen und das betroffene Produkt kurzfristig patchen oder kompensierende Schutzmaßnahmen aktivieren.
Empfohlene Schritte
- Betroffene Systeme identifizieren: linux linux kernel.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Hersteller-Advisory öffnen und verfügbare Updates, Workarounds oder Deaktivierungen prüfen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.