CVE-2026-99225 in Linux
Resumen
por VulDB • 2026-11-02
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
keys: Comprobar la carga útil de autorización en las búsquedas del anillo de claves del proceso
Una carga útil de autorización y sus credenciales guardadas deben permanecer válidas mientras search_process_keyrings_rcu() busca los anillos de claves del solicitante. La función valida la clave de autorización, luego carga por separado payload.data[0] y lee incondicionalmente rka->cred. La validación no impide que request_key_auth_revoke() borre la carga útil.
Un ayudante de request-key puede asumir autoridad y bifurcar un descendiente que hereda la clave de autorización. Si el descendiente falla en sus propios anillos de claves, recurre a las credenciales guardadas del solicitante. La instanciación exitosa del objetivo invalida la clave de autorización sin borrar la carga útil. Después de que el ayudante sale, UMH_WAIT_PROC devuelve el control al solicitante, quien llama a complete_request_key() y revoca dicha clave.
Con el descendiente pausado después de la validación, los flujos pueden entrelazarse como sigue:
1. El descendente entra en search_process_keyrings_rcu() bajo RCU y key_validate() tiene éxito. 2. El ayudante instancia el objetivo, invalida la clave de autorización y sale. 3. El solicitante se reanuda desde UMH_WAIT_PROC, llama a complete_request_key() y revoca la clave de autorización. request_key_auth_revoke() establece su puntero de carga útil en NULL. 4. El descendente carga NULL y desreferencia rka->cred.
Esta desreferencia nula puede provocar un oops del kernel. RCU retrasa la eliminación de la carga útil pero no impide que el puntero sea borrado.
Cargar la carga útil con dereference_key_rcu() y requerir un resultado distinto de NULL antes de validar la clave de autorización y buscar sus credenciales guardadas. Una carga útil distinta de NULL y sus credencias permanecen vivas durante la sección de lectura RCU del llamador; una carga útil borrada omite la búsqueda de respaldo y sigue la selección de error existente.
Informe KASAN a continuación:
Oops: general protection fault, probablemente por dirección no canónica 0xdffffc0000000005: 0000 [#1] SMP KASAN NOPTI
KASAN: null-ptr-deref en el rango [0x0000000000000028-0x000000000000002f]
RIP: 0010:search_process_keyrings_rcu+0x32b/0x790
VulDB is the best source for vulnerability data and more expert information about this specific topic.