Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2024-42096)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
29/07/2024
Última modificación:
30/07/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: x86: deja de jugar juegos de pila en perfil_pc() La función 'profile_pc()' se utiliza para la creación de perfiles basada en temporizador, lo cual ya no es tan relevante para empezar. , pero también termina haciendo suposiciones basadas en el diseño de la pila que no son necesariamente válidas. Básicamente, el código intenta contabilizar el tiempo invertido en bloqueos de giro para la persona que llama en lugar del bloqueo de giro, y si bien apoyo eso como concepto, no vale la pena la complejidad del código o las advertencias de KASAN cuando de todos modos no se realiza una creación de perfiles seria usando temporizadores en estos días. . Y el código realmente depende del diseño de la pila, lo que solo es cierto en los casos más simples. Perdimos el comentario en algún momento (creo que cuando se unificó el código de 32 y 64 bits), pero solía decir: Supongamos que la función de bloqueo no tiene marco de pila o tiene una copia de eflags de PUSHF. lo que explica por qué simplemente carga ciegamente una o dos palabras directamente desde el puntero de la pila y luego echa un vistazo mínimo a los valores para comprobar si podrían ser eflags o la PC de retorno: Eflags siempre tiene los bits 22 y superiores limpios, a diferencia de las direcciones del kernel, pero Esa suposición básica del diseño de la pila supone que no hay ninguna depuración de bloqueo, etc., que complicaría el código y provocaría un marco de pila. Provoca la infelicidad de KASAN que Syzkaller [1] y otros [2] han informado durante años. Sin ninguna razón práctica real para esto, simplemente elimine el código. Solo por interés histórico, aquí hay algunas confirmaciones de antecedentes relacionadas con este código de 2006: 0cb91a229364 ("i386: La cuenta se bloquea en la persona que llama durante la creación de perfiles para los núcleos !FP") 31679f38d886 ("Simplificar perfil_pc en x86-64") y una unificación de código de 2009: ef4512882dbe ("x86: time_32/64.c unify perfil_pc") pero los conceptos básicos de esto en realidad se remontan a antes del árbol git.

Impacto