CVE-2024-43864 (GCVE-0-2024-43864)
Vulnerability from cvelistv5
Published
2024-08-20 23:45
Modified
2026-08-05 11:36
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: net/mlx5e: Fix CT entry update leaks of modify header context The cited commit allocates a new modify header to replace the old one when updating CT entry. But if failed to allocate a new one, eg. exceed the max number firmware can support, modify header will be an error pointer that will trigger a panic when deallocating it. And the old modify header point is copied to old attr. When the old attr is freed, the old modify header is lost. Fix it by restoring the old attr to attr when failed to allocate a new modify header context. So when the CT entry is freed, the right modify header context will be freed. And the panic of accessing error pointer is also fixed.
Impacted products
Vendor Product Version
Linux Linux Version: 94ceffb48eac7692677d8093dcde6965b70c4b35
Version: 94ceffb48eac7692677d8093dcde6965b70c4b35
Version: 94ceffb48eac7692677d8093dcde6965b70c4b35
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-43864",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T16:06:42.010575Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-12T17:33:19.476Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "daab2cc17b6b6ab158566bba037e9551fd432b59",
              "status": "affected",
              "version": "94ceffb48eac7692677d8093dcde6965b70c4b35",
              "versionType": "git"
            },
            {
              "lessThan": "89064d09c56b44c668509bf793c410484f63f5ad",
              "status": "affected",
              "version": "94ceffb48eac7692677d8093dcde6965b70c4b35",
              "versionType": "git"
            },
            {
              "lessThan": "025f2b85a5e5a46df14ecf162c3c80a957a36d0b",
              "status": "affected",
              "version": "94ceffb48eac7692677d8093dcde6965b70c4b35",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.3"
            },
            {
              "lessThan": "6.3",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.45",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.10.*",
              "status": "unaffected",
              "version": "6.10.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.11",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.45",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.10.4",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - The vulnerable path is driven entirely by received packets \u2014 conntrack state transitions on forwarded traffic trigger `flow_offload_refresh()` \u2192 `FLOW_CLS_REPLACE` \u2192 `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\u0027ed 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\u2192ESTABLISHED update that enters the replace path. No memory layout or victim state outside the attacker\u0027s 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\u0027s own security authority. No hypervisor, IOMMU, or sandbox boundary is crossed by the primary impact.\nC:H - The `err_rule` path leaves `zone_rule-\u003eattr-\u003emodify_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 \u2014 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 \u2014 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-\u003emodify_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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:36:51.314Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-43864",
    "datePublished": "2024-08-20T23:45:28.833Z",
    "dateReserved": "2024-08-17T09:11:59.279Z",
    "dateUpdated": "2026-08-05T11:36:51.314Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"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\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:22.780Z\"}}], \"cna\": {\"title\": \"net/mlx5e: Fix CT entry update leaks of modify header context\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"94ceffb48eac7692677d8093dcde6965b70c4b35\", \"lessThan\": \"daab2cc17b6b6ab158566bba037e9551fd432b59\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"94ceffb48eac7692677d8093dcde6965b70c4b35\", \"lessThan\": \"89064d09c56b44c668509bf793c410484f63f5ad\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"94ceffb48eac7692677d8093dcde6965b70c4b35\", \"lessThan\": \"025f2b85a5e5a46df14ecf162c3c80a957a36d0b\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.3\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.3\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.45\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.10.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.10.*\"}, {\"status\": \"unaffected\", \"version\": \"6.11\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c\"], \"defaultStatus\": \"affected\"}], \"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\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"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.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.45\", \"versionStartIncluding\": \"6.3\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.10.4\", \"versionStartIncluding\": \"6.3\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.11\", \"versionStartIncluding\": \"6.3\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-05-11T20:31:18.088Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-43864\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-05-11T20:31:18.088Z\", \"dateReserved\": \"2024-08-17T09:11:59.279Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-08-20T23:45:28.833Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…