2026-03-18 17:54CVE-2026-23270Linux
PUBLISHED5.2

net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks

In the Linux kernel, the following vulnerability has been resolved:

net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks

As Paolo said earlier [1]:

"Since the blamed commit below, classify can return TC_ACT_CONSUMED while

the current skb being held by the defragmentation engine. As reported by

GangMin Kim, if such packet is that may cause a UaF when the defrag engine

later on tries to tuch again such packet."

act_ct was never meant to be used in the egress path, however some users

are attaching it to egress today [2]. Attempting to reach a middle

ground, we noticed that, while most qdiscs are not handling

TC_ACT_CONSUMED, clsact/ingress qdiscs are. With that in mind, we

address the issue by only allowing act_ct to bind to clsact/ingress

qdiscs and shared blocks. That way it's still possible to attach act_ct to

egress (albeit only with clsact).

[1] https://lore.kernel.org/netdev/674b8cbfc385c6f37fb29a1de08d8fe5c2b0fbee.1771321118.git.pabeni@redhat.com/

[2] https://lore.kernel.org/netdev/cc6bfb4a-4a2b-42d8-b9ce-7ef6644fb22b@ovn.org/

Affected products

Linux

Linux

< 524ce8b4ea8f64900b6c52b6a28df74f6bc0801e - AFFECTED

< 380ad8b7c65ea7aa10ef2258297079ed5ac1f5b6 - AFFECTED

< 9deda0fcda5c1f388c5e279541850b71a2ccfcf4 - AFFECTED

< 11cb63b0d1a0685e0831ae3c77223e002ef18189 - AFFECTED

172ba7d46c202e679f3ccb10264c67416aaeb1c4 - AFFECTED

0b5b831122fc3789fff75be433ba3e4dd7b779d4 - AFFECTED

73f7da5fd124f2cda9161e2e46114915e6e82e97 - AFFECTED

f5346df0591d10bc948761ca854b1fae6d2ef441 - AFFECTED

Linux

6.8 - AFFECTED

< 6.8 - UNAFFECTED

<= 6.12.* - UNAFFECTED

<= 6.18.* - UNAFFECTED

<= 6.19.* - UNAFFECTED

<= * - UNAFFECTED

References

GitHub Security Advisories

GHSA-62jp-jvc3-7hh9

In the Linux kernel, the following vulnerability has been resolved: net/sched: Only allow act_ct...

https://github.com/advisories/GHSA-62jp-jvc3-7hh9

In the Linux kernel, the following vulnerability has been resolved:

net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks

As Paolo said earlier [1]:

"Since the blamed commit below, classify can return TC_ACT_CONSUMED while the current skb being held by the defragmentation engine. As reported by GangMin Kim, if such packet is that may cause a UaF when the defrag engine later on tries to tuch again such packet."

act_ct was never meant to be used in the egress path, however some users are attaching it to egress today [2]. Attempting to reach a middle ground, we noticed that, while most qdiscs are not handling TC_ACT_CONSUMED, clsact/ingress qdiscs are. With that in mind, we address the issue by only allowing act_ct to bind to clsact/ingress qdiscs and shared blocks. That way it's still possible to attach act_ct to egress (albeit only with clsact).

[1] https://lore.kernel.org/netdev/674b8cbfc385c6f37fb29a1de08d8fe5c2b0fbee.1771321118.git.pabeni@redhat.com/ [2] https://lore.kernel.org/netdev/cc6bfb4a-4a2b-42d8-b9ce-7ef6644fb22b@ovn.org/

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-23270
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-23270",
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "dateUpdated": "2026-03-18T17:54:43.803Z",
    "dateReserved": "2026-01-13T15:37:45.991Z",
    "datePublished": "2026-03-18T17:54:43.803Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux",
        "dateUpdated": "2026-03-18T17:54:43.803Z"
      },
      "title": "net/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks",
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: Only allow act_ct to bind to clsact/ingress qdiscs and shared blocks\n\nAs Paolo said earlier [1]:\n\n\"Since the blamed commit below, classify can return TC_ACT_CONSUMED while\nthe current skb being held by the defragmentation engine. As reported by\nGangMin Kim, if such packet is that may cause a UaF when the defrag engine\nlater on tries to tuch again such packet.\"\n\nact_ct was never meant to be used in the egress path, however some users\nare attaching it to egress today [2]. Attempting to reach a middle\nground, we noticed that, while most qdiscs are not handling\nTC_ACT_CONSUMED, clsact/ingress qdiscs are. With that in mind, we\naddress the issue by only allowing act_ct to bind to clsact/ingress\nqdiscs and shared blocks. That way it's still possible to attach act_ct to\negress (albeit only with clsact).\n\n[1] https://lore.kernel.org/netdev/674b8cbfc385c6f37fb29a1de08d8fe5c2b0fbee.1771321118.git.pabeni@redhat.com/\n[2] https://lore.kernel.org/netdev/cc6bfb4a-4a2b-42d8-b9ce-7ef6644fb22b@ovn.org/"
        }
      ],
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "programFiles": [
            "include/net/act_api.h",
            "net/sched/act_ct.c",
            "net/sched/cls_api.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "3f14b377d01d8357eba032b4cabc8c1149b458b6",
              "status": "affected",
              "versionType": "git",
              "lessThan": "524ce8b4ea8f64900b6c52b6a28df74f6bc0801e"
            },
            {
              "version": "3f14b377d01d8357eba032b4cabc8c1149b458b6",
              "status": "affected",
              "versionType": "git",
              "lessThan": "380ad8b7c65ea7aa10ef2258297079ed5ac1f5b6"
            },
            {
              "version": "3f14b377d01d8357eba032b4cabc8c1149b458b6",
              "status": "affected",
              "versionType": "git",
              "lessThan": "9deda0fcda5c1f388c5e279541850b71a2ccfcf4"
            },
            {
              "version": "3f14b377d01d8357eba032b4cabc8c1149b458b6",
              "status": "affected",
              "versionType": "git",
              "lessThan": "11cb63b0d1a0685e0831ae3c77223e002ef18189"
            },
            {
              "version": "172ba7d46c202e679f3ccb10264c67416aaeb1c4",
              "status": "affected",
              "versionType": "git"
            },
            {
              "version": "0b5b831122fc3789fff75be433ba3e4dd7b779d4",
              "status": "affected",
              "versionType": "git"
            },
            {
              "version": "73f7da5fd124f2cda9161e2e46114915e6e82e97",
              "status": "affected",
              "versionType": "git"
            },
            {
              "version": "f5346df0591d10bc948761ca854b1fae6d2ef441",
              "status": "affected",
              "versionType": "git"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "programFiles": [
            "include/net/act_api.h",
            "net/sched/act_ct.c",
            "net/sched/cls_api.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "6.8",
              "status": "affected"
            },
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "6.8"
            },
            {
              "version": "6.12.77",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "version": "6.18.18",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "version": "6.19.8",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.19.*"
            },
            {
              "version": "7.0-rc3",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/524ce8b4ea8f64900b6c52b6a28df74f6bc0801e"
        },
        {
          "url": "https://git.kernel.org/stable/c/380ad8b7c65ea7aa10ef2258297079ed5ac1f5b6"
        },
        {
          "url": "https://git.kernel.org/stable/c/9deda0fcda5c1f388c5e279541850b71a2ccfcf4"
        },
        {
          "url": "https://git.kernel.org/stable/c/11cb63b0d1a0685e0831ae3c77223e002ef18189"
        }
      ]
    }
  }
}