{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-43864", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-08-17T09:11:59.279Z", "datePublished": "2024-08-20T23:45:28.833Z", "dateUpdated": "2026-08-05T11:36:51.314Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:36:51.314Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet/mlx5e: Fix CT entry update leaks of modify header context\n\nThe cited commit allocates a new modify header to replace the old\none when updating CT entry. But if failed to allocate a new one, eg.\nexceed the max number firmware can support, modify header will be\nan error pointer that will trigger a panic when deallocating it. And\nthe old modify header point is copied to old attr. When the old\nattr is freed, the old modify header is lost.\n\nFix it by restoring the old attr to attr when failed to allocate a\nnew modify header context. So when the CT entry is freed, the right\nmodify header context will be freed. And the panic of accessing\nerror pointer is also fixed." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "AV:N - The vulnerable path is driven entirely by received packets — conntrack state transitions on forwarded traffic trigger `flow_offload_refresh()` → `FLOW_CLS_REPLACE` → `mlx5_tc_ct_entry_replace_rule()` with no syscall or local access. The error condition itself (firmware modify-header table exhaustion) is induced by a remote peer opening many NAT'ed connections through the offloading host.\nAC:L - The attacker controls both halves: flooding connections saturates the bounded firmware modify-header table, after which the allocation failure is deterministic, and completing a TCP handshake reliably drives the NEW→ESTABLISHED update that enters the replace path. No memory layout or victim state outside the attacker's influence is required.\nPR:N - The attacker is an unauthenticated remote host whose traffic merely traverses the mlx5 offloading gateway or hypervisor; no account, capability, or local presence on the target is needed. The tc/nftables offload configuration is an administrative property of the vulnerable deployment, not a privilege the attacker must hold.\nUI:N - Exploitation requires only network traffic through the already-configured offload path; no administrator or user action is needed at any point.\nS:U - The wild-pointer dereference, double free, and heap corruption all occur within the host kernel's own security authority. No hypervisor, IOMMU, or sandbox boundary is crossed by the primary impact.\nC:H - The `err_rule` path leaves `zone_rule->attr->modify_hdr` pointing at a freed `struct mlx5_modify_hdr`, and the subsequent teardown reads `ns_type` and `fs_dr_action.dr_action` out of that reallocated slab object — a use-after-free that an attacker who grooms the heap via network-driven allocations can leverage into arbitrary kernel memory disclosure.\nI:H - The same object is `kfree()`d twice, giving a double-free heap-corruption primitive, and `mlx5dr_action_destroy()` is invoked on an attacker-influenceable pointer read from freed memory — exploitable for arbitrary write and control-flow hijack. The double-put of the shared label mapping ID additionally lets a mapping still in use by other connections be released and reused, corrupting CT label classification.\nA:H - As stated in the fix commit, dereferencing the `ERR_PTR` left in `attr->modify_hdr` triggers a kernel panic, and the double-free path causes slab corruption and oopses. A remote attacker can reproduce this repeatedly against an internet-facing offloading gateway." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c" ], "versions": [ { "version": "94ceffb48eac7692677d8093dcde6965b70c4b35", "lessThan": "daab2cc17b6b6ab158566bba037e9551fd432b59", "status": "affected", "versionType": "git" }, { "version": "94ceffb48eac7692677d8093dcde6965b70c4b35", "lessThan": "89064d09c56b44c668509bf793c410484f63f5ad", "status": "affected", "versionType": "git" }, { "version": "94ceffb48eac7692677d8093dcde6965b70c4b35", "lessThan": "025f2b85a5e5a46df14ecf162c3c80a957a36d0b", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c" ], "versions": [ { "version": "6.3", "status": "affected" }, { "version": "0", "lessThan": "6.3", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.45", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.10.4", "lessThanOrEqual": "6.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.11", "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": "6.3", "versionEndExcluding": "6.6.45" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.3", "versionEndExcluding": "6.10.4" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.3", "versionEndExcluding": "6.11" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/daab2cc17b6b6ab158566bba037e9551fd432b59" }, { "url": "https://git.kernel.org/stable/c/89064d09c56b44c668509bf793c410484f63f5ad" }, { "url": "https://git.kernel.org/stable/c/025f2b85a5e5a46df14ecf162c3c80a957a36d0b" } ], "title": "net/mlx5e: Fix CT entry update leaks of modify header context", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2024-43864", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2024-09-10T16:06:42.010575Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2024-09-12T17:33:19.476Z" } } ] } }