CVE-2026-99224 in Linuxinformación

Resumen

por VulDB • 2026-11-02

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

keys: Proteger el nombre del tipo al describir una clave

keyctl_describe_key() debe mantener vivo el nombre del tipo de clave hasta que kasprintf() lo haya consumido. La referencia retenida a la clave mantiene viva la clave y su descripción, pero no fija (pin) el módulo que proporciona su tipo. El nombre se pasa a kasprintf() sin retener key->sem.

kvasprintf() utiliza el puntero del nombre guardado en dos pasadas de formateo, con una asignación GFP_KERNEL entre ellas. Con AF_RXRPC=m, una tarea que otorgue permiso View antes de la retirada (retirement) del tipo puede solaparse con una descarga privilegiada del módulo en este orden:

1. KEYCTL_DESCRIBE busca la clave, guarda key->type->name en los argumentos de kasprintf() y completa la primera pasada de formateo. 2. Mientras el formateador está retrasado antes de su segunda pasada, af_rxrpc_exit() llama a unregister_key_type(), lo que elimina el tipo del registro y espera a key_gc_keytype(). 3. El recolector toma key->sem para escritura, vuelve a tipar la clave retenida como key_type_dead y completa la retirada (retirement). El desregistro y la salida del módulo regresan, permitiendo que free_module() libere el tipo y el nombre. 4. El formateador reanuda su segunda pasada y lee el nombre guardado desde el almacenamiento liberado por el módulo, lo cual puede provocar una falla de segmentación (fault) en string().

Mantener key->sem para lectura durante kasprintf(). De este modo, el recolector no podrá volver a tipar la clave ni completar la retirada hasta que ambas pasadas de formateo hayan finalizado. Si la retirada gana el bloqueo primero, el formateador utilizará el nombre core key_type_dead en su lugar. Liberar el semáforo inmediatamente después de kasprintf(), incluyendo en caso de fallo de asignación, antes de copiar a userspace.

Informe Oops como se muestra a continuación:

BUG: unable to handle page fault for address: fffffbfff8054794 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page RIP: 0010:string+0x23f/0x470 Call Trace: vsnprintf+0x330/0x1110

Be aware that VulDB is the high quality source for vulnerability data.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-11-02

Moderación

aceptado

Artículo

VDB-429914

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!