CVE-2026-53389 (GCVE-0-2026-53389)

Vulnerability from cvelistv5 – Published: 2026-07-19 12:01 – Updated: 2026-08-17 04:50
VLAI
Title
net/tcp-ao: fix use-after-free of key in del_async path
Summary
In the Linux kernel, the following vulnerability has been resolved: net/tcp-ao: fix use-after-free of key in del_async path In tcp_ao_delete_key(), the del_async path skips the current_key and rnext_key validity checks present in the synchronous path, assuming these pointers are always NULL on LISTEN sockets. However, if a key was added with set_current=1/set_rnext=1 while the socket was in CLOSE state, current_key and rnext_key will be non-NULL after listen() transitions the socket to LISTEN. When such a key is deleted with del_async=1, hlist_del_rcu() and call_rcu() free the key without clearing the dangling pointers. After the RCU grace period, getsockopt(TCP_AO_INFO) dereferences current_key->sndid and rnext_key->rcvid from freed slab memory. Clear current_key and rnext_key in the del_async path when they reference the key being deleted.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: d6732b95b6fbbc6d5bb9d2f809e275763640c4a2 , < 6ce7ef41743740ce15c2061561b784148b565b3f (git)
Affected: d6732b95b6fbbc6d5bb9d2f809e275763640c4a2 , < e77fbefd1269b5c123e7c651a1ebdce1b87d19a0 (git)
Affected: d6732b95b6fbbc6d5bb9d2f809e275763640c4a2 , < 7ddc29a094d96e9b3aa280433c6dc443df9eabf2 (git)
Affected: d6732b95b6fbbc6d5bb9d2f809e275763640c4a2 , < 5ba9950bc9078e19b69cca1e56d1553b125c6857 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.7
Unaffected: 0 , < 6.7 (semver)
Unaffected: 6.12.95 , ≤ 6.12.* (semver)
Unaffected: 6.18.38 , ≤ 6.18.* (semver)
Unaffected: 7.1.3 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/tcp_ao.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6ce7ef41743740ce15c2061561b784148b565b3f",
              "status": "affected",
              "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
              "versionType": "git"
            },
            {
              "lessThan": "e77fbefd1269b5c123e7c651a1ebdce1b87d19a0",
              "status": "affected",
              "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
              "versionType": "git"
            },
            {
              "lessThan": "7ddc29a094d96e9b3aa280433c6dc443df9eabf2",
              "status": "affected",
              "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
              "versionType": "git"
            },
            {
              "lessThan": "5ba9950bc9078e19b69cca1e56d1553b125c6857",
              "status": "affected",
              "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/ipv4/tcp_ao.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.7"
            },
            {
              "lessThan": "6.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.95",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.38",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.95",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.38",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.3",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tcp-ao: fix use-after-free of key in del_async path\n\nIn tcp_ao_delete_key(), the del_async path skips the current_key\nand rnext_key validity checks present in the synchronous path,\nassuming these pointers are always NULL on LISTEN sockets.  However,\nif a key was added with set_current=1/set_rnext=1 while the socket\nwas in CLOSE state, current_key and rnext_key will be non-NULL\nafter listen() transitions the socket to LISTEN.\n\nWhen such a key is deleted with del_async=1, hlist_del_rcu() and\ncall_rcu() free the key without clearing the dangling pointers.\nAfter the RCU grace period, getsockopt(TCP_AO_INFO) dereferences\ncurrent_key-\u003esndid and rnext_key-\u003ercvid from freed slab memory.\n\nClear current_key and rnext_key in the del_async path when they\nreference the key being deleted."
        }
      ],
      "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 - Exploitation requires local `setsockopt`/`getsockopt` syscalls on a TCP socket owned by the attacker; the UAF is triggered in socket-option management, not by remote TCP-AO packet processing on the listen path.\nAC:L - An attacker who controls the socket can deterministically perform add-with-set_current/set_rnext on CLOSE, listen(), del_async delete, wait for RCU, then getsockopt(TCP_AO_INFO) without depending on conditions outside their control.\nPR:L - No capability checks protect TCP-AO socket options beyond socket ownership; an unprivileged local user (including in a user namespace) can create a listening TCP socket, configure TCP-AO keys, and trigger the bug on their own socket.\nUI:N - No victim interaction is required; the attacker drives the full exploit sequence through their own socket file descriptor.\nS:U - Impact is confined to kernel memory corruption and privilege escalation within the same security domain; this is not a cross-VM, cross-container, or IOMMU boundary escape.\nC:H - The bug is a use-after-free where `getsockopt(TCP_AO_INFO)` reads `sndid`/`rcvid` from freed `tcp_ao_key` slab memory, enabling information disclosure from attacker-influenced freed heap contents.\nI:H - Use-after-free of a heap-allocated `tcp_ao_key` structure can be leveraged with heap grooming for arbitrary memory corruption and potential kernel code execution, not merely a bounded write.\nA:H - Dereferencing freed kernel memory via `getsockopt(TCP_AO_INFO)` can cause kernel oops/panic and denial of service even when full exploitation is not attempted."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T04:50:40.399Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6ce7ef41743740ce15c2061561b784148b565b3f"
        },
        {
          "url": "https://git.kernel.org/stable/c/e77fbefd1269b5c123e7c651a1ebdce1b87d19a0"
        },
        {
          "url": "https://git.kernel.org/stable/c/7ddc29a094d96e9b3aa280433c6dc443df9eabf2"
        },
        {
          "url": "https://git.kernel.org/stable/c/5ba9950bc9078e19b69cca1e56d1553b125c6857"
        }
      ],
      "title": "net/tcp-ao: fix use-after-free of key in del_async path",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-53389",
    "datePublished": "2026-07-19T12:01:54.386Z",
    "dateReserved": "2026-06-09T07:44:35.402Z",
    "dateUpdated": "2026-08-17T04:50:40.399Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-53389",
      "date": "2026-09-21",
      "epss": "0.0017",
      "percentile": "0.06742"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/ipv4/tcp_ao.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "6ce7ef41743740ce15c2061561b784148b565b3f",
                    "status": "affected",
                    "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e77fbefd1269b5c123e7c651a1ebdce1b87d19a0",
                    "status": "affected",
                    "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "7ddc29a094d96e9b3aa280433c6dc443df9eabf2",
                    "status": "affected",
                    "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "5ba9950bc9078e19b69cca1e56d1553b125c6857",
                    "status": "affected",
                    "version": "d6732b95b6fbbc6d5bb9d2f809e275763640c4a2",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/ipv4/tcp_ao.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.7"
                  },
                  {
                    "lessThan": "6.7",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.95",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.38",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.3",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "4E206B86-E0E3-4394-A93F-39F2D50A8AA8",
                    "versionEndExcluding": "6.12.95",
                    "versionStartIncluding": "6.7",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "FA591B28-5D62-449E-BDBE-3C9391BF070A",
                    "versionEndExcluding": "6.18.38",
                    "versionStartIncluding": "6.13",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "9526B150-E2B3-4C6F-8AE5-1AF92B75AD9E",
                    "versionEndExcluding": "7.1.3",
                    "versionStartIncluding": "6.19",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/tcp-ao: fix use-after-free of key in del_async path\n\nIn tcp_ao_delete_key(), the del_async path skips the current_key\nand rnext_key validity checks present in the synchronous path,\nassuming these pointers are always NULL on LISTEN sockets.  However,\nif a key was added with set_current=1/set_rnext=1 while the socket\nwas in CLOSE state, current_key and rnext_key will be non-NULL\nafter listen() transitions the socket to LISTEN.\n\nWhen such a key is deleted with del_async=1, hlist_del_rcu() and\ncall_rcu() free the key without clearing the dangling pointers.\nAfter the RCU grace period, getsockopt(TCP_AO_INFO) dereferences\ncurrent_key-\u003esndid and rnext_key-\u003ercvid from freed slab memory.\n\nClear current_key and rnext_key in the del_async path when they\nreference the key being deleted."
          }
        ],
        "id": "CVE-2026-53389",
        "lastModified": "2026-08-17T05:17:13.170",
        "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-07-19T12:16:49.890",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/5ba9950bc9078e19b69cca1e56d1553b125c6857"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/6ce7ef41743740ce15c2061561b784148b565b3f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/7ddc29a094d96e9b3aa280433c6dc443df9eabf2"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/e77fbefd1269b5c123e7c651a1ebdce1b87d19a0"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Analyzed",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-416"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "None",
      "current_release_date": "2026-07-21T08:02:59+00:00",
      "cve": "CVE-2026-53389",
      "id": "CVE-2026-53389",
      "initial_release_date": "2026-07-19T00:00:00+00:00",
      "product_status:known_not_affected": "275",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net/tcp-ao: fix use-after-free of key in del_async path",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-53389.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-09-15T02:01:41Z",
      "cve": "CVE-2026-53389",
      "id": "CVE-2026-53389",
      "initial_release_date": "2026-07-19T17:36:08Z",
      "product_status:known_affected": "29",
      "product_status:known_not_affected": "345",
      "product_status:recommended": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-53389",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-53389.json",
      "version": "6"
    }
  }
}



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…

Detection rules are retrieved from Rulezet.

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…