{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-22044", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2024-12-29T08:45:45.810Z", "datePublished": "2025-04-16T14:12:05.199Z", "dateUpdated": "2026-08-05T11:56:17.500Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T11:56:17.500Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nacpi: nfit: fix narrowing conversion in acpi_nfit_ctl\n\nSyzkaller has reported a warning in to_nfit_bus_uuid(): \"only secondary\nbus families can be translated\". This warning is emited if the argument\nis equal to NVDIMM_BUS_FAMILY_NFIT == 0. Function acpi_nfit_ctl() first\nverifies that a user-provided value call_pkg->nd_family of type u64 is\nnot equal to 0. Then the value is converted to int, and only after that\nis compared to NVDIMM_BUS_FAMILY_MAX. This can lead to passing an invalid\nargument to acpi_nfit_ctl(), if call_pkg->nd_family is non-zero, while\nthe lower 32 bits are zero.\n\nFurthermore, it is best to return EINVAL immediately upon seeing the\ninvalid user input. The WARNING is insufficient to prevent further\nundefined behavior based on other invalid user input.\n\nAll checks of the input value should be applied to the original variable\ncall_pkg->nd_family.\n\n[iweiny: update commit message]" } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H", "baseScore": 7.1, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The vulnerability is reached only through an `ioctl(ND_CMD_CALL)` on the local libnvdimm character device `/dev/ndctl0`, which requires local system access. There is no network-facing consumer of `acpi_nfit_ctl()`.\nAC:L - Reaching the narrowing bug requires defeating the `bus.c` pre-validation via the double-fetch between the two `copy_from_user()` calls in `__nd_ioctl()`, but the attacker owns both sides of that race — the user page and the racing thread — and can make the second fetch deterministic with userfaultfd or a FUSE-backed mapping. NFIT/NVDIMM presence is a standard configuration on persistent-memory servers and QEMU nvdimm guests.\nPR:L - No `capable()` or credential check exists anywhere on the path — `nd_ioctl()`, `__nd_ioctl()`, `nd_cmd_clear_to_send()` and `acpi_nfit_ctl()` gate solely on the device node's file permissions and the `O_RDWR` open. Any local account granted access to `/dev/ndctl*` (storage/management group ACLs, or a container handed the device) can drive the full path, so this is an authorized-local-user bug rather than one demanding init-namespace root capabilities.\nUI:N - The attacker triggers everything from their own threads via ioctl and a self-managed racing write; no victim action, mount, or file open is needed.\nS:U - The out-of-bounds read and the WARN both occur within the kernel's own security authority, with no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - A negative narrowed `family` makes `test_bit(family, &nd_desc->bus_family_mask)` read far outside the one-word bitmap at an attacker-chosen offset spanning roughly 256 MB of kernel memory below the object, and the resulting bit is leaked back through the distinguishable `-EINVAL` vs `-ENOTTY` return. This is an unbounded-window OOB read usable to defeat KASLR and progressively disclose kernel heap contents, not a read strictly bounded to a few bytes.\nI:N - Every consequence of the bad `family` value is a read or an early error return; `guid` is set to NULL but never dereferenced, `array_index_nospec()` clamps the later array index to 0, and no attacker-influenced write to kernel memory occurs.\nA:H - The path hits `WARN_ONCE()` in `to_nfit_bus_uuid()`, which is an immediate kernel panic on the many hardened, Android, and cloud configurations that set `panic_on_warn=1`. Additionally, the wild `bt`-based bitmap access at a large negative offset can land on an unmapped hole and fault, producing an oops." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "drivers/acpi/nfit/core.c" ], "versions": [ { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "4b65cff06a004ac54f6ea8886060f0d07b1ca055", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "92ba06aef65522483784dcbd6697629ddbd4c4f9", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "bae5b55e0f327102e78f6a66fb127275e9bc91b6", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "c90402d2a226ff7afbe1d0650bee8ecc15a91049", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "e71a57c5aaa389d4c3c82f920761262efdd18d38", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "73851cfceb00cc77d7a0851bc10f2263394c3e87", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "85f11291658ab907c4294319c8102450cc75bb96", "status": "affected", "versionType": "git" }, { "version": "6450ddbd5d8e83ea9927c7f9076a21f829699e0f", "lessThan": "2ff0e408db36c21ed3fa5e3c1e0e687c82cf132f", "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/acpi/nfit/core.c" ], "versions": [ { "version": "5.9", "status": "affected" }, { "version": "0", "lessThan": "5.9", "status": "unaffected", "versionType": "semver" }, { "version": "5.10.236", "lessThanOrEqual": "5.10.*", "status": "unaffected", "versionType": "semver" }, { "version": "5.15.180", "lessThanOrEqual": "5.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.134", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.87", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.23", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.13.11", "lessThanOrEqual": "6.13.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.14.2", "lessThanOrEqual": "6.14.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.15", "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": "5.9", "versionEndExcluding": "5.10.236" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "5.15.180" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.1.134" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.6.87" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.12.23" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.13.11" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.14.2" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.9", "versionEndExcluding": "6.15" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/4b65cff06a004ac54f6ea8886060f0d07b1ca055" }, { "url": "https://git.kernel.org/stable/c/92ba06aef65522483784dcbd6697629ddbd4c4f9" }, { "url": "https://git.kernel.org/stable/c/bae5b55e0f327102e78f6a66fb127275e9bc91b6" }, { "url": "https://git.kernel.org/stable/c/c90402d2a226ff7afbe1d0650bee8ecc15a91049" }, { "url": "https://git.kernel.org/stable/c/e71a57c5aaa389d4c3c82f920761262efdd18d38" }, { "url": "https://git.kernel.org/stable/c/73851cfceb00cc77d7a0851bc10f2263394c3e87" }, { "url": "https://git.kernel.org/stable/c/85f11291658ab907c4294319c8102450cc75bb96" }, { "url": "https://git.kernel.org/stable/c/2ff0e408db36c21ed3fa5e3c1e0e687c82cf132f" } ], "title": "acpi: nfit: fix narrowing conversion in acpi_nfit_ctl", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/05/msg00045.html" }, { "url": "https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T19:41:27.322Z" } } ] } }