CVE-2026-97584 (GCVE-0-2026-97584)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 14:41
VLAI
Title
afs: Fix incorrect free in candidate cleanup in afs_lookup_server()
Summary
In the Linux kernel, the following vulnerability has been resolved: afs: Fix incorrect free in candidate cleanup in afs_lookup_server() Fix afs_lookup_server() to not free an existing server's endpoint state when cleaning up a candidate server. The candidate record doesn't have an endpoint state yet at this point, so the free for that can just be removed.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: d6aa05cd995830f6dcee7b139335edb266de38a6 , < 981d72663dee2fa6efaf202293e68d2b10a0d1d4 (git)
Affected: 4882ba78574e2d8c579658f65f6784b0d139d173 , < e5bc0fa9959dc8f7eb1afab7c039594a16a1a65c (git)
Affected: 4882ba78574e2d8c579658f65f6784b0d139d173 , < 349e713039a1fd6659c27e7a66238bfa49ce37e9 (git)
Affected: 4882ba78574e2d8c579658f65f6784b0d139d173 , < 044d596094af4b769fb8e1173dff0d08bd68db6c (git)
Affected: 6.12.101 , < 6.12.111 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 6.15
Unaffected: 0 , < 6.15 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/afs/server.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "981d72663dee2fa6efaf202293e68d2b10a0d1d4",
              "status": "affected",
              "version": "d6aa05cd995830f6dcee7b139335edb266de38a6",
              "versionType": "git"
            },
            {
              "lessThan": "e5bc0fa9959dc8f7eb1afab7c039594a16a1a65c",
              "status": "affected",
              "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
              "versionType": "git"
            },
            {
              "lessThan": "349e713039a1fd6659c27e7a66238bfa49ce37e9",
              "status": "affected",
              "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
              "versionType": "git"
            },
            {
              "lessThan": "044d596094af4b769fb8e1173dff0d08bd68db6c",
              "status": "affected",
              "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
              "versionType": "git"
            },
            {
              "lessThan": "6.12.111",
              "status": "affected",
              "version": "6.12.101",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/afs/server.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "6.12.101",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nafs: Fix incorrect free in candidate cleanup in afs_lookup_server()\n\nFix afs_lookup_server() to not free an existing server\u0027s endpoint state\nwhen cleaning up a candidate server.  The candidate record doesn\u0027t have an\nendpoint state yet at this point, so the free for that can just be removed."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - afs_lookup_server() is reached through afs_create_volume()/afs_update_volume_state() -\u003e afs_alloc_server_list() when a local process walks a kAFS path (for example /afs/\u003ccell\u003e/\u003cvol\u003e automount) or uses a volume. Nothing malformed comes off the wire. The defect is local cleanup logic that frees the wrong object, so the attacker needs a local account on the AFS client.\nAC:L - The candidate is left non-NULL when afs_install_server() returns an existing record. That happens when the attacker runs parallel lookups of volumes on the same fileserver UUID, or accesses the path again after a creation attempt failed and left the record marked UNCREATED. Both states come from the attacker\u0027s own path accesses; neither depends on outside conditions.\nPR:L - Mounting kAFS needs CAP_SYS_ADMIN (no FS_USERNS_MOUNT). On a client that already has the /afs dynroot mounted, any unprivileged user can start the volume and server lookups that reach afs_lookup_server() just by accessing /afs/\u003ccell\u003e/... paths.\nUI:N - No victim action is needed; the attacker triggers the lookups and the faulty cleanup with their own filesystem accesses.\nS:U - The memory corruption stays inside the kernel\u0027s own security authority; no VM, IOMMU or sandbox boundary is crossed.\nC:H - The cleanup at the out: label kfree()s the existing server\u0027s live, refcounted afs_endpoint_state. server-\u003eendpoint_state and in-flight probe/rotate operations still reference it, giving a use-after-free of a sprayable kmalloc object that can be reclaimed to leak kernel data.\nI:H - After the bad kfree(), afs_put_endpoint_state() and the probe code keep writing refcounts, flags and the addresses pointer into the freed estate. When the refcount later drops to zero it is freed a second time via call_rcu, so a reclaimed object gets corrupted.\nA:H - The freed estate is later used and double-freed, and on the create_failed and wait_for_creation failure paths `server` is NULL when server-\u003eendpoint_state is read. Either way the kernel oopses or panics."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:25.662Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/981d72663dee2fa6efaf202293e68d2b10a0d1d4"
        },
        {
          "url": "https://git.kernel.org/stable/c/e5bc0fa9959dc8f7eb1afab7c039594a16a1a65c"
        },
        {
          "url": "https://git.kernel.org/stable/c/349e713039a1fd6659c27e7a66238bfa49ce37e9"
        },
        {
          "url": "https://git.kernel.org/stable/c/044d596094af4b769fb8e1173dff0d08bd68db6c"
        }
      ],
      "title": "afs: Fix incorrect free in candidate cleanup in afs_lookup_server()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97584",
    "datePublished": "2026-09-25T10:22:04.322Z",
    "dateReserved": "2026-09-24T16:01:01.156Z",
    "dateUpdated": "2026-09-25T14:41:25.662Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97584",
      "date": "2026-09-27",
      "epss": "0.00163",
      "percentile": "0.04913"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/afs/server.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "981d72663dee2fa6efaf202293e68d2b10a0d1d4",
                    "status": "affected",
                    "version": "d6aa05cd995830f6dcee7b139335edb266de38a6",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e5bc0fa9959dc8f7eb1afab7c039594a16a1a65c",
                    "status": "affected",
                    "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "349e713039a1fd6659c27e7a66238bfa49ce37e9",
                    "status": "affected",
                    "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "044d596094af4b769fb8e1173dff0d08bd68db6c",
                    "status": "affected",
                    "version": "4882ba78574e2d8c579658f65f6784b0d139d173",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6.12.111",
                    "status": "affected",
                    "version": "6.12.101",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/afs/server.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.15"
                  },
                  {
                    "lessThan": "6.15",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nafs: Fix incorrect free in candidate cleanup in afs_lookup_server()\n\nFix afs_lookup_server() to not free an existing server\u0027s endpoint state\nwhen cleaning up a candidate server.  The candidate record doesn\u0027t have an\nendpoint state yet at this point, so the free for that can just be removed."
          }
        ],
        "id": "CVE-2026-97584",
        "lastModified": "2026-09-25T15:18:00.430",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:09.267",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/044d596094af4b769fb8e1173dff0d08bd68db6c"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/349e713039a1fd6659c27e7a66238bfa49ce37e9"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/981d72663dee2fa6efaf202293e68d2b10a0d1d4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e5bc0fa9959dc8f7eb1afab7c039594a16a1a65c"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…