« Volver al listado

CVE-2026-72431

Estado: RecibidaSin puntuar—

In the Linux kernel, the following vulnerability has been resolved:

alloc_tag: fix use-after-free in /proc/allocinfo after module unload

allocinfo_start() only reinitializes the codetag iterator at position 0. For subsequent reads (position > 0), it reuses cached iterator state from the previous batch. allocinfo_stop() drops mod_lock between read batches, which allows module unload to complete and free the module memory that the cached iterator still references:

After free_mod_mem() frees the module's .rodata, allocinfo_show() dereferences ct->filename, ct->function which point there.

Save the iterator state in allocinfo_next() and resume from it in allocinfo_start() with codetag_next_ct(), which detects module removal via idr_find() returning NULL and skips to the next module.

Detalles técnicos trazas, registros y código del informe original
  CPU0 (read)                        CPU1 (rmmod)
  ----                               ----
  allocinfo_start(pos=0)
    down_read(mod_lock)
    allocinfo_show()
    ...
  allocinfo_stop()
    up_read(mod_lock)
                                     codetag_unload_module()
                                       kfree(cmod)
                                       release_module_tags()
                                     ...
                                     free_mod_mem()
  allocinfo_start(pos=N)
    down_read(mod_lock)
    // reuses cached iter, skips re-init
  allocinfo_show()
    ct->filename   <-- UAF

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)

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-72431",
  "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": "9f44df50fee4d2f6cb374177244ccfa9f0a5cc95",
              "lessThan": "37e3e8a2c3bfdd503209f043f8bbfbdcf5a1d92f",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "9f44df50fee4d2f6cb374177244ccfa9f0a5cc95",
              "lessThan": "008ceffd44040f809aead6d7bef7cb1210c4149a",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "9f44df50fee4d2f6cb374177244ccfa9f0a5cc95",
              "lessThan": "2956268efc457cb05d29c1bf94de1e8e684d7bbc",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "lib/alloc_tag.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.17"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.17",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver",
              "lessThanOrEqual": "7.1.*"
            },
            {
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "lib/alloc_tag.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-08-15T06:22:16.960",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/008ceffd44040f809aead6d7bef7cb1210c4149a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/2956268efc457cb05d29c1bf94de1e8e684d7bbc",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/37e3e8a2c3bfdd503209f043f8bbfbdcf5a1d92f",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nalloc_tag: fix use-after-free in /proc/allocinfo after module unload\n\nallocinfo_start() only reinitializes the codetag iterator at position 0. \nFor subsequent reads (position > 0), it reuses cached iterator state from\nthe previous batch.  allocinfo_stop() drops mod_lock between read batches,\nwhich allows module unload to complete and free the module memory that the\ncached iterator still references:\n\n  CPU0 (read)                        CPU1 (rmmod)\n  ----                               ----\n  allocinfo_start(pos=0)\n    down_read(mod_lock)\n    allocinfo_show()\n    ...\n  allocinfo_stop()\n    up_read(mod_lock)\n                                     codetag_unload_module()\n                                       kfree(cmod)\n                                       release_module_tags()\n                                     ...\n                                     free_mod_mem()\n  allocinfo_start(pos=N)\n    down_read(mod_lock)\n    // reuses cached iter, skips re-init\n  allocinfo_show()\n    ct->filename   <-- UAF\n\nAfter free_mod_mem() frees the module's .rodata, allocinfo_show()\ndereferences ct->filename, ct->function which point there.\n\nSave the iterator state in allocinfo_next() and resume from it in\nallocinfo_start() with codetag_next_ct(), which detects module removal via\nidr_find() returning NULL and skips to the next module."
    }
  ],
  "lastModified": "2026-08-17T06:19:10.443",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}