{"id":"CVE-2026-97965","state":"PUBLISHED","title":"vxlan: initialize _md in vxlan_xmit_one()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nvxlan: initialize _md in vxlan_xmit_one()\n\nIf a VXLAN device is configured with both VXLAN_F_COLLECT_METADATA and\nVXLAN_F_GBP, and a packet is transmitted through it using an external\nip_tunnel_info that lacks the IP_TUNNEL_VXLAN_OPT_BIT flag, md is left\npointing to the uninitialized _md stack variable:\n\n                if (test_bit(IP_TUNNEL_VXLAN_OPT_BIT, info->key.tun_flags)) {\n                        if (info->options_len < sizeof(*md))\n                                goto drop;\n                        md = ip_tunnel_info_opts(info);\n                }\n\nBecause IP_TUNNEL_VXLAN_OPT_BIT is not set, md is not updated and remains\npointing to _md. Later, vxlan_build_skb() is called with md, which\neventually calls vxlan_build_gbp_hdr():\n\n        if (vxflags & VXLAN_F_GBP)\n                vxlan_build_gbp_hdr(vxh, md);\n\nInside vxlan_build_gbp_hdr(), md->gbp is read:\n\n        if (!md->gbp)\n                return;\n        gbp = (struct vxlanhdr_gbp *)vxh;\n        ...\n        if (md->gbp & VXLAN_GBP_DONT_LEARN)\n                gbp->dont_learn = 1;\n\nIf the stack contains garbage, this causes:\n1) VXLAN_HF_GBP flag to be spuriously set in the VXLAN header.\n2) gbp->dont_learn and gbp->policy_applied to be set from stack bits.\n3) gbp->policy_id to receive 16 bits of uninitialized kernel stack data,\n   leaking it onto the wire.\n\nFix this by zero-initializing _md. If IP_TUNNEL_VXLAN_OPT_BIT is not\npresent, md->gbp remains 0, and vxlan_build_gbp_hdr() returns early\nwithout modifying the VXLAN header.","publishedAt":"2026-09-25T10:23:07.952Z","updatedAt":"2026-10-21T12:53:54.233Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"fb78beb64e0e79557e4cd7cd17fea744bb6f01d9","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"0d13b5a413bffc8718b3821b78537ccc6596c233","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"bfb74c48ac2d31476d5e09cf9658844508d2608a","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"081f22177d9d12b1e381b787f203cd5f47508187","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"be83178bfc44588f6e3adb827ed874c683193466","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/vxlan/vxlan_core.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.3","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.111","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.53","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.7","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/vxlan/vxlan_core.c"]}],"references":["https://git.kernel.org/stable/c/fb78beb64e0e79557e4cd7cd17fea744bb6f01d9","https://git.kernel.org/stable/c/0d13b5a413bffc8718b3821b78537ccc6596c233","https://git.kernel.org/stable/c/bfb74c48ac2d31476d5e09cf9658844508d2608a","https://git.kernel.org/stable/c/081f22177d9d12b1e381b787f203cd5f47508187","https://git.kernel.org/stable/c/be83178bfc44588f6e3adb827ed874c683193466"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:43.249Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/97xxx/CVE-2026-97965.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-97965","state":"PUBLISHED","datePublished":"2026-09-25T10:23:07.952Z","dateUpdated":"2026-10-21T12:53:54.233Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:18:58.206Z"},"containers":{"cna":{"title":"vxlan: initialize _md in vxlan_xmit_one()","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nvxlan: initialize _md in vxlan_xmit_one()\n\nIf a VXLAN device is configured with both VXLAN_F_COLLECT_METADATA and\nVXLAN_F_GBP, and a packet is transmitted through it using an external\nip_tunnel_info that lacks the IP_TUNNEL_VXLAN_OPT_BIT flag, md is left\npointing to the uninitialized _md stack variable:\n\n                if (test_bit(IP_TUNNEL_VXLAN_OPT_BIT, info->key.tun_flags)) {\n                        if (info->options_len < sizeof(*md))\n                                goto drop;\n                        md = ip_tunnel_info_opts(info);\n                }\n\nBecause IP_TUNNEL_VXLAN_OPT_BIT is not set, md is not updated and remains\npointing to _md. Later, vxlan_build_skb() is called with md, which\neventually calls vxlan_build_gbp_hdr():\n\n        if (vxflags & VXLAN_F_GBP)\n                vxlan_build_gbp_hdr(vxh, md);\n\nInside vxlan_build_gbp_hdr(), md->gbp is read:\n\n        if (!md->gbp)\n                return;\n        gbp = (struct vxlanhdr_gbp *)vxh;\n        ...\n        if (md->gbp & VXLAN_GBP_DONT_LEARN)\n                gbp->dont_learn = 1;\n\nIf the stack contains garbage, this causes:\n1) VXLAN_HF_GBP flag to be spuriously set in the VXLAN header.\n2) gbp->dont_learn and gbp->policy_applied to be set from stack bits.\n3) gbp->policy_id to receive 16 bits of uninitialized kernel stack data,\n   leaking it onto the wire.\n\nFix this by zero-initializing _md. If IP_TUNNEL_VXLAN_OPT_BIT is not\npresent, md->gbp remains 0, and vxlan_build_gbp_hdr() returns early\nwithout modifying the VXLAN header."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"fb78beb64e0e79557e4cd7cd17fea744bb6f01d9","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"0d13b5a413bffc8718b3821b78537ccc6596c233","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"bfb74c48ac2d31476d5e09cf9658844508d2608a","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"081f22177d9d12b1e381b787f203cd5f47508187","versionType":"git"},{"version":"ee122c79d4227f6ec642157834b6a90fcffa4382","status":"affected","lessThan":"be83178bfc44588f6e3adb827ed874c683193466","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/vxlan/vxlan_core.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.3","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.3","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.111","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.53","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.7","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/vxlan/vxlan_core.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/fb78beb64e0e79557e4cd7cd17fea744bb6f01d9"},{"url":"https://git.kernel.org/stable/c/0d13b5a413bffc8718b3821b78537ccc6596c233"},{"url":"https://git.kernel.org/stable/c/bfb74c48ac2d31476d5e09cf9658844508d2608a"},{"url":"https://git.kernel.org/stable/c/081f22177d9d12b1e381b787f203cd5f47508187"},{"url":"https://git.kernel.org/stable/c/be83178bfc44588f6e3adb827ed874c683193466"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-21T12:53:54.233Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"6.6.160"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"6.12.111"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"6.18.53"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"7.2.7"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}