CVE-2026-98385
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
sched/cache: Desacoplar sched_cache_group de mm para corregir UAF
Actualmente, el agrupamiento de caché de programación es por mm y las estadísticas de programación sched_cache_stat residen en la estructura mm. Esto vincula el ciclo de vida de las estadísticas de programación con mm.
En account_mm_sched(), se accede a las estadísticas de programación mediante task->mm->sc_stat. Sin embargo, una tarea puede estar cambiando mm en una CPU mientras otra CPU está ejecutando account_mm_sched(), y posiblemente accediendo al mm antiguo que fue liberado. Este problema fue encontrado al ejecutar pruebas con KASAN por Hyunwoo:
Leer descripción completaMostrar menos
En lugar de serializar el acceso a mm introduciendo adquisición adicional del bloqueo rq en la ruta de liberación de mm, extraer sched_cache_stat de mm_struct, renombrarlo como sched_cache_group y gestionar su ciclo de vida aparte de mm_struct con su propio conteo de referencias. Esto nos permite en el próximo parche acceder a sched_cache_group directamente desde la tarea, y añadir un recuento de referencias en sched_cache_group cuando una tarea se vincula a él. Esto previene el problema de uso después de liberación cuando se accede a mm antiguo obsoleto y sus estadísticas de caché de programación cuando una tarea cambia a un mm nuevo mientras account_mm_sched() se ejecuta en otro lugar.
El otro beneficio de esta reestructuración es que en el futuro, el agrupamiento de tareas en una LLC tendría la flexibilidad de estar asociado con un agrupamiento definido por el usuario, o cgroup, grupo de cookies, numa_group u otros en lugar de solo con un espacio de direcciones mm único.
Renombrar sched_cache_stat a sched_cache_group y convertirlo en un objeto contado por referencias asignado desde mm_struct. mm_struct ahora contiene un puntero (sched_cache_grp) a este objeto en lugar de incrustarlo.
Detalles técnicos trazas, registros y código del informe original
https://lore.kernel.org/lkml/apPb-Dr4nPYuHQOK@v4bel/
Traducción automática del texto original de NVD (en inglés).
CVSS
NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.14%
- Percentil entre todas las CVEs puntuadas: 3
- Fecha de la puntuación: 13/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-98385",
"cveTags": [],
"metrics": {},
"affected": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"affectedData": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "df0d98475954d655571979aa061ecb07d7e00392",
"lessThan": "852ecb6bc0bc0106f44f74ba3944524732486025",
"versionType": "git"
},
{
"status": "affected",
"version": "df0d98475954d655571979aa061ecb07d7e00392",
"lessThan": "28f9c0e0a0b94c5d3e1b634db545f6e1f94858c5",
"versionType": "git"
}
],
"programFiles": [
"include/linux/mm_types.h",
"include/linux/sched.h",
"kernel/exit.c",
"kernel/sched/fair.c"
],
"defaultStatus": "unaffected"
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"vendor": "Linux",
"product": "Linux",
"versions": [
{
"status": "affected",
"version": "7.2"
},
{
"status": "unaffected",
"version": "0",
"lessThan": "7.2",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "7.2.9",
"versionType": "semver",
"lessThanOrEqual": "7.2.*"
},
{
"status": "unaffected",
"version": "7.3-rc5",
"versionType": "original_commit_for_fix",
"lessThanOrEqual": "*"
}
],
"programFiles": [
"include/linux/mm_types.h",
"include/linux/sched.h",
"kernel/exit.c",
"kernel/sched/fair.c"
],
"defaultStatus": "affected"
}
]
}
],
"published": "2026-10-12T06:17:00.547",
"references": [
{
"url": "https://git.kernel.org/stable/c/28f9c0e0a0b94c5d3e1b634db545f6e1f94858c5",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
},
{
"url": "https://git.kernel.org/stable/c/852ecb6bc0bc0106f44f74ba3944524732486025",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}
],
"vulnStatus": "Received",
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsched/cache: Decouple sched_cache_group from mm to fix UAF\n\nCurrently the sched cache grouping is by mm and the scheduling statistics\nsched_cache_stat lives in the mm structure. This ties the life cycle\nof scheduling stats with mm.\n\nIn account_mm_sched(), the scheduling stats are accessed by\ntask->mm->sc_stat. However, a task may be switching mm on one CPU when\nanother CPU is running account_mm_sched(), and possibly accessing the\nold mm that was freed. This problem was found when running tests with\nKASAN by Hyunwoo:\n\n https://lore.kernel.org/lkml/apPb-Dr4nPYuHQOK@v4bel/\n\nInstead of serializing the mm access by introducing extra acquisition of\nrq lock in the mm free path, extract sched_cache_stat from mm_struct,\nrename it as sched_cache_group and manage its life cycle apart from\nmm_struct with its own ref counting. This allows us in the next patch\naccess sched_cache_group directly from task, and add a refcount\non sched_cache_group when a task links to it. This prevents the use\nafter free issue when accessing stale and released old mm and its\nsched cache stat a task switches to a new mm while account_mm_sched()\nis done elsewhere.\n\nThe other benefit of this restructure is in the future, the grouping of\ntasks to a LLC would have the flexibility to be associated with a user\ndefined grouping, or cgroup, cookie group, numa_group or others instead\nof just with a single mm address space.\n\nRename sched_cache_stat to sched_cache_group and turn it into a refcounted\nobject allocated from mm_struct. The mm_struct now holds a pointer\n(sched_cache_grp) to this object instead of embedding it."
}
],
"lastModified": "2026-10-12T06:17:00.547",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}