{"id":"CVE-2023-54243","state":"PUBLISHED","title":"netfilter: ebtables: fix table blob use-after-free","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: ebtables: fix table blob use-after-free\n\nWe are not allowed to return an error at this point.\nLooking at the code it looks like ret is always 0 at this\npoint, but its not.\n\nt = find_table_lock(net, repl->name, &ret, &ebt_mutex);\n\n... this can return a valid table, with ret != 0.\n\nThis bug causes update of table->private with the new\nblob, but then frees the blob right away in the caller.\n\nSyzbot report:\n\nBUG: KASAN: vmalloc-out-of-bounds in __ebt_unregister_table+0xc00/0xcd0 net/bridge/netfilter/ebtables.c:1168\nRead of size 4 at addr ffffc90005425000 by task kworker/u4:4/74\nWorkqueue: netns cleanup_net\nCall Trace:\n kasan_report+0xbf/0x1f0 mm/kasan/report.c:517\n __ebt_unregister_table+0xc00/0xcd0 net/bridge/netfilter/ebtables.c:1168\n ebt_unregister_table+0x35/0x40 net/bridge/netfilter/ebtables.c:1372\n ops_exit_list+0xb0/0x170 net/core/net_namespace.c:169\n cleanup_net+0x4ee/0xb10 net/core/net_namespace.c:613\n...\n\nip(6)tables appears to be ok (ret should be 0 at this point) but make\nthis more obvious.","publishedAt":"2025-12-30T12:11:31.180Z","updatedAt":"2026-10-15T21:41:43.012Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/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":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"9060abce3305ab2354c892c09d5689df51486df5","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"dbb3cbbf03b3c52cb390fabec357f1e4638004f5","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"3dd6ac973351308d4117eda32298a9f1d68764fd","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"cda0e0243bd3c04008fcd37a46b0269fb3c49249","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"e58a171d35e32e6e8c37cfe0e8a94406732a331f","versionType":"git"},{"version":"a3bc0f8ea439762aa62d40a295157410498cbea7","status":"affected","versionType":"git"},{"version":"8ed40c122919cd79bc3c059e5864e5e7d9d455f0","status":"affected","versionType":"git"},{"version":"c5e4ef499cfc78de45a4f01b8c557b5964d77c53","status":"affected","versionType":"git"},{"version":"f34728610b2a8c7b9864f9404f2884c17f6fca5c","status":"affected","versionType":"git"},{"version":"8b5740915a9faa8b1fa9166193a33e2a9ae30ec6","status":"affected","versionType":"git"},{"version":"3.2.60","status":"affected","lessThan":"3.3","versionType":"semver"},{"version":"3.4.91","status":"affected","lessThan":"3.5","versionType":"semver"},{"version":"3.10.41","status":"affected","lessThan":"3.11","versionType":"semver"},{"version":"3.12.21","status":"affected","lessThan":"3.13","versionType":"semver"},{"version":"3.14.5","status":"affected","lessThan":"3.15","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bridge/netfilter/ebtables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.15","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.15","versionType":"semver"},{"version":"5.10.173","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.100","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.18","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2.5","status":"unaffected","lessThanOrEqual":"6.2.*","versionType":"semver"},{"version":"6.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bridge/netfilter/ebtables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]}],"references":["https://git.kernel.org/stable/c/9060abce3305ab2354c892c09d5689df51486df5","https://git.kernel.org/stable/c/dbb3cbbf03b3c52cb390fabec357f1e4638004f5","https://git.kernel.org/stable/c/3dd6ac973351308d4117eda32298a9f1d68764fd","https://git.kernel.org/stable/c/cda0e0243bd3c04008fcd37a46b0269fb3c49249","https://git.kernel.org/stable/c/e58a171d35e32e6e8c37cfe0e8a94406732a331f"],"weaknesses":[],"ingestedAt":"2026-10-29T20:06:42.242Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2023/54xxx/CVE-2023-54243.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2023-54243","state":"PUBLISHED","datePublished":"2025-12-30T12:11:31.180Z","dateUpdated":"2026-10-15T21:41:43.012Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2025-12-30T12:06:44.510Z"},"containers":{"cna":{"title":"netfilter: ebtables: fix table blob use-after-free","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: ebtables: fix table blob use-after-free\n\nWe are not allowed to return an error at this point.\nLooking at the code it looks like ret is always 0 at this\npoint, but its not.\n\nt = find_table_lock(net, repl->name, &ret, &ebt_mutex);\n\n... this can return a valid table, with ret != 0.\n\nThis bug causes update of table->private with the new\nblob, but then frees the blob right away in the caller.\n\nSyzbot report:\n\nBUG: KASAN: vmalloc-out-of-bounds in __ebt_unregister_table+0xc00/0xcd0 net/bridge/netfilter/ebtables.c:1168\nRead of size 4 at addr ffffc90005425000 by task kworker/u4:4/74\nWorkqueue: netns cleanup_net\nCall Trace:\n kasan_report+0xbf/0x1f0 mm/kasan/report.c:517\n __ebt_unregister_table+0xc00/0xcd0 net/bridge/netfilter/ebtables.c:1168\n ebt_unregister_table+0x35/0x40 net/bridge/netfilter/ebtables.c:1372\n ops_exit_list+0xb0/0x170 net/core/net_namespace.c:169\n cleanup_net+0x4ee/0xb10 net/core/net_namespace.c:613\n...\n\nip(6)tables appears to be ok (ret should be 0 at this point) but make\nthis more obvious."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"9060abce3305ab2354c892c09d5689df51486df5","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"dbb3cbbf03b3c52cb390fabec357f1e4638004f5","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"3dd6ac973351308d4117eda32298a9f1d68764fd","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"cda0e0243bd3c04008fcd37a46b0269fb3c49249","versionType":"git"},{"version":"c58dd2dd443c26d856a168db108a0cd11c285bf3","status":"affected","lessThan":"e58a171d35e32e6e8c37cfe0e8a94406732a331f","versionType":"git"},{"version":"a3bc0f8ea439762aa62d40a295157410498cbea7","status":"affected","versionType":"git"},{"version":"8ed40c122919cd79bc3c059e5864e5e7d9d455f0","status":"affected","versionType":"git"},{"version":"c5e4ef499cfc78de45a4f01b8c557b5964d77c53","status":"affected","versionType":"git"},{"version":"f34728610b2a8c7b9864f9404f2884c17f6fca5c","status":"affected","versionType":"git"},{"version":"8b5740915a9faa8b1fa9166193a33e2a9ae30ec6","status":"affected","versionType":"git"},{"version":"3.2.60","status":"affected","lessThan":"3.3","versionType":"semver"},{"version":"3.4.91","status":"affected","lessThan":"3.5","versionType":"semver"},{"version":"3.10.41","status":"affected","lessThan":"3.11","versionType":"semver"},{"version":"3.12.21","status":"affected","lessThan":"3.13","versionType":"semver"},{"version":"3.14.5","status":"affected","lessThan":"3.15","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bridge/netfilter/ebtables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.15","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.15","versionType":"semver"},{"version":"5.10.173","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.100","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.18","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.2.5","status":"unaffected","lessThanOrEqual":"6.2.*","versionType":"semver"},{"version":"6.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/bridge/netfilter/ebtables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/9060abce3305ab2354c892c09d5689df51486df5"},{"url":"https://git.kernel.org/stable/c/dbb3cbbf03b3c52cb390fabec357f1e4638004f5"},{"url":"https://git.kernel.org/stable/c/3dd6ac973351308d4117eda32298a9f1d68764fd"},{"url":"https://git.kernel.org/stable/c/cda0e0243bd3c04008fcd37a46b0269fb3c49249"},{"url":"https://git.kernel.org/stable/c/e58a171d35e32e6e8c37cfe0e8a94406732a331f"}],"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 vulnerable path is reached through the ebtables setsockopt configuration interface (EBT_SO_SET_ENTRIES → do_replace), a local syscall on a socket, not remote network data.\nAC:L - The attacker fully controls the triggering sequence (table replacement with module autoload, plus any concurrent registration race), and syzbot reproduced it reliably; per guidance attacker-controlled races and UAFs are Low.\nPR:L - The path requires CAP_NET_ADMIN only over net->user_ns, which an unprivileged user obtains in a fresh user+network namespace via `unshare -Urn`; no real root is needed.\nUI:N - The attacker triggers the entire flow via their own setsockopt calls; no victim action is required.\nS:U - The corruption stays within the kernel's own memory/security authority in the same (namespaced) context; no VM/IOMMU boundary is crossed.\nC:H - The freed table blob remains live as t->private and is reallocatable by the attacker, allowing controlled reads (counters, kernel data) — a use-after-free yields high confidentiality impact.\nI:H - The UAF lets the attacker place a crafted blob at the freed address; ebt_do_table dereferences target function pointers from it, giving heap-spray-based arbitrary write / control-flow hijack.\nA:H - The use-after-free causes kernel oops/panic (as shown by the KASAN report in __ebt_unregister_table) and is trivially weaponizable into a crash."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T09:18:22.593Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"5.10.173"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"5.15.100"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.1.18"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.2.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.15","versionEndExcluding":"6.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2.60"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.4.91"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.10.41"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.12.21"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.14.5"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2023-54243","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-15T21:39:46.179216Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T21:41:43.012Z"}}]}}}