CVE-2023-52664 (GCVE-0-2023-52664)
Vulnerability from cvelistv5
Published
2024-05-17 13:45
Modified
2026-08-05 09:10
Summary
In the Linux kernel, the following vulnerability has been resolved: net: atlantic: eliminate double free in error handling logic Driver has a logic leak in ring data allocation/free, where aq_ring_free could be called multiple times on same ring, if system is under stress and got memory allocation error. Ring pointer was used as an indicator of failure, but this is not correct since only ring data is allocated/deallocated. Ring itself is an array member. Changing ring allocation functions to return error code directly. This simplifies error handling and eliminates aq_ring_free on higher layer.
Impacted products
Vendor Product Version
Linux Linux Version: 018423e90bee8978105eaaa265a26e70637f9f1e
Version: 018423e90bee8978105eaaa265a26e70637f9f1e
Version: 018423e90bee8978105eaaa265a26e70637f9f1e
Version: 018423e90bee8978105eaaa265a26e70637f9f1e
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T23:11:34.900Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/0edb3ae8bfa31cd544b0c195bdec00e036002b5d"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/c11a870a73a3bc4cc7df6dd877a45b181795fcbf"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/d1fde4a7e1dcc4d49cce285107a7a43c3030878d"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/b3cb7a830a24527877b0bc900b9bd74a96aea928"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2023-52664",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T15:42:18.912718Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:33:20.159Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/aquantia/atlantic/aq_ptp.c",
            "drivers/net/ethernet/aquantia/atlantic/aq_ring.c",
            "drivers/net/ethernet/aquantia/atlantic/aq_ring.h",
            "drivers/net/ethernet/aquantia/atlantic/aq_vec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "0edb3ae8bfa31cd544b0c195bdec00e036002b5d",
              "status": "affected",
              "version": "018423e90bee8978105eaaa265a26e70637f9f1e",
              "versionType": "git"
            },
            {
              "lessThan": "c11a870a73a3bc4cc7df6dd877a45b181795fcbf",
              "status": "affected",
              "version": "018423e90bee8978105eaaa265a26e70637f9f1e",
              "versionType": "git"
            },
            {
              "lessThan": "d1fde4a7e1dcc4d49cce285107a7a43c3030878d",
              "status": "affected",
              "version": "018423e90bee8978105eaaa265a26e70637f9f1e",
              "versionType": "git"
            },
            {
              "lessThan": "b3cb7a830a24527877b0bc900b9bd74a96aea928",
              "status": "affected",
              "version": "018423e90bee8978105eaaa265a26e70637f9f1e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/ethernet/aquantia/atlantic/aq_ptp.c",
            "drivers/net/ethernet/aquantia/atlantic/aq_ring.c",
            "drivers/net/ethernet/aquantia/atlantic/aq_ring.h",
            "drivers/net/ethernet/aquantia/atlantic/aq_vec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.11"
            },
            {
              "lessThan": "4.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.77",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.16",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.7.*",
              "status": "unaffected",
              "version": "6.7.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.8",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.77",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.16",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.4",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: atlantic: eliminate double free in error handling logic\n\nDriver has a logic leak in ring data allocation/free,\nwhere aq_ring_free could be called multiple times on same ring,\nif system is under stress and got memory allocation error.\n\nRing pointer was used as an indicator of failure, but this is\nnot correct since only ring data is allocated/deallocated.\nRing itself is an array member.\n\nChanging ring allocation functions to return error code directly.\nThis simplifies error handling and eliminates aq_ring_free\non higher layer."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The double-free is reached only through local netdev open/close paths (ndo_open \u2192 aq_nic_init \u2192 aq_vec_ring_alloc/aq_ptp_ring_alloc, ethtool ringparam, feature/XDP restarts, suspend/resume), not via processing of remotely received packets.\nAC:L - A local attacker can reliably induce the required GFP_KERNEL/dma_alloc_coherent failure with memory pressure (as in the reported stress+ifconfig reproducer) and repeatedly drive interface reinit, so success does not depend on conditions outside attacker control.\nPR:L - Triggering ifup/ethtool needs CAP_NET_ADMIN checked via ns_capable(net-\u003euser_ns), which is Low for an atlantic device/VF in a tenant netns; alternatively an unprivileged user can supply the memory-pressure half while ordinary admin reopen activity hits the path.\nUI:N - The attacker induces memory pressure and/or issues the interface reconfiguration themselves; no separate victim action is required for the faulty cleanup to run.\nS:U - Impact is confined to host-kernel slab/DMA state under a single security authority; the defect does not cross a VM, IOMMU, or sandbox boundary.\nC:H - Double-free of ring buff_ring/dx_ring allocations allows freelist aliasing and reclaim of the freed objects with attacker-controlled data, yielding a use-after-free readable/disclosure primitive.\nI:H - The same double-free freelist corruption enables heap reuse and overwrite of live kernel objects, providing write and control-flow hijack primitives suitable for privilege escalation.\nA:H - The second free of already-released ring memory trips allocator double-free detection or corrupts the freelist, causing a kernel BUG/oops/panic and denying service on NIC bring-up."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:10:55.411Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/0edb3ae8bfa31cd544b0c195bdec00e036002b5d"
        },
        {
          "url": "https://git.kernel.org/stable/c/c11a870a73a3bc4cc7df6dd877a45b181795fcbf"
        },
        {
          "url": "https://git.kernel.org/stable/c/d1fde4a7e1dcc4d49cce285107a7a43c3030878d"
        },
        {
          "url": "https://git.kernel.org/stable/c/b3cb7a830a24527877b0bc900b9bd74a96aea928"
        }
      ],
      "title": "net: atlantic: eliminate double free in error handling logic",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-52664",
    "datePublished": "2024-05-17T13:45:05.545Z",
    "dateReserved": "2024-03-07T14:49:46.885Z",
    "dateUpdated": "2026-08-05T09:10:55.411Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/0edb3ae8bfa31cd544b0c195bdec00e036002b5d\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/c11a870a73a3bc4cc7df6dd877a45b181795fcbf\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/d1fde4a7e1dcc4d49cce285107a7a43c3030878d\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/b3cb7a830a24527877b0bc900b9bd74a96aea928\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T23:11:34.900Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2023-52664\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T15:42:18.912718Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:16.198Z\"}}], \"cna\": {\"title\": \"net: atlantic: eliminate double free in error handling logic\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The double-free is reached only through local netdev open/close paths (ndo_open \\u2192 aq_nic_init \\u2192 aq_vec_ring_alloc/aq_ptp_ring_alloc, ethtool ringparam, feature/XDP restarts, suspend/resume), not via processing of remotely received packets.\\nAC:L - A local attacker can reliably induce the required GFP_KERNEL/dma_alloc_coherent failure with memory pressure (as in the reported stress+ifconfig reproducer) and repeatedly drive interface reinit, so success does not depend on conditions outside attacker control.\\nPR:L - Triggering ifup/ethtool needs CAP_NET_ADMIN checked via ns_capable(net-\u003euser_ns), which is Low for an atlantic device/VF in a tenant netns; alternatively an unprivileged user can supply the memory-pressure half while ordinary admin reopen activity hits the path.\\nUI:N - The attacker induces memory pressure and/or issues the interface reconfiguration themselves; no separate victim action is required for the faulty cleanup to run.\\nS:U - Impact is confined to host-kernel slab/DMA state under a single security authority; the defect does not cross a VM, IOMMU, or sandbox boundary.\\nC:H - Double-free of ring buff_ring/dx_ring allocations allows freelist aliasing and reclaim of the freed objects with attacker-controlled data, yielding a use-after-free readable/disclosure primitive.\\nI:H - The same double-free freelist corruption enables heap reuse and overwrite of live kernel objects, providing write and control-flow hijack primitives suitable for privilege escalation.\\nA:H - The second free of already-released ring memory trips allocator double-free detection or corrupts the freelist, causing a kernel BUG/oops/panic and denying service on NIC bring-up.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"018423e90bee8978105eaaa265a26e70637f9f1e\", \"lessThan\": \"0edb3ae8bfa31cd544b0c195bdec00e036002b5d\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"018423e90bee8978105eaaa265a26e70637f9f1e\", \"lessThan\": \"c11a870a73a3bc4cc7df6dd877a45b181795fcbf\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"018423e90bee8978105eaaa265a26e70637f9f1e\", \"lessThan\": \"d1fde4a7e1dcc4d49cce285107a7a43c3030878d\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"018423e90bee8978105eaaa265a26e70637f9f1e\", \"lessThan\": \"b3cb7a830a24527877b0bc900b9bd74a96aea928\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/net/ethernet/aquantia/atlantic/aq_ptp.c\", \"drivers/net/ethernet/aquantia/atlantic/aq_ring.c\", \"drivers/net/ethernet/aquantia/atlantic/aq_ring.h\", \"drivers/net/ethernet/aquantia/atlantic/aq_vec.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4.11\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"4.11\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.1.77\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.16\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/net/ethernet/aquantia/atlantic/aq_ptp.c\", \"drivers/net/ethernet/aquantia/atlantic/aq_ring.c\", \"drivers/net/ethernet/aquantia/atlantic/aq_ring.h\", \"drivers/net/ethernet/aquantia/atlantic/aq_vec.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/0edb3ae8bfa31cd544b0c195bdec00e036002b5d\"}, {\"url\": \"https://git.kernel.org/stable/c/c11a870a73a3bc4cc7df6dd877a45b181795fcbf\"}, {\"url\": \"https://git.kernel.org/stable/c/d1fde4a7e1dcc4d49cce285107a7a43c3030878d\"}, {\"url\": \"https://git.kernel.org/stable/c/b3cb7a830a24527877b0bc900b9bd74a96aea928\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nnet: atlantic: eliminate double free in error handling logic\\n\\nDriver has a logic leak in ring data allocation/free,\\nwhere aq_ring_free could be called multiple times on same ring,\\nif system is under stress and got memory allocation error.\\n\\nRing pointer was used as an indicator of failure, but this is\\nnot correct since only ring data is allocated/deallocated.\\nRing itself is an array member.\\n\\nChanging ring allocation functions to return error code directly.\\nThis simplifies error handling and eliminates aq_ring_free\\non higher layer.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.77\", \"versionStartIncluding\": \"4.11\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.16\", \"versionStartIncluding\": \"4.11\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.4\", \"versionStartIncluding\": \"4.11\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8\", \"versionStartIncluding\": \"4.11\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T09:10:55.411Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2023-52664\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T09:10:55.411Z\", \"dateReserved\": \"2024-03-07T14:49:46.885Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-17T13:45:05.545Z\", \"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…