Skip to content
Heist/ feed
Back to feed
UnratedFix available

net: sched: act_csum: validate nested VLAN headers

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: net: sched: act_csum: validate nested VLAN headers tcf_csum_act() walks nested VLAN headers directly from skb->data when an skb still carries in-payload VLAN tags. The current code reads vlan->h_vlan_encapsulated_proto and then pulls VLAN_HLEN bytes without first ensuring that the full VLAN header is present in the linear area. If only part of an inner VLAN header is linearized, accessing h_vlan_encapsulated_proto reads past the linear area, and the following skb_pull(VLAN_HLEN) may violate skb invariants. Fix this by requiring pskb_may_pull(skb, VLAN_HLEN) before accessing and pulling each nested VLAN header. If the header still is not fully available, drop the packet through the existing error path.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.258, 5.15.209, 6.1.175, 6.12.83, 6.18.24, 6.19.14, 6.6.136
CVEs
CVE-2026-31684
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 07:05 UTC · Revision 1

Source evidence

net: sched: act_csum: validate nested VLAN headers

core-osv · Original source

Published 25 Apr 2026, 08:47 UTC

In the Linux kernel, the following vulnerability has been resolved: net: sched: act_csum: validate nested VLAN headers tcf_csum_act() walks nested VLAN headers directly from skb->data when an skb still carries in-payload VLAN tags. The current code reads vlan->h_vlan_encapsulated_proto and then pulls VLAN_HLEN bytes without first ensuring that the full VLAN header is present in the linear area. If only part of an inner VLAN header is linearized, accessing h_vlan_encapsulated_proto reads past the linear area, and the following skb_pull(VLAN_HLEN) may violate skb invariants. Fix this by requiring pskb_may_pull(skb, VLAN_HLEN) before accessing and pulling each nested VLAN header. If the header still is not fully available, drop the packet through the existing error path.

osv:CVE-2026-31684

Kernel

Fixed versions: 5.10.258, 5.15.209, 6.1.175, 6.6.136, 6.12.83, 6.18.24, 6.19.14

