{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2025-37911","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2025-04-16T04:51:23.967Z","datePublished":"2025-05-20T15:21:43.278Z","dateUpdated":"2026-08-05T11:58:15.426Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:58:15.426Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nbnxt_en: Fix out-of-bound memcpy() during ethtool -w\n\nWhen retrieving the FW coredump using ethtool, it can sometimes cause\nmemory corruption:\n\nBUG: KFENCE: memory corruption in __bnxt_get_coredump+0x3ef/0x670 [bnxt_en]\nCorrupted memory at 0x000000008f0f30e8 [ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ] (in kfence-#45):\n__bnxt_get_coredump+0x3ef/0x670 [bnxt_en]\nethtool_get_dump_data+0xdc/0x1a0\n__dev_ethtool+0xa1e/0x1af0\ndev_ethtool+0xa8/0x170\ndev_ioctl+0x1b5/0x580\nsock_do_ioctl+0xab/0xf0\nsock_ioctl+0x1ce/0x2e0\n__x64_sys_ioctl+0x87/0xc0\ndo_syscall_64+0x5c/0xf0\nentry_SYSCALL_64_after_hwframe+0x78/0x80\n\n...\n\nThis happens when copying the coredump segment list in\nbnxt_hwrm_dbg_dma_data() with the HWRM_DBG_COREDUMP_LIST FW command.\nThe info->dest_buf buffer is allocated based on the number of coredump\nsegments returned by the FW.  The segment list is then DMA'ed by\nthe FW and the length of the DMA is returned by FW.  The driver then\ncopies this DMA'ed segment list to info->dest_buf.\n\nIn some cases, this DMA length may exceed the info->dest_buf length\nand cause the above BUG condition.  Fix it by capping the copy\nlength to not exceed the length of info->dest_buf.  The extra\nDMA data contains no useful information.\n\nThis code path is shared for the HWRM_DBG_COREDUMP_LIST and the\nHWRM_DBG_COREDUMP_RETRIEVE FW commands.  The buffering is different\nfor these 2 FW commands.  To simplify the logic, we need to move\nthe line to adjust the buffer length for HWRM_DBG_COREDUMP_RETRIEVE\nup, so that the new check to cap the copy length will work for both\ncommands."}],"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 bug is reached through the ETHTOOL_GET_DUMP_DATA ioctl on a socket (sock_ioctl → dev_ioctl → dev_ethtool → ethtool_get_dump_data → bnxt_get_dump_data), which requires local system access; there is no remote or adjacent-network path into bnxt_hwrm_dbg_dma_data().\nAC:L - On an affected bnxt_en adapter the attacker simply issues `ethtool -w` repeatedly and the firmware-reported DMA length deterministically exceeds the kmalloc(segs * 16) coredump-list buffer, so the out-of-bounds memcpy() is triggered reliably with no race to win and no memory layout the attacker must guess.\nPR:L - __dev_ethtool() gates ETHTOOL_GET_DUMP_DATA behind ns_capable(net->user_ns, CAP_NET_ADMIN), which is namespace-relative rather than real root — an unprivileged user who is namespace-root over a net namespace holding a bnxt netdev (e.g. an SR-IOV VF handed to a container, a very common deployment for these Broadcom NICs in cloud/Kubernetes hosts) satisfies it, so basic local user privileges suffice.\nUI:N - The attacker triggers the coredump retrieval entirely on their own via the ioctl; no administrator or other victim needs to perform any action.\nS:U - The heap corruption occurs in kernel slab memory within the same security authority as the kernel itself; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The unchecked memcpy() overflows a small kmalloc'd slab object with up to ~2KB of firmware data (and can also read past the 2048-byte DMA slice when the FW-reported len is larger), and such slab corruption of adjacent objects is a general primitive that can be steered into kernel information disclosure.\nI:H - This is a heap out-of-bounds write — memcpy(info->dest_buf + off, dma_buf, len) with len unbounded by info->dest_buf_size (the guard against BNXT_COREDUMP_BUF_LEN(0) underflows to a huge value and never fires for HWRM_DBG_COREDUMP_LIST) — corrupting adjacent slab objects, which is the classic basis for control-flow hijack and privilege escalation.\nA:H - The reported KFENCE splat shows real memory corruption in __bnxt_get_coredump(); overflowing neighbouring slab objects readily produces oopses and kernel panics, and the attacker can repeat the ioctl at will."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c"],"versions":[{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"69b10dd23ab826d0c7f2d9ab311842251978d0c1","status":"affected","versionType":"git"},{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"43292b83424158fa6ec458799f3cb9c54d18c484","status":"affected","versionType":"git"},{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"4d69864915a3a052538e4ba76cd6fd77cfc64ebe","status":"affected","versionType":"git"},{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"44807af79efd0d78fa36383dd865ddfe7992c0a6","status":"affected","versionType":"git"},{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"44d81a9ebf0cad92512e0ffdf7412bfe20db66ec","status":"affected","versionType":"git"},{"version":"c74751f4c39232c31214ec6a3bc1c7e62f5c728b","lessThan":"6b87bd94f34370bbf1dfa59352bed8efab5bf419","status":"affected","versionType":"git"},{"version":"4bf973a1f84aefb64750bdb3afe72d54de3199d7","status":"affected","versionType":"git"},{"version":"a76837dd731b68cc3b5690470bc9efa2a8e3801a","status":"affected","versionType":"git"},{"version":"4.19.95","lessThan":"4.20","status":"affected","versionType":"semver"},{"version":"5.4.8","lessThan":"5.5","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/bnxt/bnxt_coredump.c"],"versions":[{"version":"5.5","status":"affected"},{"version":"0","lessThan":"5.5","status":"unaffected","versionType":"semver"},{"version":"5.15.182","lessThanOrEqual":"5.15.*","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.5","versionEndExcluding":"5.15.182"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.1.138"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.6.90"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.12.28"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.14.6"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.5","versionEndExcluding":"6.15"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19.95"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.4.8"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/69b10dd23ab826d0c7f2d9ab311842251978d0c1"},{"url":"https://git.kernel.org/stable/c/43292b83424158fa6ec458799f3cb9c54d18c484"},{"url":"https://git.kernel.org/stable/c/4d69864915a3a052538e4ba76cd6fd77cfc64ebe"},{"url":"https://git.kernel.org/stable/c/44807af79efd0d78fa36383dd865ddfe7992c0a6"},{"url":"https://git.kernel.org/stable/c/44d81a9ebf0cad92512e0ffdf7412bfe20db66ec"},{"url":"https://git.kernel.org/stable/c/6b87bd94f34370bbf1dfa59352bed8efab5bf419"}],"title":"bnxt_en: Fix out-of-bound memcpy() during ethtool -w","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:12.296Z"}}]}}