CVE-2026-31445 in Linuxinformación

Resumen

por VulDB • 2026-05-15

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

mm/damon/core: evitar el uso de un contexto con compromiso parcial (half-online-committed)

Uno de los principales usos de damon_call() es la actualización en línea de los parámetros de DAMON. Esto se realiza llamando a damon_commit_ctx() dentro de la función de callback de damon_call(). damon_commit_ctx() puede fallar por dos razones: 1) parámetros no válidos y 2) fallos internos en la asignación de memoria. En caso de fallos, el damon_ctx que intentó actualizarse (destino del compromiso) puede quedar parcialmente actualizado (o, desde una perspectiva de integridad, corrupto), y por lo tanto no debería volver a utilizarse. La función solo garantiza que el objeto damon_ctx pueda liberarse de forma segura mediante damon_destroy_ctx().

Sin embargo, los llamadores de la API invocan damon_commit_ctx() únicamente después de verificar que los parámetros son válidos, para evitar que damon_commit_ctx() falle debido a parámetros de entrada no válidos. Pero aún puede fallar teóricamente si la asignación de memoria interna falla. En ese caso, DAMON podría ejecutarse con un damon_ctx parcialmente actualizado. Esto puede provocar comportamientos inesperados, incluyendo incluso la desreferenciación de un puntero NULL en caso de fallo de damos_commit_dests() [1]. Dicho fallo de asignación es, en opinión de muchos, demasiado improbable como para ocurrir, por lo que el impacto en el mundo real sería raro. No obstante, dadas las graves consecuencias, es necesario corregirlo.

Evitar el uso de un damon_ctx parcialmente comprometido (posiblemente corrupto) guardando el fallo de damon_commit_ctx() en el objeto damon_ctx. Para ello, se introduce el campo damon_ctx->maybe_corrupted. damon_commit_ctx() lo establece cuando falla. kdamond_call() verifica si el campo está establecido después de ejecutar cada damon_call_control->fn(). Si está establecido, se ignoran las solicitudes de callback restantes y se retorna. Todos los llamadores de kdamond_call(), incluidos kdamond_fn(), también verifican el campo maybe_corrupted inmediatamente después de las invocaciones a kdamond_call(). Si el campo está establecido, se interrumpe el bucle principal de kdamond_fn() para que DAMON no utilice el contexto que podría estar corrupto.

[[email protected]: permitir que kdamond_call() se cancele independientemente de maybe_corrupted]

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsable

Linux

Reservar

2026-03-09

Divulgación

2026-04-22

Moderación

aceptado

Artículo

VDB-358876

CPE

listo

EPSS

0.00015

KEV

no

Actividades

muy bajo

Fuentes

Do you need the next level of professionalism?

Upgrade your account now!