CVE-2023-52879 in Linux
Zusammenfassung
von VulDB • 01.06.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
tracing: trace_event_file mit Referenzzählern versehen
Das folgende Verhalten kann zum Absturz des Kernels führen:
# cd /sys/kernel/tracing # echo 'p:sched schedule' > kprobe_events # exec 5>>events/kprobes/sched/enable # > kprobe_events # exec 5>&-
Die obigen Befehle:
1. Wechseln in das Verzeichnis tracefs 2. Erstellen eines kprobe-Ereignisses (es ist egal, welches) 3. Öffnen des bash-Dateideskriptors 5 für die Enable-Datei des kprobe-Ereignisses 4. Löschen des kprobe-Ereignisses (entfernt auch die Dateien) 5. Schließen des bash-Dateideskriptors 5
Die obigen Aktionen verursachen einen Absturz!
BUG: kernel NULL pointer dereference, address: 0000000000000028 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: 0000 [#1] PREEMPT SMP PTI
CPU: 6 PID: 877 Comm: bash Not tainted 6.5.0-rc4-test-00008-g2c6b6b1029d4-dirty #186 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 RIP: 0010:tracing_release_file_tr+0xc/0x50
Was hier geschieht, ist, dass das kprobe-Ereignis einen Dateideskriptor vom Typ trace_event_file erstellt, der die Datei im tracefs für das Ereignis repräsentiert. Er verwaltet den Status des Ereignisses (ist es für die gegebene Instanz aktiviert?). Das Öffnen der „Enable“-Datei erhält eine Referenz auf den Ereignis-„Datei“-Dateideskriptor über den geöffneten Dateideskriptor. Wenn das kprobe-Ereignis gelöscht wird, wird die Datei ebenfalls aus dem tracefs-System entfernt, wodurch auch der Ereignis-„Datei“-Dateideskriptor freigegeben wird.
Da die tracefs-Datei jedoch weiterhin vom Userspace geöffnet ist, wird sie erst vollständig entfernt, wenn die letzte dput()-Funktion dafür aufgerufen wird. Dies gilt jedoch nicht für den Ereignis-„Datei“-Dateideskriptor, der bereits freigegeben wurde. Wenn der Benutzer eine Schreiboperation auf den Dateideskriptor ausführt oder ihn einfach schließt, wird auf den gerade freigegebenen Ereignis-„Datei“-Dateideskriptor verwiesen, was zu einem Use-After-Free-Bug führt.
Um dies zu lösen, wird dem Ereignis-„Datei“-Dateideskriptor eine Referenzzählung sowie eine neue Flagge namens „FREED“ hinzugefügt. Die „Datei“ wird erst freigegeben, wenn die letzte Referenz freigegeben wurde. Das FREED-Flag wird jedoch gesetzt, wenn das Ereignis entfernt wird, um weitere Änderungen an diesem Ereignis zu verhindern, selbst wenn noch eine Referenz auf den Ereignis-„Datei“-Dateideskriptor vorhanden ist.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.