{"id":"CVE-2024-35884","revision":null,"records":[{"revision":"184f5f90cd254e9bb7bc7e29e6185d24","observedAt":"2026-10-23T15:48:27.903+00:00","statement":{"source":"cve-program","id":"CVE-2024-35884","aliases":[],"title":"udp: do not accept non-tunnel GSO skbs landing in a tunnel","description":"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't 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's 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's 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","state":0,"publishedAt":"2024-05-19T08:34:40.948+00:00","modifiedAt":"2026-10-15T00:41:07.436+00:00","affected":[{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"unaffected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"include/linux/udp.h\",\n                        \"net/ipv4/udp.c\",\n                        \"net/ipv4/udp_offload.c\",\n                        \"net/ipv6/udp.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"3391b157780bbedf8ef9f202cbf10ee90bf6b0f8\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"d49ae15a5767d4e9ef8bbb79e42df1bfebc94670\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"d12245080cb259d82b34699f6cd4ec11bdb688bd\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"3001e7aa43d6691db2a878b0745b854bf12ddd19\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"35fe0e0b5c00bef7dde74842a2564c43856fbce4\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        },\n                        {\n                            \"version\": \"9fd1ff5d2ac7181844735806b0a703c942365291\",\n                            \"lessThan\": \"3d010c8031e39f5fa1e8b13ada77e0321091011f\",\n                            \"status\": \"affected\",\n                            \"versionType\": \"git\"\n                        }\n                    ]\n                }"},{"ecosystem":"Vendor product","name":"Linux","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"product\": \"Linux\",\n                    \"vendor\": \"Linux\",\n                    \"defaultStatus\": \"affected\",\n                    \"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\n                    \"programFiles\": [\n                        \"include/linux/udp.h\",\n                        \"net/ipv4/udp.c\",\n                        \"net/ipv4/udp_offload.c\",\n                        \"net/ipv6/udp.c\"\n                    ],\n                    \"versions\": [\n                        {\n                            \"version\": \"5.6\",\n                            \"status\": \"affected\"\n                        },\n                        {\n                            \"version\": \"0\",\n                            \"lessThan\": \"5.6\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.10.215\",\n                            \"lessThanOrEqual\": \"5.10.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"5.15.154\",\n                            \"lessThanOrEqual\": \"5.15.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.1.85\",\n                            \"lessThanOrEqual\": \"6.1.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.6.26\",\n                            \"lessThanOrEqual\": \"6.6.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.8.5\",\n                            \"lessThanOrEqual\": \"6.8.*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"semver\"\n                        },\n                        {\n                            \"version\": \"6.9\",\n                            \"lessThanOrEqual\": \"*\",\n                            \"status\": \"unaffected\",\n                            \"versionType\": \"original_commit_for_fix\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","score":9.8,"severity":"CRITICAL"}],"references":["https://git.kernel.org/stable/c/3391b157780bbedf8ef9f202cbf10ee90bf6b0f8","https://git.kernel.org/stable/c/d49ae15a5767d4e9ef8bbb79e42df1bfebc94670","https://git.kernel.org/stable/c/d12245080cb259d82b34699f6cd4ec11bdb688bd","https://git.kernel.org/stable/c/3001e7aa43d6691db2a878b0745b854bf12ddd19","https://git.kernel.org/stable/c/35fe0e0b5c00bef7dde74842a2564c43856fbce4","https://git.kernel.org/stable/c/3d010c8031e39f5fa1e8b13ada77e0321091011f"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2024-35884","license":"CVE Program Terms of Use","key":"cve-program:CVE-2024-35884","identifiers":["CVE-2024-35884"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-11-09T21:04:24.7578035+00:00","complete":true,"records":1773,"lastAttemptAt":"2026-11-09T21:04:24.7578035+00:00","lastSuccessAt":"2026-11-09T21:04:24.9268553+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:24.9268558+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-24e6fde7b744113daefb8f6135035fb8a5c69c9617c9c0d40574a0376532ffd3-053f9ef31f64a58e1cca81479dcc447749281d31bad8cf441e11bc47a86a0a95","complete":true,"records":421662,"lastAttemptAt":"2026-11-09T21:02:16.6599285+00:00","lastSuccessAt":"2026-11-09T21:02:16.5514646+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:02:16.6599285+00:00","snapshotPublishedAt":"2026-11-09T20:28:50+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-c0d08c6d568c485b97f7477173a8f37a","complete":false,"records":13661,"lastAttemptAt":"2026-11-09T21:17:08.552025+00:00","lastSuccessAt":"2026-11-09T21:17:08.543+00:00","error":"19 identifier lookups failed; latest failures include HTTP 403. Other identifiers were checked independently.","lastVerifiedAt":"2026-11-09T21:17:08.543+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13205,"expectedIdentifiers":13714,"failedIdentifiers":19},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-11-09T21:04:24.7578035+00:00","complete":true,"records":1096,"lastAttemptAt":"2026-11-09T21:04:24.7578035+00:00","lastSuccessAt":"2026-11-09T21:04:28.0976125+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:28.0976126+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-0bbee8bbb4ab420e9cc5a178c14c3d7c","complete":false,"records":13673,"lastAttemptAt":"2026-11-09T21:04:53.6647083+00:00","lastSuccessAt":"2026-11-09T21:04:53.656+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:53.656+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13704,"expectedIdentifiers":13714,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-f3867a42f9521b26d30bf45a82113d9245ec430c8ce8e24ac384524aacc94234","complete":true,"records":9916,"lastAttemptAt":"2026-11-09T21:04:24.6555906+00:00","lastSuccessAt":"2026-11-09T21:04:24.2243141+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:24.6555906+00:00","snapshotPublishedAt":"2026-11-09T21:03:14+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-26503967ae4379db8f374089589d6e03fb15bd31f820c9e992aaf93840c2236c","complete":true,"records":1971,"lastAttemptAt":"2026-11-09T21:02:20.5882227+00:00","lastSuccessAt":"2026-11-09T21:02:20.472473+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:02:20.5882227+00:00","snapshotPublishedAt":"2026-11-09T20:18:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-761ecc9061239b0da572dc9254c6f384c1d19339eb08408c436647a2f26129e9","complete":true,"records":3064,"lastAttemptAt":"2026-11-09T21:04:24.720759+00:00","lastSuccessAt":"2026-11-09T17:05:03.4044794+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:24.720759+00:00","snapshotPublishedAt":"2026-11-09T16:33:20+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-2e8b7295933e7bde85a0f6f5814c210f0d64871f05755388951863da683dd321","complete":true,"records":231324,"lastAttemptAt":"2026-11-09T21:04:14.5816688+00:00","lastSuccessAt":"2026-11-09T21:04:13.103121+00:00","error":null,"lastVerifiedAt":"2026-11-09T21:04:14.5816688+00:00","snapshotPublishedAt":"2026-11-09T20:48:07+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}