Complete source record
{
  "id": "0a6e1813a808f81c35b7be1b8ec03ebb0582079412b9232145a9a69c50d62098",
  "url": "https://osv.dev/vulnerability/CVE-2026-31684",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "net: sched: act_csum: validate nested VLAN headers",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: net: sched: act_csum: validate nested VLAN headers tcf_csum_act() walks nested VLAN headers directly from skb->data when an skb still carries in-payload VLAN tags. The current code reads vlan->h_vlan_encapsulated_proto and then pulls VLAN_HLEN bytes without first ensuring that the full VLAN header is present in the linear area. If only part of an inner VLAN header is linearized, accessing h_vlan_encapsulated_proto reads past the linear area, and the following skb_pull(VLAN_HLEN) may violate skb invariants. Fix this by requiring pskb_may_pull(skb, VLAN_HLEN) before accessing and pulling each nested VLAN header. If the header still is not fully available, drop the packet through the existing error path.",
    "evidence": "osv:CVE-2026-31684",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.258",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.209",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.175",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.136",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.83",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.24",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.19.14",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-31684",
      "aliases": [
        "CVE-2026-31684"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "2ecba2d1e45b24620a7c3df9531895cf68d5dec6"
                },
                {
                  "fixed": "0410c619e86551677fb79887a38eccad3f5a0725"
                },
                {
                  "fixed": "886469b6455611a511aa6013e957e15e50577513"
                },
                {
                  "fixed": "46c07ad50fa2f4ba7663ee1b72b75ad7ad45cf09"
                },
                {
                  "fixed": "eb3765b90eb8f2a3d6310a80c14a9e57ec4267a2"
                },
                {
                  "fixed": "a69738efea0996d05a3c7d2178551b891744df1b"
                },
                {
                  "fixed": "ec4930979b3f7bbeb7af5744599fc6603a4dba62"
                },
                {
                  "fixed": "3d165d975305cf76ff0b10a3c798fb31e5f5f9a5"
                },
                {
                  "fixed": "c842743d073bdd683606cb414eb0ca84465dd834"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "4.19.99"
                },
                {
                  "fixed": "4.20"
                }
              ]
            },
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "3764bfae5056e95617b6ee074129297e11710886"
                }
              ]
            }
          ],
          "versions": [
            "v4.19.325",
            "v4.19.324",
            "v4.19.323",
            "v4.19.322",
            "v4.19.321",
            "v4.19.320",
            "v4.19.319",
            "v4.19.318",
            "v4.19.317",
            "v4.19.316",
            "v4.19.315",
            "v4.19.314",
            "v4.19.313",
            "v4.19.312",
            "v4.19.311",
            "v4.19.310",
            "v4.19.309",
            "v4.19.308",
            "v4.19.307",
            "v4.19.306",
            "v4.19.305",
            "v4.19.304",
            "v4.19.303",
            "v4.19.302",
            "v4.19.301",
            "v4.19.300",
            "v4.19.299",
            "v4.19.298",
            "v4.19.297",
            "v4.19.296",
            "v4.19.295",
            "v4.19.294",
            "v4.19.293",
            "v4.19.292",
            "v4.19.291",
            "v4.19.290",
            "v4.19.289",
            "v4.19.288",
            "v4.19.287",
            "v4.19.286",
            "v4.19.285",
            "v4.19.284",
            "v4.19.283",
            "v4.19.282",
            "v4.19.281",
            "v4.19.280",
            "v4.19.279",
            "v4.19.278",
            "v4.19.277",
            "v4.19.276",
            "v4.19.275",
            "v4.19.274",
            "v4.19.273",
            "v4.19.272",
            "v4.19.271",
            "v4.19.270",
            "v4.19.269",
            "v4.19.268",
            "v4.19.267",
            "v4.19.266",
            "v4.19.265",
            "v4.19.264",
            "v4.19.263",
            "v4.19.262",
            "v4.19.261",
            "v4.19.260",
            "v4.19.259",
            "v4.19.258",
            "v4.19.257",
            "v4.19.256",
            "v4.19.255",
            "v4.19.254",
            "v4.19.253",
            "v4.19.252",
            "v4.19.251",
            "v4.19.250",
            "v4.19.249",
            "v4.19.248",
            "v4.19.247",
            "v4.19.246",
            "v4.19.245",
            "v4.19.244",
            "v4.19.243",
            "v4.19.242",
            "v4.19.241",
            "v4.19.240",
            "v4.19.239",
            "v4.19.238",
            "v4.19.237",
            "v4.19.236",
            "v4.19.235",
            "v4.19.234",
            "v4.19.233",
            "v4.19.232",
            "v4.19.231",
            "v4.19.230",
            "v4.19.229",
            "v4.19.228",
            "v4.19.227",
            "v4.19.226",
            "v4.19.225",
            "v4.19.224",
            "v4.19.223",
            "v4.19.222",
            "v4.19.221",
            "v4.19.220",
            "v4.19.219",
            "v4.19.218",
            "v4.19.217",
            "v4.19.216",
            "v4.19.215",
            "v4.19.214",
            "v4.19.213",
            "v4.19.212",
            "v4.19.211",
            "v4.19.210",
            "v4.19.209",
            "v4.19.208",
            "v4.19.207",
            "v4.19.206",
            "v4.19.205",
            "v4.19.204",
            "v4.19.203",
            "v4.19.202",
            "v4.19.201",
            "v4.19.200",
            "v4.19.199",
            "v4.19.198",
            "v4.19.197",
            "v4.19.196",
            "v4.19.195",
            "v4.19.194",
            "v4.19.193",
            "v4.19.192",
            "v4.19.191",
            "v4.19.190",
            "v4.19.189",
            "v4.19.188",
            "v4.19.187",
            "v4.19.186",
            "v4.19.185",
            "v4.19.184",
            "v4.19.183",
            "v4.19.182",
            "v4.19.181",
            "v4.19.180",
            "v4.19.179",
            "v4.19.178",
            "v4.19.177",
            "v4.19.176",
            "v4.19.175",
            "v4.19.174",
            "v4.19.173",
            "v4.19.172",
            "v4.19.171",
            "v4.19.170",
            "v4.19.169",
            "v4.19.168",
            "v4.19.167",
            "v4.19.166",
            "v4.19.165",
            "v4.19.164",
            "v4.19.163",
            "v4.19.162",
            "v4.19.161",
            "v4.19.160",
            "v4.19.159",
            "v4.19.158",
            "v4.19.157",
            "v4.19.156",
            "v4.19.155",
            "v4.19.154",
            "v4.19.153",
            "v4.19.152",
            "v4.19.151",
            "v4.19.150",
            "v4.19.149",
            "v4.19.148",
            "v4.19.147",
            "v4.19.146",
            "v4.19.145",
            "v4.19.144",
            "v4.19.143",
            "v4.19.142",
            "v4.19.141",
            "v4.19.140",
            "v4.19.139",
            "v4.19.138",
            "v4.19.137",
            "v4.19.136",
            "v4.19.135",
            "v4.19.134",
            "v4.19.133",
            "v4.19.132",
            "v4.19.131",
            "v4.19.130",
            "v4.19.129",
            "v4.19.128",
            "v4.19.127",
            "v4.19.126",
            "v4.19.125",
            "v4.19.124",
            "v4.19.123",
            "v4.19.122",
            "v4.19.121",
            "v4.19.120",
            "v4.19.119",
            "v4.19.118",
            "v4.19.117",
            "v4.19.116",
            "v4.19.115",
            "v4.19.114",
            "v4.19.113",
            "v4.19.112",
            "v4.19.111",
            "v4.19.110",
            "v4.19.109",
            "v4.19.108",
            "v4.19.107",
            "v4.19.106",
            "v4.19.105",
            "v4.19.104",
            "v4.19.103",
            "v4.19.102",
            "v4.19.101",
            "v4.19.100",
            "v4.19.99"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31684.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.1.0"
                },
                {
                  "fixed": "5.10.258"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.209"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.175"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.136"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.83"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.24"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "6.19.14"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31684.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.623109251Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/0410c619e86551677fb79887a38eccad3f5a0725",
        "https://git.kernel.org/stable/c/3d165d975305cf76ff0b10a3c798fb31e5f5f9a5",
        "https://git.kernel.org/stable/c/46c07ad50fa2f4ba7663ee1b72b75ad7ad45cf09",
        "https://git.kernel.org/stable/c/886469b6455611a511aa6013e957e15e50577513",
        "https://git.kernel.org/stable/c/a69738efea0996d05a3c7d2178551b891744df1b",
        "https://git.kernel.org/stable/c/c842743d073bdd683606cb414eb0ca84465dd834",
        "https://git.kernel.org/stable/c/eb3765b90eb8f2a3d6310a80c14a9e57ec4267a2",
        "https://git.kernel.org/stable/c/ec4930979b3f7bbeb7af5744599fc6603a4dba62",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31684.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-31684",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31684.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-31684",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 493204,
  "published_at": "2026-04-25T08:47:01.555+00:00"
}