{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2026-52974",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2026-52974"
  ],
  "published": "2026-06-24T16:31:02Z",
  "summary": "net: tls: fix strparser anchor skb leak on offload RX setup failure",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: tls: fix strparser anchor skb leak on offload RX setup failure\n\nWhen tls_set_device_offload_rx() fails at tls_dev_add(), the error path\ncalls tls_sw_free_resources_rx() to clean up the SW context that was\ninitialized by tls_set_sw_offload(). This function calls\ntls_sw_release_resources_rx() (which stops the strparser via\ntls_strp_stop()) and tls_sw_free_ctx_rx() (which kfrees the context),\nbut never frees the anchor skb that was allocated by alloc_skb(0) in\ntls_strp_init().\n\nNote that tls_sw_free_resources_rx() is exclusively used for this\n\"failed to start offload\" code path, there's no other caller.\n\nThe leak did not exist before commit 84c61fe1a75b (\"tls: rx: do not use\nthe standard strparser\"), because the standard strparser doesn't try\nto pre-allocate an skb.\n\nThe normal close path in tls_sk_proto_close() handles cleanup by calling\ntls_sw_strparser_done() (which calls tls_strp_done()) after dropping\nthe socket lock, because tls_strp_done() does cancel_work_sync() and\nthe strparser work handler takes the socket lock.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.47-1+rpt4"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-2712",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v6",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v7l",
            "binary_version": "1:6.1.47-1+rpt4"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi3-rpi-v8",
            "binary_version": "1:6.1.47-1+rpt4"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.47-1+rpt4": {
            "linux_commit": "655fc658a15ae7a6f37103754adb39ba52a9a14e",
            "upstream_version": "6.1.47",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.175",
            "compiled_filter": false
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2026-52974"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/0c9f399b37ce22a5ed94cc51f03ed07ac7f38e32"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/688f12aa44511dd57e448eb670075c6302ad1dc1"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/3c405dfa9619e506e75b8e41f8b29a5b99731877"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/9c54e76f8d6eb11735918777ef0e0509e089557d"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/bd07fe6c38b9e44ff3fc02692a53f095c5cc9afc"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/58689498ca3384851145a754dbb1d8ed1cf9fb54"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T13:16:28Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.5,
      "cvss_v3_severity": "High",
      "scenario": "AV:N - A remote TLS peer can plausibly trigger this through a network-facing kTLS-enabled service that installs TLS_RX state after handshake on a TLS RX offload-capable NIC. The direct kernel path is setsockopt-driven, but the vulnerable subsystem is kTLS receive/offload setup for network connections and can be reached per remote connection.\nAC:L - There is no race or fragile timing requirement; the attacker can repeatedly drive RX state setup and can plausibly force tls_dev_add() failure via unsupported TLS 1.2 RX offload parameters or exhausted offload resources. The required offload-capable deployment is a reasonable server scenario for this subsystem.\nPR:N - In the network-facing kTLS service scenario, the attacker needs no local account or prior authentication to initiate TLS connections that cause the service to install RX state. Any application-level authentication would occur after the connection setup path.\nUI:N - No victim user action is required beyond the target service automatically handling incoming TLS connections. The attacker can repeat the trigger by opening connections.\nS:U - The impact remains within the kernel and network stack security authority. There is no VM escape, IOMMU bypass, or cross-scope boundary crossing.\nC:N - The bug leaks an internal zero-length anchor skb object by losing its reference; it does not expose kernel memory contents to the attacker. No read primitive or information disclosure was identified.\nI:N - The issue is a missing cleanup in an error path and does not corrupt memory or modify attacker-chosen kernel data. No write primitive or control-flow impact was identified.\nA:H - The leaked skb is kernel memory and the failing offload setup path can be triggered repeatedly, allowing unbounded memory consumption. Related strparser skb leak precedent treats repeatable network-triggered memory exhaustion as high availability impact."
    }
  }
}
