CVE-2026-97583 (GCVE-0-2026-97583)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 14:41
VLAI
Title
afs: Clear stale peer app data after address list changes
Summary
In the Linux kernel, the following vulnerability has been resolved: afs: Clear stale peer app data after address list changes afs_fs_probe_fileserver() fetches the current endpoint state under server->fs_lock, but leaves old_alist as NULL. Consequently, afs_set_peer_appdata() treats every address list replacement as initial setup and only binds the new peers; it never unbinds peers removed from the old list. An address refresh can therefore proceed as follows. CPU 0 replaces server S's list and drops Pold without clearing Pold->app_data. The server destroyer then clears only S's current peers and lets S reach its RCU callback. After the callback frees S, CPU 1 handles a callback through an RxRPC connection that still pins Pold, reads Pold->app_data, and calls afs_use_server() on the freed object. KASAN reported: BUG: KASAN: slab-use-after-free in afs_find_server+0x3c/0xa0 Read of size 4 at addr ffff8881013e1af0 by task krxrpcio/7001/74 Call Trace: afs_find_server+0x3c/0xa0 afs_rx_new_call+0x15c/0x390 rxrpc_new_incoming_call+0x97c/0x1730 rxrpc_input_packet.constprop.0+0xd03/0xec0 rxrpc_io_thread+0x967/0x1640 Allocated by task 93: afs_lookup_server+0x1a7/0x14c0 afs_alloc_server_list+0x43f/0xb60 afs_create_volume+0x923/0x1490 afs_get_tree+0x1c6/0x10a0 Freed by task 0: kfree+0x131/0x3c0 rcu_core+0x50a/0x1850 Last potentially related work creation: __call_rcu_common.constprop.0+0x71/0xa10 afs_put_server+0x213/0x2b0 Preserve old->addresses for the peer app-data update so that removed peers are cleared before the endpoint state is replaced. Also advance both cursors when the old and new lists share a peer; activating the old/new comparison without this would otherwise loop forever on the shared entry.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 39ba6af83a7f9dee3e6a7916f41a48bcbda54eba , < 3afb988fd0411707bdafb9b321086fff0da28aae (git)
Affected: 40e8b52fe8c8ab6920ea5f59c5469b6918cce624 , < c7f77a11a1e719192c7262aad38a3919aec62c21 (git)
Affected: 40e8b52fe8c8ab6920ea5f59c5469b6918cce624 , < 7f7f5589d048821dea316cbac9b37d27eaf7530e (git)
Affected: 40e8b52fe8c8ab6920ea5f59c5469b6918cce624 , < ba0623fc19a424f4745394c499f9f28a8d88d397 (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/addr_list.c",
            "fs/afs/fs_probe.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3afb988fd0411707bdafb9b321086fff0da28aae",
              "status": "affected",
              "version": "39ba6af83a7f9dee3e6a7916f41a48bcbda54eba",
              "versionType": "git"
            },
            {
              "lessThan": "c7f77a11a1e719192c7262aad38a3919aec62c21",
              "status": "affected",
              "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
              "versionType": "git"
            },
            {
              "lessThan": "7f7f5589d048821dea316cbac9b37d27eaf7530e",
              "status": "affected",
              "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
              "versionType": "git"
            },
            {
              "lessThan": "ba0623fc19a424f4745394c499f9f28a8d88d397",
              "status": "affected",
              "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
              "versionType": "git"
            },
            {
              "lessThan": "6.12.111",
              "status": "affected",
              "version": "6.12.101",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/afs/addr_list.c",
            "fs/afs/fs_probe.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: Clear stale peer app data after address list changes\n\nafs_fs_probe_fileserver() fetches the current endpoint state under\nserver-\u003efs_lock, but leaves old_alist as NULL.  Consequently,\nafs_set_peer_appdata() treats every address list replacement as initial\nsetup and only binds the new peers; it never unbinds peers removed from\nthe old list.\n\nAn address refresh can therefore proceed as follows.  CPU 0 replaces\nserver S\u0027s list and drops Pold without clearing Pold-\u003eapp_data.  The\nserver destroyer then clears only S\u0027s current peers and lets S reach its\nRCU callback.  After the callback frees S, CPU 1 handles a callback\nthrough an RxRPC connection that still pins Pold, reads Pold-\u003eapp_data,\nand calls afs_use_server() on the freed object.\n\nKASAN reported:\n\n  BUG: KASAN: slab-use-after-free in afs_find_server+0x3c/0xa0\n  Read of size 4 at addr ffff8881013e1af0 by task krxrpcio/7001/74\n  Call Trace:\n   afs_find_server+0x3c/0xa0\n   afs_rx_new_call+0x15c/0x390\n   rxrpc_new_incoming_call+0x97c/0x1730\n   rxrpc_input_packet.constprop.0+0xd03/0xec0\n   rxrpc_io_thread+0x967/0x1640\n  Allocated by task 93:\n   afs_lookup_server+0x1a7/0x14c0\n   afs_alloc_server_list+0x43f/0xb60\n   afs_create_volume+0x923/0x1490\n   afs_get_tree+0x1c6/0x10a0\n  Freed by task 0:\n   kfree+0x131/0x3c0\n   rcu_core+0x50a/0x1850\n  Last potentially related work creation:\n   __call_rcu_common.constprop.0+0x71/0xa10\n   afs_put_server+0x213/0x2b0\n\nPreserve old-\u003eaddresses for the peer app-data update so that removed\npeers are cleared before the endpoint state is replaced.  Also advance\nboth cursors when the old and new lists share a peer; activating the\nold/new comparison without this would otherwise loop forever on the\nshared entry."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - A remote cell operator supplies the changed fileserver address list in the VL address-lookup reply (afs_vl_lookup_addrs -\u003e afs_fs_probe_fileserver). A later incoming RxRPC call over UDP from a dropped peer reaches afs_rx_new_call -\u003e afs_find_server, which dereferences the freed server through the stale peer app_data.\nAC:H - Triggering needs a specific order of events: the client refreshes the server\u0027s address list and gets a new version, then the server record goes unused and is freed by afs_server_destroyer after the GC delay, while an RxRPC connection still holds the old peer. Only then does a new incoming call hit it. The refresh and teardown timing follow the client\u0027s own activity, not the attacker\u0027s.\nPR:N - The VL reply and the incoming cache-manager call that reaches afs_rx_new_call/afs_find_server are handled before any server identity check. The attacker needs no account on the victim host.\nUI:R - The victim must have mounted, or be actively using, a volume from the attacker\u0027s AFS cell so that afs_lookup_server and afs_update_server_record run against the attacker\u0027s VL server. AFS mounts are not user-namespace mountable.\nS:U - The use-after-free happens in the kernel AFS client\u0027s afs_server object and stays within the kernel\u0027s own security authority. No VM, sandbox or IOMMU boundary is crossed.\nC:H - afs_use_server() works on a freed kmalloc\u0027d afs_server reached through the stale peer app_data. If that slab is reclaimed, fields the attacker controls are read as server state, including pointers, which can leak kernel memory.\nI:H - afs_use_server() increments the active counter, and the call path then takes references and queues work on the freed afs_server. Writing into a reallocated object gives a memory-corruption primitive that could be used to hijack control flow.\nA:H - A slab use-after-free in the krxrpcio I/O thread (see the KASAN report in the commit) can oops or panic the kernel and bring down all AFS and RxRPC service on the host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:24.604Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3afb988fd0411707bdafb9b321086fff0da28aae"
        },
        {
          "url": "https://git.kernel.org/stable/c/c7f77a11a1e719192c7262aad38a3919aec62c21"
        },
        {
          "url": "https://git.kernel.org/stable/c/7f7f5589d048821dea316cbac9b37d27eaf7530e"
        },
        {
          "url": "https://git.kernel.org/stable/c/ba0623fc19a424f4745394c499f9f28a8d88d397"
        }
      ],
      "title": "afs: Clear stale peer app data after address list changes",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97583",
    "datePublished": "2026-09-25T10:22:03.666Z",
    "dateReserved": "2026-09-24T16:01:01.156Z",
    "dateUpdated": "2026-09-25T14:41:24.604Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97583",
      "date": "2026-09-29",
      "epss": "0.00408",
      "percentile": "0.32484"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/afs/addr_list.c",
                  "fs/afs/fs_probe.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "3afb988fd0411707bdafb9b321086fff0da28aae",
                    "status": "affected",
                    "version": "39ba6af83a7f9dee3e6a7916f41a48bcbda54eba",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "c7f77a11a1e719192c7262aad38a3919aec62c21",
                    "status": "affected",
                    "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "7f7f5589d048821dea316cbac9b37d27eaf7530e",
                    "status": "affected",
                    "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ba0623fc19a424f4745394c499f9f28a8d88d397",
                    "status": "affected",
                    "version": "40e8b52fe8c8ab6920ea5f59c5469b6918cce624",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6.12.111",
                    "status": "affected",
                    "version": "6.12.101",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/afs/addr_list.c",
                  "fs/afs/fs_probe.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: Clear stale peer app data after address list changes\n\nafs_fs_probe_fileserver() fetches the current endpoint state under\nserver-\u003efs_lock, but leaves old_alist as NULL.  Consequently,\nafs_set_peer_appdata() treats every address list replacement as initial\nsetup and only binds the new peers; it never unbinds peers removed from\nthe old list.\n\nAn address refresh can therefore proceed as follows.  CPU 0 replaces\nserver S\u0027s list and drops Pold without clearing Pold-\u003eapp_data.  The\nserver destroyer then clears only S\u0027s current peers and lets S reach its\nRCU callback.  After the callback frees S, CPU 1 handles a callback\nthrough an RxRPC connection that still pins Pold, reads Pold-\u003eapp_data,\nand calls afs_use_server() on the freed object.\n\nKASAN reported:\n\n  BUG: KASAN: slab-use-after-free in afs_find_server+0x3c/0xa0\n  Read of size 4 at addr ffff8881013e1af0 by task krxrpcio/7001/74\n  Call Trace:\n   afs_find_server+0x3c/0xa0\n   afs_rx_new_call+0x15c/0x390\n   rxrpc_new_incoming_call+0x97c/0x1730\n   rxrpc_input_packet.constprop.0+0xd03/0xec0\n   rxrpc_io_thread+0x967/0x1640\n  Allocated by task 93:\n   afs_lookup_server+0x1a7/0x14c0\n   afs_alloc_server_list+0x43f/0xb60\n   afs_create_volume+0x923/0x1490\n   afs_get_tree+0x1c6/0x10a0\n  Freed by task 0:\n   kfree+0x131/0x3c0\n   rcu_core+0x50a/0x1850\n  Last potentially related work creation:\n   __call_rcu_common.constprop.0+0x71/0xa10\n   afs_put_server+0x213/0x2b0\n\nPreserve old-\u003eaddresses for the peer app-data update so that removed\npeers are cleared before the endpoint state is replaced.  Also advance\nboth cursors when the old and new lists share a peer; activating the\nold/new comparison without this would otherwise loop forever on the\nshared entry."
          }
        ],
        "id": "CVE-2026-97583",
        "lastModified": "2026-09-25T15:18:00.290",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "REQUIRED",
                "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.6,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:09.127",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3afb988fd0411707bdafb9b321086fff0da28aae"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/7f7f5589d048821dea316cbac9b37d27eaf7530e"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ba0623fc19a424f4745394c499f9f28a8d88d397"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/c7f77a11a1e719192c7262aad38a3919aec62c21"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-29T07:09:31+00:00",
      "cve": "CVE-2026-97583",
      "id": "CVE-2026-97583",
      "initial_release_date": "2026-09-25T00:00:00+00:00",
      "product_status:known_affected": "76",
      "product_status:known_not_affected": "200",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: afs: Clear stale peer app data after address list changes",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-97583.json",
      "version": "3"
    }
  }
}



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…