{"id":"CVE-2024-35962","state":"PUBLISHED","title":"netfilter: complete validation of user input","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: complete validation of user input\n\nIn my recent commit, I missed that do_replace() handlers\nuse copy_from_sockptr() (which I fixed), followed\nby unsafe copy_from_sockptr_offset() calls.\n\nIn all functions, we can perform the @optlen validation\nbefore even calling xt_alloc_table_info() with the following\ncheck:\n\nif ((u64)optlen < (u64)tmp.size + sizeof(tmp))\n        return -EINVAL;","publishedAt":"2024-05-20T09:41:53.207Z","updatedAt":"2026-10-15T00:41:44.521Z","severity":{"score":7.1,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"0f038242b77ddfc505bf4163d4904c1abd2e74d6","status":"affected","lessThan":"cf4bc359b76144a3dd55d7c09464ef4c5f2b2b05","versionType":"git"},{"version":"440e948cf0eff32cfe322dcbca3f2525354b159b","status":"affected","lessThan":"97dab36e57c64106e1c8ebd66cbf0d2d1e52d6b7","versionType":"git"},{"version":"18aae2cb87e5faa9c5bd865260ceadac60d5a6c5","status":"affected","lessThan":"c760089aa98289b4b88a7ff5a62dd92845adf223","versionType":"git"},{"version":"81d51b9b7c95e791ba3c1a2dd77920a9d3b3f525","status":"affected","lessThan":"89242d9584c342cb83311b598d9e6b82572eadf8","versionType":"git"},{"version":"58f2bfb789e6bd3bc24a2c9c1580f3c67aec3018","status":"affected","lessThan":"562b7245131f6e9f1d280c8b5a8750f03edfc05c","versionType":"git"},{"version":"0c83842df40f86e529db6842231154772c20edcc","status":"affected","lessThan":"65acf6e0501ac8880a4f73980d01b5d27648b956","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/netfilter/arp_tables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5.10.215","status":"affected","lessThan":"5.10.216","versionType":"semver"},{"version":"5.15.154","status":"affected","lessThan":"5.15.156","versionType":"semver"},{"version":"6.1.85","status":"affected","lessThan":"6.1.87","versionType":"semver"},{"version":"6.6.26","status":"affected","lessThan":"6.6.28","versionType":"semver"},{"version":"6.8.5","status":"affected","lessThan":"6.8.7","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/netfilter/arp_tables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]}],"references":["https://git.kernel.org/stable/c/cf4bc359b76144a3dd55d7c09464ef4c5f2b2b05","https://git.kernel.org/stable/c/97dab36e57c64106e1c8ebd66cbf0d2d1e52d6b7","https://git.kernel.org/stable/c/c760089aa98289b4b88a7ff5a62dd92845adf223","https://git.kernel.org/stable/c/89242d9584c342cb83311b598d9e6b82572eadf8","https://git.kernel.org/stable/c/562b7245131f6e9f1d280c8b5a8750f03edfc05c","https://git.kernel.org/stable/c/65acf6e0501ac8880a4f73980d01b5d27648b956","https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","https://cert-portal.siemens.com/productcert/html/ssa-265688.html","https://cert-portal.siemens.com/productcert/html/ssa-613116.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:30.303Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/35xxx/CVE-2024-35962.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35962","state":"PUBLISHED","datePublished":"2024-05-20T09:41:53.207Z","dateUpdated":"2026-10-15T00:41:44.521Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-05-17T13:50:33.137Z"},"containers":{"cna":{"title":"netfilter: complete validation of user input","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: complete validation of user input\n\nIn my recent commit, I missed that do_replace() handlers\nuse copy_from_sockptr() (which I fixed), followed\nby unsafe copy_from_sockptr_offset() calls.\n\nIn all functions, we can perform the @optlen validation\nbefore even calling xt_alloc_table_info() with the following\ncheck:\n\nif ((u64)optlen < (u64)tmp.size + sizeof(tmp))\n        return -EINVAL;"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"0f038242b77ddfc505bf4163d4904c1abd2e74d6","status":"affected","lessThan":"cf4bc359b76144a3dd55d7c09464ef4c5f2b2b05","versionType":"git"},{"version":"440e948cf0eff32cfe322dcbca3f2525354b159b","status":"affected","lessThan":"97dab36e57c64106e1c8ebd66cbf0d2d1e52d6b7","versionType":"git"},{"version":"18aae2cb87e5faa9c5bd865260ceadac60d5a6c5","status":"affected","lessThan":"c760089aa98289b4b88a7ff5a62dd92845adf223","versionType":"git"},{"version":"81d51b9b7c95e791ba3c1a2dd77920a9d3b3f525","status":"affected","lessThan":"89242d9584c342cb83311b598d9e6b82572eadf8","versionType":"git"},{"version":"58f2bfb789e6bd3bc24a2c9c1580f3c67aec3018","status":"affected","lessThan":"562b7245131f6e9f1d280c8b5a8750f03edfc05c","versionType":"git"},{"version":"0c83842df40f86e529db6842231154772c20edcc","status":"affected","lessThan":"65acf6e0501ac8880a4f73980d01b5d27648b956","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/netfilter/arp_tables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5.10.215","status":"affected","lessThan":"5.10.216","versionType":"semver"},{"version":"5.15.154","status":"affected","lessThan":"5.15.156","versionType":"semver"},{"version":"6.1.85","status":"affected","lessThan":"6.1.87","versionType":"semver"},{"version":"6.6.26","status":"affected","lessThan":"6.6.28","versionType":"semver"},{"version":"6.8.5","status":"affected","lessThan":"6.8.7","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/ipv4/netfilter/arp_tables.c","net/ipv4/netfilter/ip_tables.c","net/ipv6/netfilter/ip6_tables.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/cf4bc359b76144a3dd55d7c09464ef4c5f2b2b05"},{"url":"https://git.kernel.org/stable/c/97dab36e57c64106e1c8ebd66cbf0d2d1e52d6b7"},{"url":"https://git.kernel.org/stable/c/c760089aa98289b4b88a7ff5a62dd92845adf223"},{"url":"https://git.kernel.org/stable/c/89242d9584c342cb83311b598d9e6b82572eadf8"},{"url":"https://git.kernel.org/stable/c/562b7245131f6e9f1d280c8b5a8750f03edfc05c"},{"url":"https://git.kernel.org/stable/c/65acf6e0501ac8880a4f73980d01b5d27648b956"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H","baseScore":7.1,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerability is reached through the local `setsockopt(SOL_IP, IPT_SO_SET_REPLACE, ...)` syscall on a locally-opened socket, via `nf_setsockopt()` → `do_ipt_set_ctl()` → `do_replace()`. No network packet or remote peer data reaches this code path.\nAC:L - The attacker fully controls `tmp.size` and `optlen` and triggers the oversized `memcpy()` deterministically on every call — no race, no memory-layout luck, and no retry needed. The kernel-sockptr precondition is satisfied by any attached cgroup/setsockopt BPF program (even a no-op one, since `ctx.optlen` defaults to the original `optlen`), which is standard in container environments running Cilium and similar tooling on default `CONFIG_CGROUP_BPF=y` kernels.\nPR:L - `do_ipt_set_ctl()` gates on `ns_capable(sock_net(sk)->user_ns, CAP_NET_ADMIN)`, which any unprivileged user obtains with `unshare -Urn`; entering a new user/net namespace leaves cgroup membership intact so the BPF sockopt hook still applies. No real root in the initial namespace is required.\nUI:N - The attacker performs the entire sequence — socket creation, namespace setup, and the malformed setsockopt call — with no action by any other user or victim process.\nS:U - The out-of-bounds read occurs in kernel slab memory and its impact is confined to the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - This is an unbounded out-of-bounds read — up to `XT_MAX_TABLE_SIZE` (512 MB) copied from a ≤PAGE_SIZE slab object into the netfilter table buffer, far beyond a \"few bytes\". With heap grooming to keep the resulting `ipt_entry` chain valid through `translate_table()`, the harvested kernel heap contents (pointers, keys, credentials, defeating KASLR) can be read back via `getsockopt(IPT_SO_GET_ENTRIES)`.\nI:N - The defect is purely an over-read; the destination buffer is correctly sized by `xt_alloc_table_info(tmp.size)`, so no memory outside an allocation is written and no control-flow or data corruption primitive is produced.\nA:H - A large attacker-chosen `tmp.size` makes the kernel `memcpy()` run hundreds of megabytes past the end of a small slab object, reliably hitting unmapped memory and causing a page fault in kernel context — an oops/panic — and the crash is trivially repeatable by any unprivileged local user."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:31:13.953Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.10.215","versionEndExcluding":"5.10.216"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15.154","versionEndExcluding":"5.15.156"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1.85","versionEndExcluding":"6.1.87"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.26","versionEndExcluding":"6.6.28"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.8.5","versionEndExcluding":"6.8.7"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/cf4bc359b76144a3dd55d7c09464ef4c5f2b2b05","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/97dab36e57c64106e1c8ebd66cbf0d2d1e52d6b7","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/c760089aa98289b4b88a7ff5a62dd92845adf223","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/89242d9584c342cb83311b598d9e6b82572eadf8","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/562b7245131f6e9f1d280c8b5a8750f03edfc05c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/65acf6e0501ac8880a4f73980d01b5d27648b956","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","tags":["x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T03:21:49.038Z"}},{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-35962","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T15:40:32.586631Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-11T17:33:14.037Z"}},{"affected":[{"vendor":"Siemens","product":"RUGGEDCOM RST2428P","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V3.1","versionType":"custom"}]},{"vendor":"Siemens","product":"SCALANCE XC-300/XR-300/XC-400/XR-500WG/XR-500 family","defaultStatus":"unknown","versions":[{"version":"0","status":"unaffected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SCALANCE XCM-/XRM-/XCH-/XRH-300 family","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V3.1","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 TM MFP - GNU/Linux subsystem","defaultStatus":"unknown","versions":[{"version":"0","status":"affected","lessThan":"V1.1.1","versionType":"custom"}]}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-265688.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-613116.html"}],"providerMetadata":{"shortName":"siemens-SADP","orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","dateUpdated":"2026-10-15T00:41:44.521Z"},"x_adpType":"supplier"}]}}}