{"id":"CVE-2024-53151","state":"PUBLISHED","title":"svcrdma: Address an integer overflow","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nsvcrdma: Address an integer overflow\n\nDan Carpenter reports:\n> Commit 78147ca8b4a9 (\"svcrdma: Add a \"parsed chunk list\" data\n> structure\") from Jun 22, 2020 (linux-next), leads to the following\n> Smatch static checker warning:\n>\n>\tnet/sunrpc/xprtrdma/svc_rdma_recvfrom.c:498 xdr_check_write_chunk()\n>\twarn: potential user controlled sizeof overflow 'segcount * 4 * 4'\n>\n> net/sunrpc/xprtrdma/svc_rdma_recvfrom.c\n>     488 static bool xdr_check_write_chunk(struct svc_rdma_recv_ctxt *rctxt)\n>     489 {\n>     490         u32 segcount;\n>     491         __be32 *p;\n>     492\n>     493         if (xdr_stream_decode_u32(&rctxt->rc_stream, &segcount))\n>                                                               ^^^^^^^^\n>\n>     494                 return false;\n>     495\n>     496         /* A bogus segcount causes this buffer overflow check to fail. */\n>     497         p = xdr_inline_decode(&rctxt->rc_stream,\n> --> 498                               segcount * rpcrdma_segment_maxsz * sizeof(*p));\n>\n>\n> segcount is an untrusted u32.  On 32bit systems anything >= SIZE_MAX / 16 will\n> have an integer overflow and some those values will be accepted by\n> xdr_inline_decode().","publishedAt":"2024-12-24T11:28:50.917Z","updatedAt":"2026-08-05T11:44:11.228Z","severity":{"score":7.5,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"21e1cf688fb0397788c8dd42e1e0b08d58ac5c7b","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"c1f8195bf68edd2cef0f18a4cead394075a54b5a","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"838dd342962cef4c320632a5af48d3c31f2f9877","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"4cbc3ba6dc2f746497cade60bcbaa82ae3696689","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"e5c440c227ecdc721f2da0dd88b6358afd1031a7","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"3c63d8946e578663b868cb9912dac616ea68bfd0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sunrpc/xprtrdma/svc_rdma_recvfrom.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.174","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.120","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.64","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.11","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12.2","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.13","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sunrpc/xprtrdma/svc_rdma_recvfrom.c"]}],"references":["https://git.kernel.org/stable/c/21e1cf688fb0397788c8dd42e1e0b08d58ac5c7b","https://git.kernel.org/stable/c/c1f8195bf68edd2cef0f18a4cead394075a54b5a","https://git.kernel.org/stable/c/838dd342962cef4c320632a5af48d3c31f2f9877","https://git.kernel.org/stable/c/4cbc3ba6dc2f746497cade60bcbaa82ae3696689","https://git.kernel.org/stable/c/e5c440c227ecdc721f2da0dd88b6358afd1031a7","https://git.kernel.org/stable/c/3c63d8946e578663b868cb9912dac616ea68bfd0","https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html"],"weaknesses":["CWE-190"],"ingestedAt":"2026-10-29T20:08:04.920Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/53xxx/CVE-2024-53151.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-53151","state":"PUBLISHED","datePublished":"2024-12-24T11:28:50.917Z","dateUpdated":"2026-08-05T11:44:11.228Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-11-19T17:17:25.000Z"},"containers":{"cna":{"title":"svcrdma: Address an integer overflow","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nsvcrdma: Address an integer overflow\n\nDan Carpenter reports:\n> Commit 78147ca8b4a9 (\"svcrdma: Add a \"parsed chunk list\" data\n> structure\") from Jun 22, 2020 (linux-next), leads to the following\n> Smatch static checker warning:\n>\n>\tnet/sunrpc/xprtrdma/svc_rdma_recvfrom.c:498 xdr_check_write_chunk()\n>\twarn: potential user controlled sizeof overflow 'segcount * 4 * 4'\n>\n> net/sunrpc/xprtrdma/svc_rdma_recvfrom.c\n>     488 static bool xdr_check_write_chunk(struct svc_rdma_recv_ctxt *rctxt)\n>     489 {\n>     490         u32 segcount;\n>     491         __be32 *p;\n>     492\n>     493         if (xdr_stream_decode_u32(&rctxt->rc_stream, &segcount))\n>                                                               ^^^^^^^^\n>\n>     494                 return false;\n>     495\n>     496         /* A bogus segcount causes this buffer overflow check to fail. */\n>     497         p = xdr_inline_decode(&rctxt->rc_stream,\n> --> 498                               segcount * rpcrdma_segment_maxsz * sizeof(*p));\n>\n>\n> segcount is an untrusted u32.  On 32bit systems anything >= SIZE_MAX / 16 will\n> have an integer overflow and some those values will be accepted by\n> xdr_inline_decode()."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"21e1cf688fb0397788c8dd42e1e0b08d58ac5c7b","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"c1f8195bf68edd2cef0f18a4cead394075a54b5a","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"838dd342962cef4c320632a5af48d3c31f2f9877","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"4cbc3ba6dc2f746497cade60bcbaa82ae3696689","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"e5c440c227ecdc721f2da0dd88b6358afd1031a7","versionType":"git"},{"version":"78147ca8b4a9b6cf0e597ddd6bf17959e08376c2","status":"affected","lessThan":"3c63d8946e578663b868cb9912dac616ea68bfd0","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sunrpc/xprtrdma/svc_rdma_recvfrom.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.11","versionType":"semver"},{"version":"5.15.174","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.120","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.64","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.11.11","status":"unaffected","lessThanOrEqual":"6.11.*","versionType":"semver"},{"version":"6.12.2","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.13","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/sunrpc/xprtrdma/svc_rdma_recvfrom.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/21e1cf688fb0397788c8dd42e1e0b08d58ac5c7b"},{"url":"https://git.kernel.org/stable/c/c1f8195bf68edd2cef0f18a4cead394075a54b5a"},{"url":"https://git.kernel.org/stable/c/838dd342962cef4c320632a5af48d3c31f2f9877"},{"url":"https://git.kernel.org/stable/c/4cbc3ba6dc2f746497cade60bcbaa82ae3696689"},{"url":"https://git.kernel.org/stable/c/e5c440c227ecdc721f2da0dd88b6358afd1031a7"},{"url":"https://git.kernel.org/stable/c/3c63d8946e578663b868cb9912dac616ea68bfd0"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:N - The flaw is in nfsd's RPC-over-RDMA server transport header parser, driven entirely by bytes a remote peer places in a Send to the NFS/RDMA listener (port 20049). RoCEv2 and iWARP are IP-routable, and soft-RoCE/soft-iWARP make this reachable over ordinary Ethernet, so this is a remote network attack surface.\nAC:L - The attacker simply encodes segcount=0x40000000 in a Write chunk or Reply chunk; the 32-bit truncation and the xdr_inline_decode(0) short-circuit are deterministic with no race, no memory-layout dependency, and no timing element. Verified the truncation occurs on 64-bit as well as 32-bit hosts.\nPR:N - svc_rdma_xdr_decode_req() runs in svc_rdma_recvfrom() at the transport layer, strictly before svc_process()/svc_authenticate() and before any export or credential check. Any peer able to establish an RDMA-CM connection reaches it with zero credentials.\nUI:N - The malformed transport header is processed automatically by the nfsd receive path as soon as it arrives. No action by any local user or administrator is required.\nS:U - The bad computation and its consequences are confined to the kernel's own memory management within the same security authority. There is no VM, IOMMU, or sandbox boundary crossed.\nC:N - I traced every consumer of the bogus segcount: the only use is pcl_alloc_chunk(), whose oversized kmalloc fails before pcl_alloc_write() can dereference its unchecked raw pointer, so no out-of-bounds data is read. The failed decode returns only a generic RDMA_ERROR reply, disclosing nothing.\nI:N - The bounds-check bypass never reaches the unbounded ch_segments[] write loop in pcl_alloc_write(), because chunk allocation aborts first and the request is rejected with -EINVAL. No kernel memory is modified and no attacker-controlled data is written out of bounds.\nA:H - The bypassed check drives a multi-gigabyte kmalloc whose order exceeds MAX_PAGE_ORDER, tripping WARN_ON_ONCE_GFP() in __alloc_pages() with a stack trace and kernel taint; on the widely deployed panic_on_warn=1 configurations this is an immediate kernel panic triggered by an unauthenticated remote peer."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:44:11.228Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"5.15.174"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.1.120"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.6.64"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.11.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.12.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.11","versionEndExcluding":"6.13"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":5.5,"attackVector":"LOCAL","baseSeverity":"MEDIUM","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H","integrityImpact":"NONE","userInteraction":"NONE","attackComplexity":"LOW","availabilityImpact":"HIGH","privilegesRequired":"LOW","confidentialityImpact":"NONE"}},{"other":{"type":"ssvc","content":{"id":"CVE-2024-53151","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2025-10-01T20:09:46.736232Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-190","lang":"en","type":"CWE","description":"CWE-190 Integer Overflow or Wraparound"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2025-10-01T20:17:09.093Z"}},{"title":"CVE Program Container","references":[{"url":"https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2025-11-03T20:46:36.897Z"}}]}}}