{"id":"CVE-2024-35858","state":"PUBLISHED","title":"net: bcmasp: fix memory leak when bringing down interface","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bcmasp: fix memory leak when bringing down interface\n\nWhen bringing down the TX rings we flush the rings but forget to\nreclaimed the flushed packets. This leads to a memory leak since we\ndo not free the dma mapped buffers. This also leads to tx control\nblock corruption when bringing down the interface for power\nmanagement.","publishedAt":"2024-05-17T14:47:33.401Z","updatedAt":"2026-08-05T11:30:22.967Z","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":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"09040baf8779ad880e0e0d0ea10e57aa929ef3ab","versionType":"git"},{"version":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"2389ad1990163d29cba5480d693b4c2e31cc545c","versionType":"git"},{"version":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"9f898fc2c31fbf0ac5ecd289f528a716464cb005","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.6","versionType":"semver"},{"version":"6.6.30","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.8.9","status":"unaffected","lessThanOrEqual":"6.8.*","versionType":"semver"},{"version":"6.9","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c"]}],"references":["https://git.kernel.org/stable/c/09040baf8779ad880e0e0d0ea10e57aa929ef3ab","https://git.kernel.org/stable/c/2389ad1990163d29cba5480d693b4c2e31cc545c","https://git.kernel.org/stable/c/9f898fc2c31fbf0ac5ecd289f528a716464cb005"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:30.303Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/35xxx/CVE-2024-35858.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35858","state":"PUBLISHED","datePublished":"2024-05-17T14:47:33.401Z","dateUpdated":"2026-08-05T11:30:22.967Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-05-17T13:50:33.106Z"},"containers":{"cna":{"title":"net: bcmasp: fix memory leak when bringing down interface","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet: bcmasp: fix memory leak when bringing down interface\n\nWhen bringing down the TX rings we flush the rings but forget to\nreclaimed the flushed packets. This leads to a memory leak since we\ndo not free the dma mapped buffers. This also leads to tx control\nblock corruption when bringing down the interface for power\nmanagement."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"09040baf8779ad880e0e0d0ea10e57aa929ef3ab","versionType":"git"},{"version":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"2389ad1990163d29cba5480d693b4c2e31cc545c","versionType":"git"},{"version":"490cb412007de593e07c1d3e2b1ec4233886707c","status":"affected","lessThan":"9f898fc2c31fbf0ac5ecd289f528a716464cb005","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.6","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.6","versionType":"semver"},{"version":"6.6.30","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.8.9","status":"unaffected","lessThanOrEqual":"6.8.*","versionType":"semver"},{"version":"6.9","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/net/ethernet/broadcom/asp2/bcmasp_intf.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/09040baf8779ad880e0e0d0ea10e57aa929ef3ab"},{"url":"https://git.kernel.org/stable/c/2389ad1990163d29cba5480d693b4c2e31cc545c"},{"url":"https://git.kernel.org/stable/c/9f898fc2c31fbf0ac5ecd289f528a716464cb005"}],"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 code is the `bcmasp_netif_deinit()` teardown path of a platform Ethernet driver, reached only via `ndo_stop` (`ip link set down`) or a local PM suspend/resume cycle. No received packet or remote protocol interaction can drive interface teardown, so this requires local system access.\nAC:L - The triggering party controls both halves — flooding fragmented TX traffic guarantees in-flight descriptors at teardown, and the tiny `DESC_RING_COUNT` ring wraps into the stale `tx_cbs` region within milliseconds of resuming, so the premature `dev_consume_skb_any()` and subsequent double free are deterministic and repeatable. No unpredictable memory layout or victim state is required.\nPR:L - On the BRCMSTB set-top/embedded systems this driver targets, the suspend-to-WoL standby cycle that produces the `tx_cbs` corruption is an automatic system event, not an attacker privilege; an unprivileged local process only needs to be generating fragmented TX traffic when it occurs. Choosing the higher-severity option between low privilege and root, since the corruption path does not itself depend on CAP_NET_ADMIN.\nUI:N - Idle/autosleep standby entry and admin-scripted interface cycling (NetworkManager, DHCP renewal, WoL standby) occur with no victim action. The leak accrues on every interface-down with no interaction at all.\nS:U - The leaked memory, freed skbs, and corrupted slab freelist all live within the kernel's own security authority. There is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The stale `last` flag frees an skb (releasing its fragment page references) while later descriptors for that same skb are still pending in the hardware ring and still DMA-mapped, so reallocated pages holding other processes' data can be DMA'd out onto the wire. The resulting `skbuff_head_cache` double free additionally yields overlapping allocations usable as a kernel read primitive.\nI:H - Freeing the same skb twice corrupts the SLUB freelist, allowing two live objects to alias the same memory — the standard route to a controlled kernel write and control-flow hijack. Skipped `dma_unmap_single()` also leaves the device with live mappings into memory that has been returned to the allocator.\nA:H - The double free trips SLUB's detection (BUG/panic) or silently corrupts the allocator into a later oops. Independently, the unreclaimed skbs and DMA mappings leak on every interface-down, exhausting memory and SWIOTLB/IOVA space over repeated up/down or standby cycles."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T11:30:22.967Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6","versionEndExcluding":"6.6.30"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6","versionEndExcluding":"6.8.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6","versionEndExcluding":"6.9"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/09040baf8779ad880e0e0d0ea10e57aa929ef3ab","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/2389ad1990163d29cba5480d693b4c2e31cc545c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/9f898fc2c31fbf0ac5ecd289f528a716464cb005","tags":["x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T03:21:49.040Z"}},{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-35858","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T15:41:37.023681Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-09-11T17:33:17.762Z"}}]}}}