CVE-2026-98861

Estado: RecibidaSin puntuar—
Gravedad—Sin puntuar
Probabilidad de explotación0.17 %mayor que el 6 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

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

fprobe: Usar guard(rcu_sched_notrace) y comprobar rcu_is_watching()

unregister_fprobe() y unregister_fprobe_async() (utilizadas por kprobe-multi de BPF) dependen de los periodos de gracia estándar de RCU (synchronize_rcu() y call_rcu()) para esperar a que los manejadores de fprobe en curso terminen antes de liberar el fprobe.

Sin embargo, si un manejador de fprobe se ejecuta mientras RCU no está vigilando (como en el bucle de inactividad o en estados de quiescencia extendida de nohz_full), el RCU estándar no registra las secciones con la expulsión deshabilitada.

Leer descripción completaMostrar menos

En consecuencia, synchronize_rcu() no espera a esas ejecuciones, lo que puede provocar un use-after-free (uso de memoria liberada) si el fprobe se libera inmediatamente después de su desregistro. Asegurar que los manejadores salgan pronto cuando !rcu_is_watching().

Además, fprobe_fgraph_entry() y fprobe_ftrace_entry() utilizaban antes guard(rcu)() y rcu_read_lock(), que invocan lockdep en cada llamada con CONFIG_PROVE_LOCKING. Esto añade sobrecarga y puede causar una recursión de lockdep si las funciones sondeadas interactúan con lockdep.

Dado que rhltable_lookup() y rhl_for_each_entry_rcu() utilizan rcu_dereference_all_check() (que comprueba rcu_read_lock_any_held()), mantener la expulsión deshabilitada mediante rcu_read_lock_sched_notrace() es totalmente válido y suficiente siempre que rcu_is_watching() sea verdadero.

Se define y utiliza guard(rcu_sched_notrace)() en fprobe_ftrace_entry(), fprobe_fgraph_entry() y fprobe_return(). Esto elimina la sobrecarga de rcu_read_lock() y de lockdep en la ruta rápida, a la vez que garantiza una sincronización segura de los periodos de gracia.

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.17 %
Percentil entre todas las CVEs puntuadas
6
Fecha de la puntuación
20/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

Mostrar las 3 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-98861",
  "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": "56b4cfcf1518245493c60fd39c56978f508f1816",
              "lessThan": "a85d0f00671b4d4527317c10ba018680f7d8d673",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "657b594b2084b39a4bc6d8493aa2140cb00cea49",
              "lessThan": "dd4a0d4993633b45470abf6da4ea0ca563402245",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "657b594b2084b39a4bc6d8493aa2140cb00cea49",
              "lessThan": "e0a6249190402a28f1e2925a81acf573157d55ef",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "a4f6a9005ed6cfd360ef2520430927f05f92ffb0",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "6.18.34",
              "lessThan": "6.18.56",
              "versionType": "semver"
            },
            {
              "status": "affected",
              "version": "7.0.11",
              "lessThan": "7.1",
              "versionType": "semver"
            }
          ],
          "programFiles": [
            "kernel/trace/fprobe.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.1"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "7.1",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.18.56",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.10",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "kernel/trace/fprobe.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-10-18T16:17:40.573",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/a85d0f00671b4d4527317c10ba018680f7d8d673",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/dd4a0d4993633b45470abf6da4ea0ca563402245",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e0a6249190402a28f1e2925a81acf573157d55ef",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfprobe: Use guard(rcu_sched_notrace) and check rcu_is_watching()\n\nunregister_fprobe() and unregister_fprobe_async() (used by BPF\nkprobe-multi) rely on standard RCU grace periods (synchronize_rcu()\nand call_rcu()) to wait until in-flight fprobe handlers complete before\nfreeing the fprobe.\n\nHowever, if an fprobe handler executes while RCU is not watching (such\nas in the idle loop or nohz_full extended quiescent states), standard\nRCU does not track preemption-disabled sections. Consequently,\nsynchronize_rcu() does not wait for those executions, which can lead\nto a use-after-free if the fprobe is freed immediately after\nunregistration. Ensure handlers exit early when !rcu_is_watching().\n\nFurthermore, fprobe_fgraph_entry() and fprobe_ftrace_entry() previously\nused guard(rcu)() and rcu_read_lock(), which invoke lockdep on every\nhit under CONFIG_PROVE_LOCKING. This adds overhead and can cause lockdep\nrecursion if probed functions interact with lockdep.\n\nSince rhltable_lookup() and rhl_for_each_entry_rcu() use\nrcu_dereference_all_check() (which checks rcu_read_lock_any_held()),\nholding preemption disabled via rcu_read_lock_sched_notrace() is fully\nvalid and sufficient so long as rcu_is_watching() is true.\n\nDefine and use guard(rcu_sched_notrace)() across fprobe_ftrace_entry(),\nfprobe_fgraph_entry(), and fprobe_return(). This eliminates fast-path\nrcu_read_lock() and lockdep overhead while guaranteeing safe grace\nperiod synchronization."
    }
  ],
  "lastModified": "2026-10-19T10:19:50.187",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}