Skip to content
Heist/ feed
Back to feed
UnratedFix available

xfrm: espintcp: fix UAF during close

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: xfrm: espintcp: fix UAF during close ZDI reported and analyzed a race condition during close for espintcp sockets: espintcp_close() frees emsg->skb via kfree_skb() without holding any socket lock. Concurrently, the xfrm_trans_reinject work queue invokes esp_output_tcp_finish() -> espintcp_push_skb() -> espintcp_push_msgs() -> skb_send_sock_locked(), which reads the same skb as a data source. Fix this by adding a synchronize_rcu() call after resetting sk_prot, since esp_output_tcp_finish() runs under RCU and won't use a socket with sk_prot == &tcp_prot. Simply taking the socket lock in espintcp_close() could lead to leaks, if esp_output_tcp_finish() re-adds an skb in the slot we just freed. After this, the existing barrier() is no longer needed.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.269, 5.15.220, 6.1.187, 6.12.108, 6.18.49, 6.6.156, 7.1.13, 7.2.3
CVEs
CVE-2026-80848
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 20:34 UTC · Revision 1

Source evidence

xfrm: espintcp: fix UAF during close

core-osv · Original source

Published 4 Sept 2026, 15:54 UTC

In the Linux kernel, the following vulnerability has been resolved: xfrm: espintcp: fix UAF during close ZDI reported and analyzed a race condition during close for espintcp sockets: espintcp_close() frees emsg->skb via kfree_skb() without holding any socket lock. Concurrently, the xfrm_trans_reinject work queue invokes esp_output_tcp_finish() -> espintcp_push_skb() -> espintcp_push_msgs() -> skb_send_sock_locked(), which reads the same skb as a data source. Fix this by adding a synchronize_rcu() call after resetting sk_prot, since esp_output_tcp_finish() runs under RCU and won't use a socket with sk_prot == &tcp_prot. Simply taking the socket lock in espintcp_close() could lead to leaks, if esp_output_tcp_finish() re-adds an skb in the slot we just freed. After this, the existing barrier() is no longer needed.

osv:CVE-2026-80848

Kernel

Fixed versions: 5.10.269, 5.15.220, 6.1.187, 6.6.156, 6.12.108, 6.18.49, 7.1.13, 7.2.3

Complete source record
{
  "id": "f04eee58f205347c4e0b0d54d4d28b13c7d0f62d07c575aa221a8afad0049f3a",
  "url": "https://osv.dev/vulnerability/CVE-2026-80848",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "xfrm: espintcp: fix UAF during close",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: xfrm: espintcp: fix UAF during close ZDI reported and analyzed a race condition during close for espintcp sockets: espintcp_close() frees emsg->skb via kfree_skb() without holding any socket lock. Concurrently, the xfrm_trans_reinject work queue invokes esp_output_tcp_finish() -> espintcp_push_skb() -> espintcp_push_msgs() -> skb_send_sock_locked(), which reads the same skb as a data source. Fix this by adding a synchronize_rcu() call after resetting sk_prot, since esp_output_tcp_finish() runs under RCU and won't use a socket with sk_prot == &tcp_prot. Simply taking the socket lock in espintcp_close() could lead to leaks, if esp_output_tcp_finish() re-adds an skb in the slot we just freed. After this, the existing barrier() is no longer needed.",
    "evidence": "osv:CVE-2026-80848",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.269",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.220",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.187",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.156",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.108",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.49",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.1.13",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.2.3",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-80848",
      "aliases": [
        "CVE-2026-80848"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "e27cca96cd68fa2c6814c90f9a1cfd36bb68c593"
                },
                {
                  "fixed": "29121c5e6591da527e8e36ddac7120dc527f574d"
                },
                {
                  "fixed": "ed5d9102190c45fc70121c036b0626b740040b75"
                },
                {
                  "fixed": "4bc0dfa28dca6fc0084203732695968049c44072"
                },
                {
                  "fixed": "ff8dd7a932f34409a56e1b91a1219340f17457e9"
                },
                {
                  "fixed": "4b31a875693c480c611519faca46216514e3e052"
                },
                {
                  "fixed": "24efebecf415ba264adba0f0491cec436463a14f"
                },
                {
                  "fixed": "eb3bbf29c723fe75c0eb92be14f0ec92971fe272"
                },
                {
                  "fixed": "54b41ad14da9a981131ab6e4d3f79321a503ea5d"
                },
                {
                  "fixed": "deb232e884877bf10b4ce2580909eedec986c284"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80848.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.6.0"
                },
                {
                  "fixed": "5.10.269"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.220"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.187"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.156"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.108"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.49"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.1.13"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "7.2.0"
                },
                {
                  "fixed": "7.2.3"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80848.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:39.042749917Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/24efebecf415ba264adba0f0491cec436463a14f",
        "https://git.kernel.org/stable/c/29121c5e6591da527e8e36ddac7120dc527f574d",
        "https://git.kernel.org/stable/c/4b31a875693c480c611519faca46216514e3e052",
        "https://git.kernel.org/stable/c/4bc0dfa28dca6fc0084203732695968049c44072",
        "https://git.kernel.org/stable/c/54b41ad14da9a981131ab6e4d3f79321a503ea5d",
        "https://git.kernel.org/stable/c/deb232e884877bf10b4ce2580909eedec986c284",
        "https://git.kernel.org/stable/c/eb3bbf29c723fe75c0eb92be14f0ec92971fe272",
        "https://git.kernel.org/stable/c/ed5d9102190c45fc70121c036b0626b740040b75",
        "https://git.kernel.org/stable/c/ff8dd7a932f34409a56e1b91a1219340f17457e9",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80848.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-80848",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80848.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-80848",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 506732,
  "published_at": "2026-09-04T15:54:58.427+00:00"
}