{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-37921", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2025-04-16T04:51:23.968Z", "datePublished": "2025-05-20T15:21:50.410Z", "dateUpdated": "2026-08-05T11:58:22.938Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:58:22.938Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nvxlan: vnifilter: Fix unlocked deletion of default FDB entry\n\nWhen a VNI is deleted from a VXLAN device in 'vnifilter' mode, the FDB\nentry associated with the default remote (assuming one was configured)\nis deleted without holding the hash lock. This is wrong and will result\nin a warning [1] being generated by the lockdep annotation that was\nadded by commit ebe642067455 (\"vxlan: Create wrappers for FDB lookup\").\n\nReproducer:\n\n # ip link add vx0 up type vxlan dstport 4789 external vnifilter local 192.0.2.1\n # bridge vni add vni 10010 remote 198.51.100.1 dev vx0\n # bridge vni del vni 10010 dev vx0\n\nFix by acquiring the hash lock before the deletion and releasing it\nafterwards. Blame the original commit that introduced the issue rather\nthan the one that exposed it.\n\n[1]\nWARNING: CPU: 3 PID: 392 at drivers/net/vxlan/vxlan_core.c:417 vxlan_find_mac+0x17f/0x1a0\n[...]\nRIP: 0010:vxlan_find_mac+0x17f/0x1a0\n[...]\nCall Trace:\n \n __vxlan_fdb_delete+0xbe/0x560\n vxlan_vni_delete_group+0x2ba/0x940\n vxlan_vni_del.isra.0+0x15f/0x580\n vxlan_process_vni_filter+0x38b/0x7b0\n vxlan_vnifilter_process+0x3bb/0x510\n rtnetlink_rcv_msg+0x2f7/0xb70\n netlink_rcv_skb+0x131/0x360\n netlink_unicast+0x426/0x710\n netlink_sendmsg+0x75a/0xc20\n __sock_sendmsg+0xc1/0x150\n ____sys_sendmsg+0x5aa/0x7b0\n ___sys_sendmsg+0xfc/0x180\n __sys_sendmsg+0x121/0x1b0\n do_syscall_64+0xbb/0x1d0\n entry_SYSCALL_64_after_hwframe+0x4b/0x53" } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The trigger is an RTM_DELTUNNEL rtnetlink message on the PF_BRIDGE family (`bridge vni del`), which requires a local socket; the racing FDB writes come from the packet path but the vulnerable unlocked deletion itself is only reachable locally.\nAC:L - The attacker owns both sides of the race — looping `bridge vni add/del` on one CPU while feeding VXLAN frames with chosen inner source MACs (spraying all 256 buckets) to drive `vxlan_snoop()` inserts into the same bucket — and it can be retried indefinitely; the lockdep WARN itself reproduces deterministically in three commands.\nPR:L - Only CAP_NET_ADMIN in the netns's user namespace is needed, checked via `netlink_net_capable()`, so an unprivileged user gets it with `unshare -Urn` and can create the vxlan vnifilter device and delete VNIs entirely within their own namespace.\nUI:N - The attacker performs every step — device creation, VNI add/delete, and packet injection — with no action by any other user or administrator.\nS:U - The corruption stays within the kernel's own security authority; this is standard in-kernel memory corruption / privilege escalation with no VM, IOMMU, or hypervisor boundary crossed.\nC:H - The lost-update on the hash bucket leaves a `call_rcu`-freed `vxlan_fdb` linked in the table, so subsequent lookups read freed memory and `vxlan_fdb_notify()` copies that reclaimed object's contents out to netlink listeners, yielding attacker-observable kernel heap disclosure.\nI:H - The use-after-free is writable — `vxlan_snoop()` stores jiffies into `f->updated` and a 16-byte peer-controlled `union vxlan_addr` into `rdst->remote_ip` inside the reclaimed object, and corrupted `pprev` pointers produce stray writes into reallocated slab memory, giving a heap-spray-based write primitive.\nA:H - The immediate observed effect is a kernel WARNING from `lockdep_assert_held_once()` (fatal under panic_on_warn), and the underlying list corruption and use-after-free reliably lead to oopses and panics on the VXLAN datapath." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/vxlan/vxlan_vnifilter.c" ], "versions": [ { "version": "f9c4bb0b245cee35ef66f75bf409c9573d934cf9", "lessThan": "2d4a121296aa3940d2df9906f955c2b6b4e38bc3", "status": "affected", "versionType": "git" }, { "version": "f9c4bb0b245cee35ef66f75bf409c9573d934cf9", "lessThan": "3576e9a80b6c4381b01ce0cbaa07f5e92d4492ed", "status": "affected", "versionType": "git" }, { "version": "f9c4bb0b245cee35ef66f75bf409c9573d934cf9", "lessThan": "5cb9e07f84e527974b12e82e2549fa6c0cc6eef0", "status": "affected", "versionType": "git" }, { "version": "f9c4bb0b245cee35ef66f75bf409c9573d934cf9", "lessThan": "470206205588559e60035fceb5f256640cb45f99", "status": "affected", "versionType": "git" }, { "version": "f9c4bb0b245cee35ef66f75bf409c9573d934cf9", "lessThan": "087a9eb9e5978e3ba362e1163691e41097e8ca20", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/vxlan/vxlan_vnifilter.c" ], "versions": [ { "version": "5.18", "status": "affected" }, { "version": "0", "lessThan": "5.18", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.138", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.90", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.28", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.14.6", "lessThanOrEqual": "6.14.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.15", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.18", "versionEndExcluding": "6.1.138" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.18", "versionEndExcluding": "6.6.90" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.18", "versionEndExcluding": "6.12.28" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.18", "versionEndExcluding": "6.14.6" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.18", "versionEndExcluding": "6.15" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/2d4a121296aa3940d2df9906f955c2b6b4e38bc3" }, { "url": "https://git.kernel.org/stable/c/3576e9a80b6c4381b01ce0cbaa07f5e92d4492ed" }, { "url": "https://git.kernel.org/stable/c/5cb9e07f84e527974b12e82e2549fa6c0cc6eef0" }, { "url": "https://git.kernel.org/stable/c/470206205588559e60035fceb5f256640cb45f99" }, { "url": "https://git.kernel.org/stable/c/087a9eb9e5978e3ba362e1163691e41097e8ca20" } ], "title": "vxlan: vnifilter: Fix unlocked deletion of default FDB entry", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/08/msg00010.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T19:57:20.614Z" } } ] } }