{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2023-53619",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2023-53619"
  ],
  "published": "2025-10-07T15:20:13Z",
  "summary": "netfilter: conntrack: Avoid nf_ct_helper_hash uses after free",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: conntrack: Avoid nf_ct_helper_hash uses after free\n\nIf nf_conntrack_init_start() fails (for example due to a\nregister_nf_conntrack_bpf() failure), the nf_conntrack_helper_fini()\nclean-up path frees the nf_ct_helper_hash map.\n\nWhen built with NF_CONNTRACK=y, further netfilter modules (e.g:\nnetfilter_conntrack_ftp) can still be loaded and call\nnf_conntrack_helpers_register(), independently of whether nf_conntrack\ninitialized correctly. This accesses the nf_ct_helper_hash dangling\npointer and causes a uaf, possibly leading to random memory corruption.\n\nThis patch guards nf_conntrack_helper_register() from accessing a freed\nor uninitialized nf_ct_helper_hash pointer and fixes possible\nuses-after-free when loading a conntrack module.",
  "severity": [
    {
      "type": "CVSS_V3",
      "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
    }
  ],
  "affected": [
    {
      "package": {
        "ecosystem": "Raspberry Pi OS:12",
        "name": "linux"
      },
      "versions": [
        "1:6.1.21-1+rpt1"
      ],
      "ecosystem_specific": {
        "binaries": [
          {
            "binary_name": "linux-image-6.1.0-rpi1-rpi-v6",
            "binary_version": "1:6.1.21-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi1-rpi-v7",
            "binary_version": "1:6.1.21-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi1-rpi-v7l",
            "binary_version": "1:6.1.21-1+rpt1"
          },
          {
            "binary_name": "linux-image-6.1.0-rpi1-rpi-v8",
            "binary_version": "1:6.1.21-1+rpt1"
          }
        ]
      },
      "database_specific": {
        "per_version": {
          "1:6.1.21-1+rpt1": {
            "linux_commit": "0afb5e98488aed7017b9bf321b575d0177feb7ed",
            "upstream_version": "6.1.21",
            "assessment": "commit ancestry (strak rule)",
            "upstream_fixed": "6.1.39"
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2023-53619"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/4ee69c91cb8f9ca144bc0861969e5a1a3c6152a7"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/00716f25f9697d02a0d9bd622575c7c7321ba3d0"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/61c7a5256543ae7d24cd9d21853d514c8632e1e9"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/8289d422f5e484efe4a565fe18e862ecd621c175"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/6f03ce2f1abcb9f9d0511e3659ca6eb60e39f566"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/05561f822f27b9fa88fa5504ddec34bf38833034"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/fce5cc7cbd4b92f979bf02c9ec5fb69aaeba92d7"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/6eef7a2b933885a17679eb8ed0796ddf0ee5309b"
    }
  ],
  "database_specific": {
    "source": "https://git.kernel.org/pub/scm/linux/security/vulns.git",
    "upstream_modified": "2026-08-05T11:24:39Z",
    "severity": {
      "source": "kernel CNA",
      "cvss_v3_score": 7.8,
      "cvss_v3_severity": "High",
      "scenario": "AV:L - The trigger is a local netlink/setsockopt operation (nftables ct helper object or iptables `-j CT --helper`) that drives conntrack-helper module autoloading, or a direct module load; no network-facing code path reaches `nf_conntrack_helper_register()`.\nAC:L - Per CVSS 3.1 \u00a72.1.2, the base metrics are scored with the vulnerable component in its vulnerable configuration (built-in conntrack whose init failed, which is deterministic per boot on affected builds); in that state the attacker triggers `nf_conntrack_helper_register()` on demand and repeatably by naming different helpers, with no race or unknowable state to win.\nPR:L - An unprivileged local user obtains CAP_NET_ADMIN via `unshare -Urn`, since nfnetlink/nftables gates only on `netlink_net_capable(skb, CAP_NET_ADMIN)` and `__request_module()` performs no capability check, so `nft_ct_helper_obj_init()` autoloads the helper module that hits the dangling hash.\nUI:N - No victim action is needed; the attacker performs the entire sequence itself in its own network/user namespace.\nS:U - The corruption is confined to kernel memory within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The bucket walk dereferences attacker-controlled pointers from the reallocated page (`strcmp(cur->name, me->name)`) giving an arbitrary-read/oracle primitive, and `rcu_assign_pointer(h->first, n)` writes a module `.data` pointer into memory the attacker can spray and read back, defeating KASLR.\nI:H - `WRITE_ONCE(first->pprev, &n->next)` in `hlist_add_head_rcu()` writes a known kernel pointer to an address fully controlled by the attacker-sprayed contents of the freed page \u2014 a write-what/where primitive suitable for control-flow hijack.\nA:H - Use-after-free on a freed page walked as an hlist reliably causes oops/panic or the \"random memory corruption\" the fix's author describes, taking down the kernel."
    }
  }
}
