{
  "schema_version": "1.6.1",
  "id": "RPI-CVE-2023-53733",
  "modified": "2026-10-09T11:39:44Z",
  "upstream": [
    "CVE-2023-53733"
  ],
  "published": "2025-10-24T11:44:40Z",
  "summary": "net: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode",
  "details": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: sched: cls_u32: Undo tcf_bind_filter if u32_replace_hw_knode\n\nWhen u32_replace_hw_knode fails, we need to undo the tcf_bind_filter\noperation done at u32_set_parms.",
  "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.42"
          }
        }
      }
    }
  ],
  "references": [
    {
      "type": "ADVISORY",
      "url": "https://www.cve.org/CVERecord?id=CVE-2023-53733"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/a9345793469b65ee5ba7b033239916c2a67d3dd4"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/025159ed118ba5145b241d574edadb0e00d3c20f"
    },
    {
      "type": "FIX",
      "url": "https://git.kernel.org/stable/c/9cb36faedeafb9720ac236aeae2ea57091d90a09"
    }
  ],
  "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 vulnerable path is reached through the rtnetlink `RTM_NEWTFILTER` interface (tc filter add/change) on the local system; no network peer can drive filter configuration. Packet transmission only serves to consume the corrupted state afterwards.\nAC:L - Failure of `u32_replace_hw_knode()` is fully attacker-controlled \u2014 setting the `skip_sw` flag on a filter attached to a non-offload-capable device (dummy/veth/lo) makes `tc_setup_cb_add()` return `-EOPNOTSUPP` deterministically on every attempt, with no race and no dependence on state outside the attacker's control.\nPR:L - Only `CAP_NET_ADMIN` within a network namespace is needed, which any unprivileged local user obtains with `unshare -Urn` before creating a dummy device, an HTB qdisc with classes, and u32 filters. Per kernel CNA guidance, tc/qdisc paths reachable via user namespaces are PR:L, not PR:H.\nUI:N - The attacker performs the entire sequence (create qdisc/class, repeatedly issue the failing filter add, delete the class, send traffic) unaided. No victim action is required at any point.\nS:U - The corrupted `filter_cnt` accounting and the resulting freed `htb_class` object both live in the kernel of the same machine, so the impact stays within a single security authority. This is standard kernel-local privilege escalation, not a hypervisor or IOMMU boundary crossing.\nC:H - The refcount imbalance permits a still-referenced traffic class to be freed while `res.class` remains a dangling pointer consumed by `htb_classify()`, giving a use-after-free on a slab object the attacker can reallocate and read back. Per guidance, a UAF that grants control over freed-object contents is High confidentiality impact.\nI:H - The same use-after-free lets a sprayed replacement object supply `cl->level`, `cl->leaf.q` and the qdisc function pointers dereferenced in the enqueue path, yielding a write/control-flow-hijack primitive \u2014 the same primitive that produced working local privilege escalation for the sibling cls_u32 tcf_result bugs. Type-confused/UAF corruption of kernel objects is High integrity impact.\nA:H - Even without exploitation, the leaked `filter_cnt` permanently pins the class and its qdisc so `tc class del` always returns `-EBUSY` and the memory is never reclaimed, and the dangling `res.class` dereference in the packet enqueue path oopses the kernel. Any kernel crash or use-after-free is High availability impact."
    }
  }
}
