CVE-2026-74382 (GCVE-0-2026-74382)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:58 – Updated: 2026-08-17 05:18
VLAI
Title
net/sched: cls_bpf: prevent unbounded recursion in offload rollback
Summary
In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_bpf: prevent unbounded recursion in offload rollback Quan Sun reported [1] a stack overflow in cls_bpf_offload_cmd(). Reproducer on netdevsim: add a skip_sw cls_bpf filter, set the bpf_tc_accept debugfs knob to 0, then `tc filter replace`. The replace calls tc_setup_cb_replace() which fails. cls_bpf_offload_cmd() then swaps prog/oldprog and recursively calls itself to roll back. But bpf_tc_accept=0 makes the rollback fail too, which triggers yet another rollback frame with the same arguments, and so on until the stack is exhausted. bpf_tc_accept is just a convenient knob for the reproducer. Any driver whose tc_setup_cb_replace() fails twice in a row can hit the same loop, so this is not a netdevsim-only issue. Two ways to fix it: 1) Have the rollback call tc_setup_cb_add() on oldprog instead of re-entering cls_bpf_offload_cmd(). 2) Mark the rollback frame with a flag and skip a second-level rollback from inside it. Go with (2). It is the smaller change and keeps the original behaviour: the rollback still goes through tc_setup_cb_replace(), so the driver gets one real chance to restore its state. If that attempt also fails, we just return the original error instead of recursing. [1]: https://lore.kernel.org/bpf/ce5a6005-3c5e-4696-9e05-eba9461dc860@std.uestc.edu.cn/T/#u
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < a018f208ab7512380bd4cf670064d48cba00a1b1 (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 33373e1f378a501bc51aa73312f74295c84e3101 (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < e2d3b7bab3748c811dc5750ce9a8d62bc7f90ed7 (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 4a76953c3ed043797e81529b9395e9ca6f4c7609 (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 1387f252a242a51bfbb6eace29c8f8db21b457da (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 10753da2d659dd425a6e620f47f86852d604f67f (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 3fa6fb5d771c992ebedbfa7331c6bcc6f33f89b7 (git)
Affected: 102740bd9436a3a6ba129af3a48271d794009fa5 , < 27db54b90bcc7c37867fe664107fa25ea6a116e4 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.15
Unaffected: 0 , < 4.15 (semver)
Unaffected: 5.10.261 , ≤ 5.10.* (semver)
Unaffected: 5.15.212 , ≤ 5.15.* (semver)
Unaffected: 6.1.178 , ≤ 6.1.* (semver)
Unaffected: 6.6.145 , ≤ 6.6.* (semver)
Unaffected: 6.12.97 , ≤ 6.12.* (semver)
Unaffected: 6.18.40 , ≤ 6.18.* (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/sched/cls_bpf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a018f208ab7512380bd4cf670064d48cba00a1b1",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "33373e1f378a501bc51aa73312f74295c84e3101",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "e2d3b7bab3748c811dc5750ce9a8d62bc7f90ed7",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "4a76953c3ed043797e81529b9395e9ca6f4c7609",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "1387f252a242a51bfbb6eace29c8f8db21b457da",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "10753da2d659dd425a6e620f47f86852d604f67f",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "3fa6fb5d771c992ebedbfa7331c6bcc6f33f89b7",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            },
            {
              "lessThan": "27db54b90bcc7c37867fe664107fa25ea6a116e4",
              "status": "affected",
              "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/sched/cls_bpf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.15"
            },
            {
              "lessThan": "4.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.261",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.212",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.178",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.145",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.97",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.40",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.261",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.212",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.178",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.145",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.97",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.40",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: cls_bpf: prevent unbounded recursion in offload rollback\n\nQuan Sun reported [1] a stack overflow in cls_bpf_offload_cmd().\n\nReproducer on netdevsim: add a skip_sw cls_bpf filter, set the\nbpf_tc_accept debugfs knob to 0, then `tc filter replace`. The replace\ncalls tc_setup_cb_replace() which fails. cls_bpf_offload_cmd() then\nswaps prog/oldprog and recursively calls itself to roll back. But\nbpf_tc_accept=0 makes the rollback fail too, which triggers yet another\nrollback frame with the same arguments, and so on until the stack is\nexhausted.\n\nbpf_tc_accept is just a convenient knob for the reproducer. Any driver\nwhose tc_setup_cb_replace() fails twice in a row can hit the same loop,\nso this is not a netdevsim-only issue.\n\nTwo ways to fix it:\n\n  1) Have the rollback call tc_setup_cb_add() on oldprog instead of\n     re-entering cls_bpf_offload_cmd().\n  2) Mark the rollback frame with a flag and skip a second-level\n     rollback from inside it.\n\nGo with (2). It is the smaller change and keeps the original behaviour:\nthe rollback still goes through tc_setup_cb_replace(), so the driver\ngets one real chance to restore its state. If that attempt also fails,\nwe just return the original error instead of recursing.\n\n[1]: https://lore.kernel.org/bpf/ce5a6005-3c5e-4696-9e05-eba9461dc860@std.uestc.edu.cn/T/#u"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:18:20.179Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a018f208ab7512380bd4cf670064d48cba00a1b1"
        },
        {
          "url": "https://git.kernel.org/stable/c/33373e1f378a501bc51aa73312f74295c84e3101"
        },
        {
          "url": "https://git.kernel.org/stable/c/e2d3b7bab3748c811dc5750ce9a8d62bc7f90ed7"
        },
        {
          "url": "https://git.kernel.org/stable/c/4a76953c3ed043797e81529b9395e9ca6f4c7609"
        },
        {
          "url": "https://git.kernel.org/stable/c/1387f252a242a51bfbb6eace29c8f8db21b457da"
        },
        {
          "url": "https://git.kernel.org/stable/c/10753da2d659dd425a6e620f47f86852d604f67f"
        },
        {
          "url": "https://git.kernel.org/stable/c/3fa6fb5d771c992ebedbfa7331c6bcc6f33f89b7"
        },
        {
          "url": "https://git.kernel.org/stable/c/27db54b90bcc7c37867fe664107fa25ea6a116e4"
        }
      ],
      "title": "net/sched: cls_bpf: prevent unbounded recursion in offload rollback",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-74382",
    "datePublished": "2026-08-15T05:58:59.106Z",
    "dateReserved": "2026-08-15T05:44:03.890Z",
    "dateUpdated": "2026-08-17T05:18:20.179Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-74382",
      "date": "2026-09-23",
      "epss": "0.00195",
      "percentile": "0.09494"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/sched/cls_bpf.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "a018f208ab7512380bd4cf670064d48cba00a1b1",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "33373e1f378a501bc51aa73312f74295c84e3101",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e2d3b7bab3748c811dc5750ce9a8d62bc7f90ed7",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4a76953c3ed043797e81529b9395e9ca6f4c7609",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "1387f252a242a51bfbb6eace29c8f8db21b457da",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "10753da2d659dd425a6e620f47f86852d604f67f",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3fa6fb5d771c992ebedbfa7331c6bcc6f33f89b7",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "27db54b90bcc7c37867fe664107fa25ea6a116e4",
                    "status": "affected",
                    "version": "102740bd9436a3a6ba129af3a48271d794009fa5",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/sched/cls_bpf.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.15"
                  },
                  {
                    "lessThan": "4.15",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.10.*",
                    "status": "unaffected",
                    "version": "5.10.261",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.15.*",
                    "status": "unaffected",
                    "version": "5.15.212",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.178",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.145",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.97",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.40",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.1.*",
                    "status": "unaffected",
                    "version": "7.1.5",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.2",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/sched: cls_bpf: prevent unbounded recursion in offload rollback\n\nQuan Sun reported [1] a stack overflow in cls_bpf_offload_cmd().\n\nReproducer on netdevsim: add a skip_sw cls_bpf filter, set the\nbpf_tc_accept debugfs knob to 0, then `tc filter replace`. The replace\ncalls tc_setup_cb_replace() which fails. cls_bpf_offload_cmd() then\nswaps prog/oldprog and recursively calls itself to roll back. But\nbpf_tc_accept=0 makes the rollback fail too, which triggers yet another\nrollback frame with the same arguments, and so on until the stack is\nexhausted.\n\nbpf_tc_accept is just a convenient knob for the reproducer. Any driver\nwhose tc_setup_cb_replace() fails twice in a row can hit the same loop,\nso this is not a netdevsim-only issue.\n\nTwo ways to fix it:\n\n  1) Have the rollback call tc_setup_cb_add() on oldprog instead of\n     re-entering cls_bpf_offload_cmd().\n  2) Mark the rollback frame with a flag and skip a second-level\n     rollback from inside it.\n\nGo with (2). It is the smaller change and keeps the original behaviour:\nthe rollback still goes through tc_setup_cb_replace(), so the driver\ngets one real chance to restore its state. If that attempt also fails,\nwe just return the original error instead of recursing.\n\n[1]: https://lore.kernel.org/bpf/ce5a6005-3c5e-4696-9e05-eba9461dc860@std.uestc.edu.cn/T/#u"
          }
        ],
        "id": "CVE-2026-74382",
        "lastModified": "2026-08-17T06:19:33.073",
        "metrics": {},
        "published": "2026-08-15T06:22:40.040",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/10753da2d659dd425a6e620f47f86852d604f67f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1387f252a242a51bfbb6eace29c8f8db21b457da"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/27db54b90bcc7c37867fe664107fa25ea6a116e4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/33373e1f378a501bc51aa73312f74295c84e3101"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/3fa6fb5d771c992ebedbfa7331c6bcc6f33f89b7"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4a76953c3ed043797e81529b9395e9ca6f4c7609"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a018f208ab7512380bd4cf670064d48cba00a1b1"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e2d3b7bab3748c811dc5750ce9a8d62bc7f90ed7"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-19T11:17:18+00:00",
      "cve": "CVE-2026-74382",
      "id": "CVE-2026-74382",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "260",
      "product_status:known_not_affected": "14",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: net/sched: cls_bpf: prevent unbounded recursion in offload rollback",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-74382.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-23T00:18:11Z",
      "cve": "CVE-2026-74382",
      "id": "CVE-2026-74382",
      "initial_release_date": "2026-09-03T00:06:33Z",
      "product_status:first_fixed": "68",
      "product_status:known_affected": "696",
      "product_status:known_not_affected": "6",
      "product_status:recommended": "23",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-74382",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-74382.json",
      "version": "6"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…