CVE-2024-35884 (GCVE-0-2024-35884)
Vulnerability from cvelistv5
Published
2024-05-19 08:34
Modified
2026-08-05 11:30
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: udp: do not accept non-tunnel GSO skbs landing in a tunnel When rx-udp-gro-forwarding is enabled UDP packets might be GROed when being forwarded. If such packets might land in a tunnel this can cause various issues and udp_gro_receive makes sure this isn't the case by looking for a matching socket. This is performed in udp4/6_gro_lookup_skb but only in the current netns. This is an issue with tunneled packets when the endpoint is in another netns. In such cases the packets will be GROed at the UDP level, which leads to various issues later on. The same thing can happen with rx-gro-list. We saw this with geneve packets being GROed at the UDP level. In such case gso_size is set; later the packet goes through the geneve rx path, the geneve header is pulled, the offset are adjusted and frag_list skbs are not adjusted with regard to geneve. When those skbs hit skb_fragment, it will misbehave. Different outcomes are possible depending on what the GROed skbs look like; from corrupted packets to kernel crashes. One example is a BUG_ON[1] triggered in skb_segment while processing the frag_list. Because gso_size is wrong (geneve header was pulled) skb_segment thinks there is "geneve header size" of data in frag_list, although it's in fact the next packet. The BUG_ON itself has nothing to do with the issue. This is only one of the potential issues. Looking up for a matching socket in udp_gro_receive is fragile: the lookup could be extended to all netns (not speaking about performances) but nothing prevents those packets from being modified in between and we could still not find a matching socket. It's OK to keep the current logic there as it should cover most cases but we also need to make sure we handle tunnel packets being GROed too early. This is done by extending the checks in udp_unexpected_gso: GSO packets lacking the SKB_GSO_UDP_TUNNEL/_CSUM bits and landing in a tunnel must be segmented. [1] kernel BUG at net/core/skbuff.c:4408! RIP: 0010:skb_segment+0xd2a/0xf70 __udp_gso_segment+0xaa/0x560
Impacted products
Vendor Product Version
Linux Linux Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Version: 9fd1ff5d2ac7181844735806b0a703c942365291
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "NETWORK",
              "availabilityImpact": "HIGH",
              "baseScore": 8.8,
              "baseSeverity": "HIGH",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "HIGH",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2024-35884",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-05-28T19:37:18.298363Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "description": "CWE-noinfo Not enough information",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-11-13T18:46:28.924Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T03:21:48.465Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3391b157780bbedf8ef9f202cbf10ee90bf6b0f8"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/d49ae15a5767d4e9ef8bbb79e42df1bfebc94670"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/d12245080cb259d82b34699f6cd4ec11bdb688bd"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3001e7aa43d6691db2a878b0745b854bf12ddd19"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/35fe0e0b5c00bef7dde74842a2564c43856fbce4"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/3d010c8031e39f5fa1e8b13ada77e0321091011f"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "affected": [
          {
            "defaultStatus": "unknown",
            "product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem",
            "vendor": "Siemens",
            "versions": [
              {
                "lessThan": "*",
                "status": "affected",
                "version": "0",
                "versionType": "custom"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-05-12T11:52:18.997Z",
          "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e",
          "shortName": "siemens-SADP"
        },
        "references": [
          {
            "url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html"
          }
        ],
        "x_adpType": "supplier"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/linux/udp.h",
            "net/ipv4/udp.c",
            "net/ipv4/udp_offload.c",
            "net/ipv6/udp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3391b157780bbedf8ef9f202cbf10ee90bf6b0f8",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            },
            {
              "lessThan": "d49ae15a5767d4e9ef8bbb79e42df1bfebc94670",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            },
            {
              "lessThan": "d12245080cb259d82b34699f6cd4ec11bdb688bd",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            },
            {
              "lessThan": "3001e7aa43d6691db2a878b0745b854bf12ddd19",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            },
            {
              "lessThan": "35fe0e0b5c00bef7dde74842a2564c43856fbce4",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            },
            {
              "lessThan": "3d010c8031e39f5fa1e8b13ada77e0321091011f",
              "status": "affected",
              "version": "9fd1ff5d2ac7181844735806b0a703c942365291",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/linux/udp.h",
            "net/ipv4/udp.c",
            "net/ipv4/udp_offload.c",
            "net/ipv6/udp.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "lessThan": "5.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.215",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.154",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.85",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.26",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.8.*",
              "status": "unaffected",
              "version": "6.8.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.9",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.215",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.154",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.85",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.26",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.5",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nudp: do not accept non-tunnel GSO skbs landing in a tunnel\n\nWhen rx-udp-gro-forwarding is enabled UDP packets might be GROed when\nbeing forwarded. If such packets might land in a tunnel this can cause\nvarious issues and udp_gro_receive makes sure this isn\u0027t the case by\nlooking for a matching socket. This is performed in\nudp4/6_gro_lookup_skb but only in the current netns. This is an issue\nwith tunneled packets when the endpoint is in another netns. In such\ncases the packets will be GROed at the UDP level, which leads to various\nissues later on. The same thing can happen with rx-gro-list.\n\nWe saw this with geneve packets being GROed at the UDP level. In such\ncase gso_size is set; later the packet goes through the geneve rx path,\nthe geneve header is pulled, the offset are adjusted and frag_list skbs\nare not adjusted with regard to geneve. When those skbs hit\nskb_fragment, it will misbehave. Different outcomes are possible\ndepending on what the GROed skbs look like; from corrupted packets to\nkernel crashes.\n\nOne example is a BUG_ON[1] triggered in skb_segment while processing the\nfrag_list. Because gso_size is wrong (geneve header was pulled)\nskb_segment thinks there is \"geneve header size\" of data in frag_list,\nalthough it\u0027s in fact the next packet. The BUG_ON itself has nothing to\ndo with the issue. This is only one of the potential issues.\n\nLooking up for a matching socket in udp_gro_receive is fragile: the\nlookup could be extended to all netns (not speaking about performances)\nbut nothing prevents those packets from being modified in between and we\ncould still not find a matching socket. It\u0027s OK to keep the current\nlogic there as it should cover most cases but we also need to make sure\nwe handle tunnel packets being GROed too early.\n\nThis is done by extending the checks in udp_unexpected_gso: GSO packets\nlacking the SKB_GSO_UDP_TUNNEL/_CSUM bits and landing in a tunnel must\nbe segmented.\n\n[1] kernel BUG at net/core/skbuff.c:4408!\n    RIP: 0010:skb_segment+0xd2a/0xf70\n    __udp_gso_segment+0xaa/0x560"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The bug is triggered entirely by UDP datagrams received from the network on the GRO/forwarding path (`udp4/6_gro_receive` \u2192 `udp_queue_rcv_skb` \u2192 geneve/vxlan `encap_rcv`), with no local access required. Any remote host able to send UDP to the tunnel port (geneve 6081, vxlan 4789) of a forwarding router reaches the vulnerable code.\nAC:L - The attacker fully controls the 4-tuple, packet sizes and burst rate needed to force GRO coalescing and to produce the length mismatch after the geneve header is pulled; there is no race or unknowable memory state involved. The enabling condition is either a documented ethtool setting deployed in overlay/container networking, or can be created outright by any unprivileged `UDP_GRO` socket, which requires no capability.\nPR:N - UDP tunnel protocols (geneve/vxlan/bareudp) perform no authentication, and `udp_gro_receive` runs before any socket-level filtering \u2014 the vulnerable path is entered with `sk == NULL` by design. No credentials of any kind are needed.\nUI:N - Packets are processed automatically in softirq/NAPI context on receipt; no action by any local user or administrator is required at attack time.\nS:U - Although the aggregation happens in one netns and the damage manifests in another, network namespaces share a single kernel security authority. This is a standard in-kernel memory/packet-handling defect with no hypervisor or IOMMU boundary crossed.\nC:H - With a stale `gso_size` and unadjusted `frag_list` skbs, `skb_segment()` builds segments from wrong offsets and sets `nskb-\u003edata_len = len - hsize` overstating the real payload, so bytes belonging to adjacent packets (and skb/page memory beyond the intended content) are emitted onto the wire. In a multi-tenant overlay this leaks one flow\u0027s decapsulated data into another\u0027s stream.\nI:H - The commit explicitly states outcomes range \"from corrupted packets to kernel crashes\" \u2014 the offset/length confusion lets attacker-influenced bytes be spliced into another packet\u0027s decapsulated payload, corrupting forwarded traffic. The same inconsistent skb length accounting is the classic primitive for skb-layer out-of-bounds writes.\nA:H - The reported outcome is `kernel BUG at net/core/skbuff.c:4408` in `skb_segment()` reached from `__udp_gso_segment()`, i.e. a BUG()/oops taken in softirq context leading to kernel panic. A remote unauthenticated attacker can retrigger it at will by resending crafted UDP bursts."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:30:40.216Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3391b157780bbedf8ef9f202cbf10ee90bf6b0f8"
        },
        {
          "url": "https://git.kernel.org/stable/c/d49ae15a5767d4e9ef8bbb79e42df1bfebc94670"
        },
        {
          "url": "https://git.kernel.org/stable/c/d12245080cb259d82b34699f6cd4ec11bdb688bd"
        },
        {
          "url": "https://git.kernel.org/stable/c/3001e7aa43d6691db2a878b0745b854bf12ddd19"
        },
        {
          "url": "https://git.kernel.org/stable/c/35fe0e0b5c00bef7dde74842a2564c43856fbce4"
        },
        {
          "url": "https://git.kernel.org/stable/c/3d010c8031e39f5fa1e8b13ada77e0321091011f"
        }
      ],
      "title": "udp: do not accept non-tunnel GSO skbs landing in a tunnel",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-35884",
    "datePublished": "2024-05-19T08:34:40.948Z",
    "dateReserved": "2024-05-17T13:50:33.112Z",
    "dateUpdated": "2026-08-05T11:30:40.216Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/3391b157780bbedf8ef9f202cbf10ee90bf6b0f8\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/d49ae15a5767d4e9ef8bbb79e42df1bfebc94670\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/d12245080cb259d82b34699f6cd4ec11bdb688bd\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/3001e7aa43d6691db2a878b0745b854bf12ddd19\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/35fe0e0b5c00bef7dde74842a2564c43856fbce4\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/3d010c8031e39f5fa1e8b13ada77e0321091011f\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T03:21:48.465Z\"}}, {\"affected\": [{\"vendor\": \"Siemens\", \"product\": \"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"*\", \"versionType\": \"custom\"}], \"defaultStatus\": \"unknown\"}], \"x_adpType\": \"supplier\", \"references\": [{\"url\": \"https://cert-portal.siemens.com/productcert/html/ssa-265688.html\"}], \"providerMetadata\": {\"orgId\": \"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e\", \"shortName\": \"siemens-SADP\", \"dateUpdated\": \"2026-05-12T11:52:18.997Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 8.8, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-35884\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-05-28T19:37:18.298363Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"description\": \"CWE-noinfo Not enough information\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-05-28T19:37:22.515Z\"}}], \"cna\": {\"title\": \"udp: do not accept non-tunnel GSO skbs landing in a tunnel\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 9.8, \"baseSeverity\": \"CRITICAL\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:N - The bug is triggered entirely by UDP datagrams received from the network on the GRO/forwarding path (`udp4/6_gro_receive` \\u2192 `udp_queue_rcv_skb` \\u2192 geneve/vxlan `encap_rcv`), with no local access required. Any remote host able to send UDP to the tunnel port (geneve 6081, vxlan 4789) of a forwarding router reaches the vulnerable code.\\nAC:L - The attacker fully controls the 4-tuple, packet sizes and burst rate needed to force GRO coalescing and to produce the length mismatch after the geneve header is pulled; there is no race or unknowable memory state involved. The enabling condition is either a documented ethtool setting deployed in overlay/container networking, or can be created outright by any unprivileged `UDP_GRO` socket, which requires no capability.\\nPR:N - UDP tunnel protocols (geneve/vxlan/bareudp) perform no authentication, and `udp_gro_receive` runs before any socket-level filtering \\u2014 the vulnerable path is entered with `sk == NULL` by design. No credentials of any kind are needed.\\nUI:N - Packets are processed automatically in softirq/NAPI context on receipt; no action by any local user or administrator is required at attack time.\\nS:U - Although the aggregation happens in one netns and the damage manifests in another, network namespaces share a single kernel security authority. This is a standard in-kernel memory/packet-handling defect with no hypervisor or IOMMU boundary crossed.\\nC:H - With a stale `gso_size` and unadjusted `frag_list` skbs, `skb_segment()` builds segments from wrong offsets and sets `nskb-\u003edata_len = len - hsize` overstating the real payload, so bytes belonging to adjacent packets (and skb/page memory beyond the intended content) are emitted onto the wire. In a multi-tenant overlay this leaks one flow\u0027s decapsulated data into another\u0027s stream.\\nI:H - The commit explicitly states outcomes range \\\"from corrupted packets to kernel crashes\\\" \\u2014 the offset/length confusion lets attacker-influenced bytes be spliced into another packet\u0027s decapsulated payload, corrupting forwarded traffic. The same inconsistent skb length accounting is the classic primitive for skb-layer out-of-bounds writes.\\nA:H - The reported outcome is `kernel BUG at net/core/skbuff.c:4408` in `skb_segment()` reached from `__udp_gso_segment()`, i.e. a BUG()/oops taken in softirq context leading to kernel panic. A remote unauthenticated attacker can retrigger it at will by resending crafted UDP bursts.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"3391b157780bbedf8ef9f202cbf10ee90bf6b0f8\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"d49ae15a5767d4e9ef8bbb79e42df1bfebc94670\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"d12245080cb259d82b34699f6cd4ec11bdb688bd\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"3001e7aa43d6691db2a878b0745b854bf12ddd19\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"35fe0e0b5c00bef7dde74842a2564c43856fbce4\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\", \"lessThan\": \"3d010c8031e39f5fa1e8b13ada77e0321091011f\", \"versionType\": \"git\"}], \"programFiles\": [\"include/linux/udp.h\", \"net/ipv4/udp.c\", \"net/ipv4/udp_offload.c\", \"net/ipv6/udp.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.6\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.6\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.10.215\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"5.15.154\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.15.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.85\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.26\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8.5\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"include/linux/udp.h\", \"net/ipv4/udp.c\", \"net/ipv4/udp_offload.c\", \"net/ipv6/udp.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/3391b157780bbedf8ef9f202cbf10ee90bf6b0f8\"}, {\"url\": \"https://git.kernel.org/stable/c/d49ae15a5767d4e9ef8bbb79e42df1bfebc94670\"}, {\"url\": \"https://git.kernel.org/stable/c/d12245080cb259d82b34699f6cd4ec11bdb688bd\"}, {\"url\": \"https://git.kernel.org/stable/c/3001e7aa43d6691db2a878b0745b854bf12ddd19\"}, {\"url\": \"https://git.kernel.org/stable/c/35fe0e0b5c00bef7dde74842a2564c43856fbce4\"}, {\"url\": \"https://git.kernel.org/stable/c/3d010c8031e39f5fa1e8b13ada77e0321091011f\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nudp: do not accept non-tunnel GSO skbs landing in a tunnel\\n\\nWhen rx-udp-gro-forwarding is enabled UDP packets might be GROed when\\nbeing forwarded. If such packets might land in a tunnel this can cause\\nvarious issues and udp_gro_receive makes sure this isn\u0027t the case by\\nlooking for a matching socket. This is performed in\\nudp4/6_gro_lookup_skb but only in the current netns. This is an issue\\nwith tunneled packets when the endpoint is in another netns. In such\\ncases the packets will be GROed at the UDP level, which leads to various\\nissues later on. The same thing can happen with rx-gro-list.\\n\\nWe saw this with geneve packets being GROed at the UDP level. In such\\ncase gso_size is set; later the packet goes through the geneve rx path,\\nthe geneve header is pulled, the offset are adjusted and frag_list skbs\\nare not adjusted with regard to geneve. When those skbs hit\\nskb_fragment, it will misbehave. Different outcomes are possible\\ndepending on what the GROed skbs look like; from corrupted packets to\\nkernel crashes.\\n\\nOne example is a BUG_ON[1] triggered in skb_segment while processing the\\nfrag_list. Because gso_size is wrong (geneve header was pulled)\\nskb_segment thinks there is \\\"geneve header size\\\" of data in frag_list,\\nalthough it\u0027s in fact the next packet. The BUG_ON itself has nothing to\\ndo with the issue. This is only one of the potential issues.\\n\\nLooking up for a matching socket in udp_gro_receive is fragile: the\\nlookup could be extended to all netns (not speaking about performances)\\nbut nothing prevents those packets from being modified in between and we\\ncould still not find a matching socket. It\u0027s OK to keep the current\\nlogic there as it should cover most cases but we also need to make sure\\nwe handle tunnel packets being GROed too early.\\n\\nThis is done by extending the checks in udp_unexpected_gso: GSO packets\\nlacking the SKB_GSO_UDP_TUNNEL/_CSUM bits and landing in a tunnel must\\nbe segmented.\\n\\n[1] kernel BUG at net/core/skbuff.c:4408!\\n    RIP: 0010:skb_segment+0xd2a/0xf70\\n    __udp_gso_segment+0xaa/0x560\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.10.215\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.15.154\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.85\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.26\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8.5\", \"versionStartIncluding\": \"5.6\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9\", \"versionStartIncluding\": \"5.6\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:30:40.216Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-35884\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:30:40.216Z\", \"dateReserved\": \"2024-05-17T13:50:33.112Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-19T08:34:40.948Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…