{"id":"CVE-2026-72351","state":"PUBLISHED","title":"gue: validate REMCSUM private option length","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ngue: validate REMCSUM private option length\n\nGUE private flags can indicate that remote checksum offload metadata is\npresent. The private flags field itself is accounted for by\nguehdr_flags_len(), but guehdr_priv_flags_len() currently returns 0 even\nwhen GUE_PFLAG_REMCSUM is set.\n\nThis lets a packet with only the private flags field pass\nvalidate_gue_flags(), after which gue_remcsum() and gue_gro_remcsum()\nread the missing REMCSUM start/offset fields from the following bytes.\n\nAccount for GUE_PLEN_REMCSUM when GUE_PFLAG_REMCSUM is present so that\nmalformed packets are rejected during option validation.","publishedAt":"2026-08-15T05:55:54.150Z","updatedAt":"2026-10-16T18:55:19.979Z","severity":{"score":9.8,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"158b9995d3c87f3b93f5c22df54a12e12a3438b3","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"7c6876ec1b227261b51803f784c7be1b2242a1a0","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"2c4de9988e9ddc760b750d6b6e701c35ff60ad14","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"2a99224c120823987e4d829726f4ecb33e03fc1e","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"61e78679c7c9ca685bff58e4b6348304dc60aafd","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"4a4a1d41c6e901e773bcf795f562a47fa71f692a","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"f618cbe9b24cd0202004d2db781d5f80ab77037f","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"d335dcc6f521571d57117b8deeebc940836e5450","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/gue.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.19","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/gue.h"]}],"references":["https://git.kernel.org/stable/c/158b9995d3c87f3b93f5c22df54a12e12a3438b3","https://git.kernel.org/stable/c/7c6876ec1b227261b51803f784c7be1b2242a1a0","https://git.kernel.org/stable/c/2c4de9988e9ddc760b750d6b6e701c35ff60ad14","https://git.kernel.org/stable/c/2a99224c120823987e4d829726f4ecb33e03fc1e","https://git.kernel.org/stable/c/61e78679c7c9ca685bff58e4b6348304dc60aafd","https://git.kernel.org/stable/c/4a4a1d41c6e901e773bcf795f562a47fa71f692a","https://git.kernel.org/stable/c/f618cbe9b24cd0202004d2db781d5f80ab77037f","https://git.kernel.org/stable/c/d335dcc6f521571d57117b8deeebc940836e5450"],"weaknesses":[],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/72xxx/CVE-2026-72351.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-72351","state":"PUBLISHED","datePublished":"2026-08-15T05:55:54.150Z","dateUpdated":"2026-10-16T18:55:19.979Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-09T03:40:39.921Z"},"containers":{"cna":{"title":"gue: validate REMCSUM private option length","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ngue: validate REMCSUM private option length\n\nGUE private flags can indicate that remote checksum offload metadata is\npresent. The private flags field itself is accounted for by\nguehdr_flags_len(), but guehdr_priv_flags_len() currently returns 0 even\nwhen GUE_PFLAG_REMCSUM is set.\n\nThis lets a packet with only the private flags field pass\nvalidate_gue_flags(), after which gue_remcsum() and gue_gro_remcsum()\nread the missing REMCSUM start/offset fields from the following bytes.\n\nAccount for GUE_PLEN_REMCSUM when GUE_PFLAG_REMCSUM is present so that\nmalformed packets are rejected during option validation."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"158b9995d3c87f3b93f5c22df54a12e12a3438b3","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"7c6876ec1b227261b51803f784c7be1b2242a1a0","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"2c4de9988e9ddc760b750d6b6e701c35ff60ad14","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"2a99224c120823987e4d829726f4ecb33e03fc1e","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"61e78679c7c9ca685bff58e4b6348304dc60aafd","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"4a4a1d41c6e901e773bcf795f562a47fa71f692a","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"f618cbe9b24cd0202004d2db781d5f80ab77037f","versionType":"git"},{"version":"c1aa8347e73e4092411fbd96cc59531fb7e76d04","status":"affected","lessThan":"d335dcc6f521571d57117b8deeebc940836e5450","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/gue.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.19","versionType":"semver"},{"version":"5.10.261","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.212","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.178","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/gue.h"]}],"references":[{"url":"https://git.kernel.org/stable/c/158b9995d3c87f3b93f5c22df54a12e12a3438b3"},{"url":"https://git.kernel.org/stable/c/7c6876ec1b227261b51803f784c7be1b2242a1a0"},{"url":"https://git.kernel.org/stable/c/2c4de9988e9ddc760b750d6b6e701c35ff60ad14"},{"url":"https://git.kernel.org/stable/c/2a99224c120823987e4d829726f4ecb33e03fc1e"},{"url":"https://git.kernel.org/stable/c/61e78679c7c9ca685bff58e4b6348304dc60aafd"},{"url":"https://git.kernel.org/stable/c/4a4a1d41c6e901e773bcf795f562a47fa71f692a"},{"url":"https://git.kernel.org/stable/c/f618cbe9b24cd0202004d2db781d5f80ab77037f"},{"url":"https://git.kernel.org/stable/c/d335dcc6f521571d57117b8deeebc940836e5450"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - Malformed GUE-over-UDP packets reach gue_udp_recv() and gue_gro_receive() through the normal IP/UDP receive path on hosts with FOU/GUE listeners, including internet-facing cloud overlay endpoints.\nAC:L - An attacker fully controls the crafted packet and can set GUE_PFLAG_REMCSUM with only the private-flags option present, reliably triggering gue_remcsum()/gue_gro_remcsum() without races or special timing.\nPR:N - Exploitation requires only sending UDP to a GUE listener port; no target credentials or local privileges are needed by the remote attacker even though tunnel setup itself requires admin configuration.\nUI:N - No victim interaction is required beyond the host already receiving GUE tunnel traffic as part of normal overlay networking operation.\nS:U - The flaw corrupts kernel packet buffers during GUE receive processing on the target host and does not inherently cross VM, container, or IOMMU security boundaries.\nC:H - Missing REMCSUM length validation lets attacker-controlled start/offset drive remcsum_adjust()/csum_partial() to read beyond the declared GUE options into adjacent skb bytes, enabling memory disclosure primitives.\nI:H - remcsum_adjust() performs an out-of-bounds 2-byte write at ptr+offset, and the default partial-checksum path stores attacker-controlled csum_start/csum_offset metadata that can corrupt subsequent checksum offload handling.\nA:H - Out-of-bounds REMCSUM processing can trigger kernel oops or panic from invalid memory access or corrupted packet state, causing denial of service on overlay endpoints under repeated attack."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-17T05:43:08.849Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"5.10.261"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"5.15.212"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.1.178"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.19","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-72351","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T18:47:48.615145Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-16T18:55:19.979Z"}}]}}}