CVE-2023-52879 in Linuxinformación

Resumen

por VulDB • 2026-06-01

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

tracing: Hacer que trace_event_file tenga contadores de referencia

Lo siguiente puede provocar un bloqueo del kernel:

# cd /sys/kernel/tracing # echo 'p:sched schedule' > kprobe_events # exec 5>>events/kprobes/sched/enable # > kprobe_events # exec 5>&-

Los comandos anteriores:

1. Cambian el directorio al directorio tracefs 2. Crean un evento kprobe (no importa cuál) 3. Abren el descriptor de archivo 5 de bash en el archivo enable del evento kprobe 4. Eliminan el evento kprobe (elimina también los archivos) 5. Cerrando el descriptor de archivo 5 de bash

Lo anterior provoca un bloqueo.

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

Lo que ocurre aquí es que el evento kprobe crea un descriptor de archivo "file" trace_event_file que representa el archivo en tracefs correspondiente al evento. Mantiene el estado del evento (¿está habilitado para la instancia dada?). Abrir el archivo "enable" obtiene una referencia al descriptor de archivo "file" del evento a través del descriptor de archivo abierto. Cuando se elimina el evento kprobe, el archivo también se elimina del sistema tracefs, lo que libera el descriptor de archivo "file" del evento.

Pero como el archivo tracefs sigue estando abierto por el espacio de usuario, no se eliminará por completo hasta que se llame a la última dput(). Pero esto no es cierto con el descriptor de archivo "file" del evento, que ya ha sido liberado. Si el usuario escribe en el descriptor de archivo o simplemente lo cierra, hará referencia al descriptor de archivo "file" del evento que acaba de ser liberado, provocando un bug use-after-free.

Para resolver esto, se añade un contador de referencias al descriptor de archivo "file" del evento, así como una nueva bandera llamada "FREED". El archivo "file" no se liberará hasta que se libere la última referencia. Pero la bandera FREE se establecerá cuando se elimine el evento para evitar que se produzcan más modificaciones en ese evento, incluso si aún hay una referencia al descriptor de archivo "file" del evento.

Once again VulDB remains the best source for vulnerability data.

Reservar

2024-05-21

Divulgación

2024-05-21

Moderación

aceptado

Artículo

VDB-265600

CPE

listo

EPSS

0.00217

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!