GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2023-54043 (GCVE-0-2023-54043)

Vulnerability from cvelistv5 – Published: 2025-12-24 12:22 – Updated: 2026-08-05 09:16
VLAI
Title
iommufd: Do not add the same hwpt to the ioas->hwpt_list twice
Summary
In the Linux kernel, the following vulnerability has been resolved: iommufd: Do not add the same hwpt to the ioas->hwpt_list twice The hwpt is added to the hwpt_list only during its creation, it is never added again. This hunk is some missed leftover from rework. Adding it twice will corrupt the linked list in some cases. It effects HWPT specific attachment, which is something the test suite cannot cover until we can create a legitimate struct device with a non-system iommu "driver" (ie we need the bus removed from the iommu code)
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: e8d57210035b6377d424ba964961892d01127cf6 , < c44adefdcf472f946f0632f4e0ddcbf3e00b8516 (git)
Affected: e8d57210035b6377d424ba964961892d01127cf6 , < b4ff830eca097df51af10a9be29e8cc817327919 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.2
Unaffected: 0 , < 6.2 (semver)
Unaffected: 6.2.3 , ≤ 6.2.* (semver)
Unaffected: 6.3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/iommufd/device.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "c44adefdcf472f946f0632f4e0ddcbf3e00b8516",
              "status": "affected",
              "version": "e8d57210035b6377d424ba964961892d01127cf6",
              "versionType": "git"
            },
            {
              "lessThan": "b4ff830eca097df51af10a9be29e8cc817327919",
              "status": "affected",
              "version": "e8d57210035b6377d424ba964961892d01127cf6",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/iommufd/device.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.2"
            },
            {
              "lessThan": "6.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.2.*",
              "status": "unaffected",
              "version": "6.2.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.2.3",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommufd: Do not add the same hwpt to the ioas-\u003ehwpt_list twice\n\nThe hwpt is added to the hwpt_list only during its creation, it is never\nadded again. This hunk is some missed leftover from rework. Adding it\ntwice will corrupt the linked list in some cases.\n\nIt effects HWPT specific attachment, which is something the test suite\ncannot cover until we can create a legitimate struct device with a\nnon-system iommu \"driver\" (ie we need the bus removed from the iommu code)"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable path is entered only through ioctls on the local `/dev/iommu` character device and a VFIO device fd (`vfio_iommufd_physical_attach_ioas()` \u2192 `iommufd_device_attach()`). There is no network or adjacent-network exposure.\nAC:L - There is no race window and no dependence on memory layout the attacker cannot shape \u2014 the duplicate `list_add_tail()` on an already-linked `hwpt_item` executes deterministically on every hw_pagetable-targeted attach, and the follow-on UAF is reached by an ordinary attacker-chosen attach/detach/attach ioctl sequence with standard heap grooming.\nPR:L - An unprivileged local account that has been granted device-passthrough access \u2014 the normal configuration for a QEMU/libvirt VM user on a virtualization host, where `/dev/iommu` (mode 0660) and the VFIO device nodes are group-accessible \u2014 can perform every required ioctl; no CAP_SYS_ADMIN or root in the init namespace is needed.\nUI:N - The entire sequence (bind device, attach to IOAS, attach to the returned hw_pagetable, detach, re-enumerate) is issued by the attacker\u0027s own process. No victim action or interaction is required.\nS:C - iommufd is the control plane for IOMMU/DMA isolation, and the corruption lets a device end up attached to a freed or attacker-shaped `iommu_domain` via `iommufd_device_do_attach()` \u2192 `iommu_attach_group(hwpt-\u003edomain, ...)`, defeating the DMA translation boundary that protects host memory from the passthrough device and the guest that owns it.\nC:H - After `list_del()` leaves `ioas-\u003ehwpt_list.next` dangling at the freed hwpt, every later list walk reads a use-after-free `struct iommufd_hw_pagetable`; since that object is a sprayable `kzalloc(GFP_KERNEL_ACCOUNT)` allocation, the attacker gains a read primitive over reclaimed kernel memory, and a bogus `hwpt-\u003edomain` additionally exposes host memory to device DMA.\nI:H - The corrupted list yields both a write primitive (a later `list_add_tail` stores kernel pointers into the reclaimed allocation) and an indirect call through `hwpt-\u003edomain-\u003eops-\u003eenforce_cache_coherency()` on freed, attacker-controlled memory, which is a control-flow hijack and full kernel-integrity compromise.\nA:H - The self-referential node makes `list_for_each_entry()` in `iommufd_device_auto_get_domain()` and `iommufd_vfio_cc_iommu()` never terminate while holding `ioas-\u003emutex`, producing an unkillable soft lockup and a permanently wedged mutex, and the use-after-free independently causes oopses and panics."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:16:43.725Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/c44adefdcf472f946f0632f4e0ddcbf3e00b8516"
        },
        {
          "url": "https://git.kernel.org/stable/c/b4ff830eca097df51af10a9be29e8cc817327919"
        }
      ],
      "title": "iommufd: Do not add the same hwpt to the ioas-\u003ehwpt_list twice",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-54043",
    "datePublished": "2025-12-24T12:22:55.392Z",
    "dateReserved": "2025-12-24T10:53:46.181Z",
    "dateUpdated": "2026-08-05T09:16:43.725Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2023-54043",
      "date": "2026-09-14",
      "epss": "0.00179",
      "percentile": "0.07582"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2023-54043\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-24T13:16:05.930\",\"lastModified\":\"2026-08-04T10:19:26.213\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\niommufd: Do not add the same hwpt to the ioas-\u003ehwpt_list twice\\n\\nThe hwpt is added to the hwpt_list only during its creation, it is never\\nadded again. This hunk is some missed leftover from rework. Adding it\\ntwice will corrupt the linked list in some cases.\\n\\nIt effects HWPT specific attachment, which is something the test suite\\ncannot cover until we can create a legitimate struct device with a\\nnon-system iommu \\\"driver\\\" (ie we need the bus removed from the iommu code)\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/iommu/iommufd/device.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"e8d57210035b6377d424ba964961892d01127cf6\",\"lessThan\":\"c44adefdcf472f946f0632f4e0ddcbf3e00b8516\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"e8d57210035b6377d424ba964961892d01127cf6\",\"lessThan\":\"b4ff830eca097df51af10a9be29e8cc817327919\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/iommu/iommufd/device.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.2\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.2\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.2.3\",\"lessThanOrEqual\":\"6.2.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.3\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H\",\"baseScore\":8.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.0,\"impactScore\":6.0}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/b4ff830eca097df51af10a9be29e8cc817327919\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/c44adefdcf472f946f0632f4e0ddcbf3e00b8516\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:53:52+00:00",
      "cve": "CVE-2023-54043",
      "id": "CVE-2023-54043",
      "initial_release_date": "2023-01-01T00:00:00+00:00",
      "product_status:known_affected": "108",
      "product_status:known_not_affected": "166",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: iommufd: Do not add the same hwpt to the ioas-\u003ehwpt_list twice",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2023/cve-2023-54043.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…