FKIE_CVE-2025-71089
Vulnerability from fkie_nvd - Published: 2026-01-13 16:16 - Updated: 2026-04-02 09:16
Severity ?
7.8 (High) - CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
7.8 (High) - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
7.8 (High) - CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Summary
In the Linux kernel, the following vulnerability has been resolved:
iommu: disable SVA when CONFIG_X86 is set
Patch series "Fix stale IOTLB entries for kernel address space", v7.
This proposes a fix for a security vulnerability related to IOMMU Shared
Virtual Addressing (SVA). In an SVA context, an IOMMU can cache kernel
page table entries. When a kernel page table page is freed and
reallocated for another purpose, the IOMMU might still hold stale,
incorrect entries. This can be exploited to cause a use-after-free or
write-after-free condition, potentially leading to privilege escalation or
data corruption.
This solution introduces a deferred freeing mechanism for kernel page
table pages, which provides a safe window to notify the IOMMU to
invalidate its caches before the page is reused.
This patch (of 8):
In the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware
shares and walks the CPU's page tables. The x86 architecture maps the
kernel's virtual address space into the upper portion of every process's
page table. Consequently, in an SVA context, the IOMMU hardware can walk
and cache kernel page table entries.
The Linux kernel currently lacks a notification mechanism for kernel page
table changes, specifically when page table pages are freed and reused.
The IOMMU driver is only notified of changes to user virtual address
mappings. This can cause the IOMMU's internal caches to retain stale
entries for kernel VA.
Use-After-Free (UAF) and Write-After-Free (WAF) conditions arise when
kernel page table pages are freed and later reallocated. The IOMMU could
misinterpret the new data as valid page table entries. The IOMMU might
then walk into attacker-controlled memory, leading to arbitrary physical
memory DMA access or privilege escalation. This is also a
Write-After-Free issue, as the IOMMU will potentially continue to write
Accessed and Dirty bits to the freed memory while attempting to walk the
stale page tables.
Currently, SVA contexts are unprivileged and cannot access kernel
mappings. However, the IOMMU will still walk kernel-only page tables all
the way down to the leaf entries, where it realizes the mapping is for the
kernel and errors out. This means the IOMMU still caches these
intermediate page table entries, making the described vulnerability a real
concern.
Disable SVA on x86 architecture until the IOMMU can receive notification
to flush the paging cache before freeing the CPU kernel page table pages.
References
Impacted products
| Vendor | Product | Version | |
|---|---|---|---|
| linux | linux_kernel | * | |
| linux | linux_kernel | * | |
| linux | linux_kernel | * | |
| linux | linux_kernel | * | |
| linux | linux_kernel | * |
{
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "E5B74AED-8F4D-46D6-9567-2309ADEA5E74",
"versionEndExcluding": "5.15.200",
"versionStartIncluding": "5.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "E9C856E1-4308-4C0B-A973-7DD375DF66C4",
"versionEndExcluding": "6.1.163",
"versionStartIncluding": "5.16",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "43C3A206-5EEE-417B-AA0F-EF8972E7A9F0",
"versionEndExcluding": "6.6.120",
"versionStartIncluding": "6.2",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "32BF4A52-377C-44ED-B5E6-7EA5D896E98B",
"versionEndExcluding": "6.12.64",
"versionStartIncluding": "6.7",
"vulnerable": true
},
{
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"matchCriteriaId": "DC988EA0-0E32-457A-BF95-89BEB31A227B",
"versionEndExcluding": "6.18.4",
"versionStartIncluding": "6.13",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu: disable SVA when CONFIG_X86 is set\n\nPatch series \"Fix stale IOTLB entries for kernel address space\", v7.\n\nThis proposes a fix for a security vulnerability related to IOMMU Shared\nVirtual Addressing (SVA). In an SVA context, an IOMMU can cache kernel\npage table entries. When a kernel page table page is freed and\nreallocated for another purpose, the IOMMU might still hold stale,\nincorrect entries. This can be exploited to cause a use-after-free or\nwrite-after-free condition, potentially leading to privilege escalation or\ndata corruption.\n\nThis solution introduces a deferred freeing mechanism for kernel page\ntable pages, which provides a safe window to notify the IOMMU to\ninvalidate its caches before the page is reused.\n\n\nThis patch (of 8):\n\nIn the IOMMU Shared Virtual Addressing (SVA) context, the IOMMU hardware\nshares and walks the CPU\u0027s page tables. The x86 architecture maps the\nkernel\u0027s virtual address space into the upper portion of every process\u0027s\npage table. Consequently, in an SVA context, the IOMMU hardware can walk\nand cache kernel page table entries.\n\nThe Linux kernel currently lacks a notification mechanism for kernel page\ntable changes, specifically when page table pages are freed and reused. \nThe IOMMU driver is only notified of changes to user virtual address\nmappings. This can cause the IOMMU\u0027s internal caches to retain stale\nentries for kernel VA.\n\nUse-After-Free (UAF) and Write-After-Free (WAF) conditions arise when\nkernel page table pages are freed and later reallocated. The IOMMU could\nmisinterpret the new data as valid page table entries. The IOMMU might\nthen walk into attacker-controlled memory, leading to arbitrary physical\nmemory DMA access or privilege escalation. This is also a\nWrite-After-Free issue, as the IOMMU will potentially continue to write\nAccessed and Dirty bits to the freed memory while attempting to walk the\nstale page tables.\n\nCurrently, SVA contexts are unprivileged and cannot access kernel\nmappings. However, the IOMMU will still walk kernel-only page tables all\nthe way down to the leaf entries, where it realizes the mapping is for the\nkernel and errors out. This means the IOMMU still caches these\nintermediate page table entries, making the described vulnerability a real\nconcern.\n\nDisable SVA on x86 architecture until the IOMMU can receive notification\nto flush the paging cache before freeing the CPU kernel page table pages."
},
{
"lang": "es",
"value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\niommu: deshabilitar SVA cuando CONFIG_X86 est\u00e1 configurado\n\nSerie de parches \u0027Correcci\u00f3n de entradas IOTLB obsoletas para el espacio de direcciones del kernel\u0027, v7.\n\nEsto propone una correcci\u00f3n para una vulnerabilidad de seguridad relacionada con el Direccionamiento Virtual Compartido (SVA) de IOMMU. En un contexto SVA, un IOMMU puede almacenar en cach\u00e9 entradas de la tabla de p\u00e1ginas del kernel. Cuando una p\u00e1gina de la tabla de p\u00e1ginas del kernel es liberada y reasignada para otro prop\u00f3sito, el IOMMU a\u00fan podr\u00eda contener entradas obsoletas e incorrectas. Esto puede ser explotado para causar una condici\u00f3n de uso despu\u00e9s de liberaci\u00f3n o de escritura despu\u00e9s de liberaci\u00f3n, lo que podr\u00eda llevar a una escalada de privilegios o a la corrupci\u00f3n de datos.\n\nEsta soluci\u00f3n introduce un mecanismo de liberaci\u00f3n diferida para las p\u00e1ginas de la tabla de p\u00e1ginas del kernel, que proporciona una ventana segura para notificar al IOMMU que invalide sus cach\u00e9s antes de que la p\u00e1gina sea reutilizada.\n\nEste parche (de 8):\n\nEn el contexto de Direccionamiento Virtual Compartido (SVA) de IOMMU, el hardware IOMMU comparte y recorre las tablas de p\u00e1ginas de la CPU. La arquitectura x86 mapea el espacio de direcciones virtual del kernel en la porci\u00f3n superior de la tabla de p\u00e1ginas de cada proceso. En consecuencia, en un contexto SVA, el hardware IOMMU puede recorrer y almacenar en cach\u00e9 entradas de la tabla de p\u00e1ginas del kernel.\n\nEl kernel de Linux actualmente carece de un mecanismo de notificaci\u00f3n para los cambios en la tabla de p\u00e1ginas del kernel, espec\u00edficamente cuando las p\u00e1ginas de la tabla de p\u00e1ginas son liberadas y reutilizadas. El controlador IOMMU solo es notificado de los cambios en las asignaciones de direcciones virtuales de usuario. Esto puede hacer que las cach\u00e9s internas del IOMMU retengan entradas obsoletas para VA del kernel.\n\nLas condiciones de Uso Despu\u00e9s de Liberaci\u00f3n (UAF) y Escritura Despu\u00e9s de Liberaci\u00f3n (WAF) surgen cuando las p\u00e1ginas de la tabla de p\u00e1ginas del kernel son liberadas y posteriormente reasignadas. El IOMMU podr\u00eda malinterpretar los nuevos datos como entradas v\u00e1lidas de la tabla de p\u00e1ginas. El IOMMU podr\u00eda entonces recorrer memoria controlada por el atacante, lo que llevar\u00eda a un acceso DMA arbitrario a la memoria f\u00edsica o a una escalada de privilegios. Esto tambi\u00e9n es un problema de Escritura Despu\u00e9s de Liberaci\u00f3n, ya que el IOMMU potencialmente continuar\u00e1 escribiendo bits de Acceso y Sucio en la memoria liberada mientras intenta recorrer las tablas de p\u00e1ginas obsoletas.\n\nActualmente, los contextos SVA no tienen privilegios y no pueden acceder a las asignaciones del kernel. Sin embargo, el IOMMU seguir\u00e1 recorriendo tablas de p\u00e1ginas solo del kernel hasta las entradas hoja, donde se da cuenta de que la asignaci\u00f3n es para el kernel y produce un error. Esto significa que el IOMMU a\u00fan almacena en cach\u00e9 estas entradas intermedias de la tabla de p\u00e1ginas, lo que convierte la vulnerabilidad descrita en una preocupaci\u00f3n real.\n\nDeshabilitar SVA en la arquitectura x86 hasta que el IOMMU pueda recibir notificaci\u00f3n para vaciar la cach\u00e9 de paginaci\u00f3n antes de liberar las p\u00e1ginas de la tabla de p\u00e1ginas del kernel de la CPU."
}
],
"id": "CVE-2025-71089",
"lastModified": "2026-04-02T09:16:20.120",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "HIGH",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 1.1,
"impactScore": 6.0,
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"type": "Secondary"
},
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "LOCAL",
"availabilityImpact": "HIGH",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"privilegesRequired": "LOW",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"version": "3.1"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9,
"source": "nvd@nist.gov",
"type": "Primary"
}
]
},
"published": "2026-01-13T16:16:08.583",
"references": [
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/240cd7f2812cc25496b12063d11c823618f364e9"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/72f98ef9a4be30d2a60136dd6faee376f780d06c"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/7cad37e358970af1bb49030ff01f06a69fa7d985"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/b34289505180a83607fcfdce14b5a290d0528476"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/c2c3f1a3fd74ef16cf115f0c558616a13a8471b4"
},
{
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
],
"url": "https://git.kernel.org/stable/c/c341dee80b5df49a936182341b36395c831c2661"
}
],
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"vulnStatus": "Modified",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "NVD-CWE-noinfo"
}
],
"source": "nvd@nist.gov",
"type": "Primary"
}
]
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
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…
Loading…