CVE-2026-64451

Linux kernel (GCP) vulnerabilities

Beschreibung

Im Linux-Kernel wurde folgende Schwachstelle behoben: Tracing: Behebung des NULL-Zeiger-Dereferenzierens in `func_set_flag()`. `func_set_flag()` dereferenziert `tr->current_trace_flags`, bevor überprüft wird, ob der aktuelle Tracer tatsächlich der Funktionstracer ist. Wenn der aktive Tracer auf "function" umgeschaltet wurde (z.B., zu "wakeup_rt"), kann `tr->current_trace_flags` NULL sein, was zu einer NULL-Zeiger-Dereferenzierung und einem Kernelabsturz führt. Der Aufrufverlauf, der dies auslöst, ist: `trace_options_write()` -> `__set_tracer_option()` -> `trace->set_flag()` /* func_set_flag */ In `func_set_flag()` ist die erste Operation: `if (!!set == !!(tr->current_trace_flags->val & bit))` Dies dereferenziert `tr->current_trace_flags` unbedingt. Die Sicherheitsüberprüfung, die gegen einen nicht-Funktions-Tracer schützt: `if (tr->current_trace != &function_trace)` `return 0;` wird *nach* der Dereferenzierung platziert, was zu spät ist. Dies wurde mit folgendem Absturzprotokoll beobachtet: BUG: Kann Seitenfehler bei 0000000000000000 nicht behandeln RIP: `func_set_flag+0xd` Aufrufverfolgung: `__set_tracer_option+0x27` `trace_options_write+0x75` `vfs_write+0x12a` `ksys_write+0x66` `do_syscall_64+0x5b` RIP: ffffffff914c973d RSP: ff67ec88b01dfdf0 RFLAGS: 00010202 RAX: 0000000000000000 RBX: ff3a826e80354580 RCX: 0000000000000001 RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffffff93918080 Die Disassemblierung 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 ; Seitenfehler: Dereferenzierung von 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 Funktionstracer-Optionendatei öffnet (wie "func_stack_trace"), dann wird der aktuelle Tracer auf einen anderen Tracer umgeschaltet (z.B., "wakeup_rt"), was `current_trace_flags` auf NULL setzt. Wenn der Prozess anschließend in die Optionendatei schreibt, wird `func_set_flag()` aufgerufen und stürzt bei der NULL-Dereferenzierung ab. Dies wird behoben, indem die Überprüfung von `current_trace` vor der Dereferenzierung von `current_trace_flags` verschoben wird, sodass `func_set_flag()` frühzeitig zurückkehrt, wenn der Funktionstracer nicht aktiv ist.

Metriken

Severity
medium
kein öffentlicher PoC bekannt
5.5
Quelle: nvd-v3
1.5 %
Niedrig — CVE gehört zu den unteren 10 % der heute bewerteten CVEs.
0.1 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2026-09-07 09:05 UTC

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. CVE Modified2026-08-17 05:17 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • Affected: Linux, LinuxLinux, Linux
  2. New CVE Received2026-07-25 10:17 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • Affected: Linux, Linux
    • Description: In the Linux kernel, the following vulnerability has been resolved: tracing: Fix NULL pointer dereference in func_set_flag() func_set_flag() dereferences tr->current_trace_flags before verifying that the current tracer is actually the function tracer. When the active tracer has been switched away from "function" (e.g., to "wakeup_rt"), tr->current_trace_flags can be NULL, leading to a NULL pointer dereference and kernel crash. The call chain that triggers this is: trace_options_write() -> __set_tracer_option() -> trace->set_flag() /* func_set_flag */ In func_set_flag(), the first operation is: if (!!set == !!(tr->current_trace_flags->val & bit)) This dereferences tr->current_trace_flags unconditionally. The safety check that guards against a non-function tracer: if (tr->current_trace != &function_trace) return 0; is placed *after* the dereference, which is too late. This was observed with the following crash dump: BUG: unable to handle page fault at 0000000000000000 RIP: 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: ff67ec88b01dfdf0 RFLAGS: 00010202 RAX: 0000000000000000 RBX: ff3a826e80354580 RCX: 0000000000000001 RDX: 0000000000000001 RSI: 0000000000000000 RDI: ffffffff93918080 The disassembly confirms the fault: 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 At the time of the crash: tr->current_trace_flags = 0x0 (NULL) tr->current_trace = wakeup_rt_tracer (not function_trace) The scenario is that a process opens a function tracer option file (such as "func_stack_trace"), then the current tracer is switched to another tracer (e.g., "wakeup_rt"), which sets current_trace_flags to NULL. When the process subsequently writes to the option file, func_set_flag() is invoked and crashes on the NULL dereference. Fix this by moving the current_trace check before the current_trace_flags dereference, so that func_set_flag() returns early when the function tracer is not active.
    • Reference: https://git.kernel.org/stable/c/69f17ac132a38974cf1defb480cef6b79d1ab768
    • Reference: https://git.kernel.org/stable/c/c3e94604675e3db186111b8942650d86577df9b0

Betroffene Betriebssysteme

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux7.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    ubuntu / linux-aws-6.8jammy

  • linux

    ubuntu / linux-azureresolute

  • linux

    ubuntu / linux-azuretrusty

  • linux

    ubuntu / linux-azurexenial

  • linux

    ubuntu / linux-azure-4.15bionic

  • linux

    ubuntu / linux-azure-5.4bionic

  • linux

    ubuntu / linux-azure-fdenoble

  • linux

    ubuntu / linux-azure-fderesolute

  • linux

    ubuntu / linux-azure-fde-6.8jammy

  • linux

    ubuntu / linux-azure-fipsbionic

  • linux

    ubuntu / linux-azure-fipsfocal

  • linux

    ubuntu / linux-azure-fipsnoble

  • linux

    ubuntu / linux-fipsjammy

  • linux

    ubuntu / linux-gcp-7.0noble

  • linux

    ubuntu / linux-gkejammy

  • linux

    ubuntu / linux-nvidia-tegranoble

  • linux

    ubuntu / linux-raspinoble

  • linux

    ubuntu / linux-raspi-realtimenoble

  • linux

    linux / linux_kernel2.6.12

  • linux

    linux / linux_kernel2.6.15

Quellen & Referenzen

Verknüpfte CVEs

1392 weitere CVEs anzeigen
IDCVE-2026-64451
Linux kernel (GCP) vulnerabilities — CVE-2026-64451 | NEOSEC Intel