{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2024-53232", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-11-19T17:17:25.025Z", "datePublished": "2024-12-27T13:50:19.551Z", "dateUpdated": "2026-08-05T11:44:46.669Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:44:46.669Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/s390: Implement blocking domain\n\nThis fixes a crash when surprise hot-unplugging a PCI device. This crash\nhappens because during hot-unplug __iommu_group_set_domain_nofail()\nattaching the default domain fails when the platform no longer\nrecognizes the device as it has already been removed and we end up with\na NULL domain pointer and UAF. This is exactly the case referred to in\nthe second comment in __iommu_device_set_domain() and just as stated\nthere if we can instead attach the blocking domain the UAF is prevented\nas this can handle the already removed device. Implement the blocking\ndomain to use this handling. With this change, the crash is fixed but\nwe still hit a warning attempting to change DMA ownership on a blocked\ndevice." } ], "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 path is reached through local kernel interfaces — VFIO container/device release (`iommu_group_release_dma_owner`, `iommu_detach_group`) and the PCI device-removal path on an s390 host — with no network or physical-bus interaction required; s390 zPCI \"unplug\" is a firmware/hypervisor event, not a physical port operation.\nAC:L - Once the zPCI function is unavailable or in error state, `zpci_register_ioat()` fails deterministically and the attach error path is taken every time, leaving `zdev->s390_domain == NULL` and `group->domain` dangling; no race window or uncontrollable memory layout is needed.\nPR:L - In the realistic s390 passthrough deployment the attacker is the unprivileged VFIO/QEMU process holding `/dev/vfio/N`, which can drive the passed-through function into an error/reset state and then release the group, hitting the failing-attach path without any capability in the init namespace.\nUI:N - The whole sequence — device error/reset followed by DMA-ownership release or device teardown — is driven by the attacker's own file-descriptor operations; no administrator or victim action is required.\nS:U - The failing attach leaves DMA unregistered (`zpci_unregister_ioat()` already ran, `dma_table = NULL`), so no IOMMU/DMA boundary is bypassed; the corruption and crash are confined to the host kernel's own security authority.\nC:H - `group->domain` is left pointing at a domain the caller immediately frees, and later `__iommu_device_set_domain()`/`iommu_domain_free()` operate on it, giving a use-after-free on a slab object whose contents an attacker can groom and read back.\nI:H - The same dangling `struct iommu_domain` is written through on subsequent attach/free operations (list manipulation, `domain->ops` indirect calls), so heap spraying the freed object yields a write and control-flow-hijack primitive.\nA:H - `s390_iommu_release_device()` dereferences the NULL `zdev->s390_domain` in `spin_lock_irqsave(&s390_domain->list_lock)`, causing an immediate kernel panic, and the accompanying use-after-free crashes the host even when not weaponized." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/s390/include/asm/pci.h", "arch/s390/pci/pci.c", "arch/s390/pci/pci_debug.c", "drivers/iommu/s390-iommu.c" ], "versions": [ { "version": "c76c067e488ccd55734c3e750799caf2c5956db6", "lessThan": "3be34fa1cdbf180c1a948cfededfdf2cdc497199", "status": "affected", "versionType": "git" }, { "version": "c76c067e488ccd55734c3e750799caf2c5956db6", "lessThan": "bd89d94f3ea6fdaee983cbc69226a00b9bde6d59", "status": "affected", "versionType": "git" }, { "version": "c76c067e488ccd55734c3e750799caf2c5956db6", "lessThan": "ecda483339a5151e3ca30d6b82691ef6f1d17912", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/s390/include/asm/pci.h", "arch/s390/pci/pci.c", "arch/s390/pci/pci_debug.c", "drivers/iommu/s390-iommu.c" ], "versions": [ { "version": "6.7", "status": "affected" }, { "version": "0", "lessThan": "6.7", "status": "unaffected", "versionType": "semver" }, { "version": "6.11.11", "lessThanOrEqual": "6.11.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.2", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.13", "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.7", "versionEndExcluding": "6.11.11" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "6.12.2" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "6.13" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/3be34fa1cdbf180c1a948cfededfdf2cdc497199" }, { "url": "https://git.kernel.org/stable/c/bd89d94f3ea6fdaee983cbc69226a00b9bde6d59" }, { "url": "https://git.kernel.org/stable/c/ecda483339a5151e3ca30d6b82691ef6f1d17912" } ], "title": "iommu/s390: Implement blocking domain", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "metrics": [ { "cvssV3_1": { "scope": "UNCHANGED", "version": "3.1", "baseScore": 7.8, "attackVector": "LOCAL", "baseSeverity": "HIGH", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "integrityImpact": "HIGH", "userInteraction": "NONE", "attackComplexity": "LOW", "availabilityImpact": "HIGH", "privilegesRequired": "LOW", "confidentialityImpact": "HIGH" } }, { "other": { "type": "ssvc", "content": { "id": "CVE-2024-53232", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "total" } ], "version": "2.0.3", "timestamp": "2025-02-10T17:12:56.688366Z" } } } ], "problemTypes": [ { "descriptions": [ { "lang": "en", "type": "CWE", "cweId": "CWE-416", "description": "CWE-416 Use After Free" } ] } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2025-02-10T17:21:08.938Z" } } ] } }