CVE-2025-40155 (GCVE-0-2025-40155)

Vulnerability from cvelistv5 – Published: 2025-11-12 10:23 – Updated: 2026-08-05 12:08
VLAI
Title
iommu/vt-d: debugfs: Fix legacy mode page table dump logic
Summary
In the Linux kernel, the following vulnerability has been resolved: iommu/vt-d: debugfs: Fix legacy mode page table dump logic In legacy mode, SSPTPTR is ignored if TT is not 00b or 01b. SSPTPTR maybe uninitialized or zero in that case and may cause oops like: Oops: general protection fault, probably for non-canonical address 0xf00087d3f000f000: 0000 [#1] SMP NOPTI CPU: 2 UID: 0 PID: 786 Comm: cat Not tainted 6.16.0 #191 PREEMPT(voluntary) Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-5.fc42 04/01/2014 RIP: 0010:pgtable_walk_level+0x98/0x150 RSP: 0018:ffffc90000f279c0 EFLAGS: 00010206 RAX: 0000000040000000 RBX: ffffc90000f27ab0 RCX: 000000000000001e RDX: 0000000000000003 RSI: f00087d3f000f000 RDI: f00087d3f0010000 RBP: ffffc90000f27a00 R08: ffffc90000f27a98 R09: 0000000000000002 R10: 0000000000000000 R11: 0000000000000000 R12: f00087d3f000f000 R13: 0000000000000000 R14: 0000000040000000 R15: ffffc90000f27a98 FS: 0000764566dcb740(0000) GS:ffff8881f812c000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000764566d44000 CR3: 0000000109d81003 CR4: 0000000000772ef0 PKRU: 55555554 Call Trace: <TASK> pgtable_walk_level+0x88/0x150 domain_translation_struct_show.isra.0+0x2d9/0x300 dev_domain_translation_struct_show+0x20/0x40 seq_read_iter+0x12d/0x490 ... Avoid walking the page table if TT is not 00b or 01b.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 2b437e80456654df3980706384065d444f4bb54d , < d8cf7b59c49f9118fa875462e18686cb6b131bb5 (git)
Affected: 2b437e80456654df3980706384065d444f4bb54d , < df2bf759a0bdb71f13e327d7527260d09facc055 (git)
Affected: 2b437e80456654df3980706384065d444f4bb54d , < fbe6070c73badca726e4ff7877320e6c62339917 (git)
Create a notification for this product.
Linux Linux Affected: 6.7
Unaffected: 0 , < 6.7 (semver)
Unaffected: 6.12.53 , ≤ 6.12.* (semver)
Unaffected: 6.17.3 , ≤ 6.17.* (semver)
Unaffected: 6.18 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/intel/debugfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "d8cf7b59c49f9118fa875462e18686cb6b131bb5",
              "status": "affected",
              "version": "2b437e80456654df3980706384065d444f4bb54d",
              "versionType": "git"
            },
            {
              "lessThan": "df2bf759a0bdb71f13e327d7527260d09facc055",
              "status": "affected",
              "version": "2b437e80456654df3980706384065d444f4bb54d",
              "versionType": "git"
            },
            {
              "lessThan": "fbe6070c73badca726e4ff7877320e6c62339917",
              "status": "affected",
              "version": "2b437e80456654df3980706384065d444f4bb54d",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/iommu/intel/debugfs.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.7"
            },
            {
              "lessThan": "6.7",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.17.*",
              "status": "unaffected",
              "version": "6.17.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.53",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17.3",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18",
                  "versionStartIncluding": "6.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\niommu/vt-d: debugfs: Fix legacy mode page table dump logic\n\nIn legacy mode, SSPTPTR is ignored if TT is not 00b or 01b. SSPTPTR\nmaybe uninitialized or zero in that case and may cause oops like:\n\n Oops: general protection fault, probably for non-canonical address\n       0xf00087d3f000f000: 0000 [#1] SMP NOPTI\n CPU: 2 UID: 0 PID: 786 Comm: cat Not tainted 6.16.0 #191 PREEMPT(voluntary)\n Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-5.fc42 04/01/2014\n RIP: 0010:pgtable_walk_level+0x98/0x150\n RSP: 0018:ffffc90000f279c0 EFLAGS: 00010206\n RAX: 0000000040000000 RBX: ffffc90000f27ab0 RCX: 000000000000001e\n RDX: 0000000000000003 RSI: f00087d3f000f000 RDI: f00087d3f0010000\n RBP: ffffc90000f27a00 R08: ffffc90000f27a98 R09: 0000000000000002\n R10: 0000000000000000 R11: 0000000000000000 R12: f00087d3f000f000\n R13: 0000000000000000 R14: 0000000040000000 R15: ffffc90000f27a98\n FS:  0000764566dcb740(0000) GS:ffff8881f812c000(0000) knlGS:0000000000000000\n CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n CR2: 0000764566d44000 CR3: 0000000109d81003 CR4: 0000000000772ef0\n PKRU: 55555554\n Call Trace:\n  \u003cTASK\u003e\n  pgtable_walk_level+0x88/0x150\n  domain_translation_struct_show.isra.0+0x2d9/0x300\n  dev_domain_translation_struct_show+0x20/0x40\n  seq_read_iter+0x12d/0x490\n...\n\nAvoid walking the page table if TT is not 00b or 01b."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.3,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The only path into `domain_translation_struct_show()` is a local `read()` on the debugfs node `/sys/kernel/debug/iommu/intel/\u003cdev\u003e/domain_translation_struct`; the function has no other caller and no network, adjacent-radio, or peripheral-originated input reaches it.\nAC:L - Once a device\u0027s context entry uses TT=`CONTEXT_TT_PASS_THROUGH` \u2014 the routine state produced by `iommu=pt` or an identity domain \u2014 a single `cat` deterministically walks an unprogrammed SSPTPTR, with no race to win, no timing window, and no memory-layout requirement the attacker must influence.\nPR:L - The file is created world-readable (mode 0444) under 0755 directories with no capability check on the path, so any unprivileged local user reaches it on the debug/development, industrial and embedded x86 deployments that mount debugfs traversable (`mode=755` or uid/gid options) \u2014 which is precisely the class of system on which `CONFIG_INTEL_IOMMU_DEBUGFS` is enabled in the first place.\nUI:N - The attacker triggers the fault entirely inside their own `read()` on the debugfs file; no other user or process must mount, open, or configure anything.\nS:U - The bogus walk and the resulting oops stay wholly inside the host kernel\u0027s own security authority \u2014 this is a kernel-side dump of page tables, not a bypass of DMA/IOMMU isolation, and no VM, hypervisor, or sandbox boundary is crossed.\nC:H - With SSPTPTR unset, `pgtable_walk_level()` reads 512 raw 64-bit words per level from `phys_to_virt()` of unvalidated physical addresses and `dump_page_info()` prints those words verbatim into the reader\u0027s seq_file, and each \"present\" word steers the recursion to a further arbitrary 52-bit physical address \u2014 an unbounded out-of-bounds read of kernel physical memory disclosed straight to userspace.\nI:L - The path performs no out-of-bounds write, use-after-free, or type confusion and so builds no control-flow primitive, but the unvalidated `phys_to_virt()` reads can land on memory-mapped device registers that are mapped in the x86-64 direct map below `max_pfn`, where a read has side effects such as clearing status bits.\nA:H - Following a garbage physical address produces an immediate general protection fault in `pgtable_walk_level()`, killing the reader and escalating to a full panic under `panic_on_oops`; worse, the fault occurs while `iommu-\u003elock` is held, so the spinlock is never released and every later domain attach/detach or context-mapping operation on that DMAR unit deadlocks."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:08:07.016Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/d8cf7b59c49f9118fa875462e18686cb6b131bb5"
        },
        {
          "url": "https://git.kernel.org/stable/c/df2bf759a0bdb71f13e327d7527260d09facc055"
        },
        {
          "url": "https://git.kernel.org/stable/c/fbe6070c73badca726e4ff7877320e6c62339917"
        }
      ],
      "title": "iommu/vt-d: debugfs: Fix legacy mode page table dump logic",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-40155",
    "datePublished": "2025-11-12T10:23:28.718Z",
    "dateReserved": "2025-04-16T07:20:57.176Z",
    "dateUpdated": "2026-08-05T12:08:07.016Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-40155",
      "date": "2026-08-06",
      "epss": "0.00172",
      "percentile": "0.06761"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-40155\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-11-12T11:15:45.490\",\"lastModified\":\"2026-07-30T06:24:14.087\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\niommu/vt-d: debugfs: Fix legacy mode page table dump logic\\n\\nIn legacy mode, SSPTPTR is ignored if TT is not 00b or 01b. SSPTPTR\\nmaybe uninitialized or zero in that case and may cause oops like:\\n\\n Oops: general protection fault, probably for non-canonical address\\n       0xf00087d3f000f000: 0000 [#1] SMP NOPTI\\n CPU: 2 UID: 0 PID: 786 Comm: cat Not tainted 6.16.0 #191 PREEMPT(voluntary)\\n Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-5.fc42 04/01/2014\\n RIP: 0010:pgtable_walk_level+0x98/0x150\\n RSP: 0018:ffffc90000f279c0 EFLAGS: 00010206\\n RAX: 0000000040000000 RBX: ffffc90000f27ab0 RCX: 000000000000001e\\n RDX: 0000000000000003 RSI: f00087d3f000f000 RDI: f00087d3f0010000\\n RBP: ffffc90000f27a00 R08: ffffc90000f27a98 R09: 0000000000000002\\n R10: 0000000000000000 R11: 0000000000000000 R12: f00087d3f000f000\\n R13: 0000000000000000 R14: 0000000040000000 R15: ffffc90000f27a98\\n FS:  0000764566dcb740(0000) GS:ffff8881f812c000(0000) knlGS:0000000000000000\\n CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\\n CR2: 0000764566d44000 CR3: 0000000109d81003 CR4: 0000000000772ef0\\n PKRU: 55555554\\n Call Trace:\\n  \u003cTASK\u003e\\n  pgtable_walk_level+0x88/0x150\\n  domain_translation_struct_show.isra.0+0x2d9/0x300\\n  dev_domain_translation_struct_show+0x20/0x40\\n  seq_read_iter+0x12d/0x490\\n...\\n\\nAvoid walking the page table if TT is not 00b or 01b.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/iommu/intel/debugfs.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"2b437e80456654df3980706384065d444f4bb54d\",\"lessThan\":\"d8cf7b59c49f9118fa875462e18686cb6b131bb5\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"2b437e80456654df3980706384065d444f4bb54d\",\"lessThan\":\"df2bf759a0bdb71f13e327d7527260d09facc055\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"2b437e80456654df3980706384065d444f4bb54d\",\"lessThan\":\"fbe6070c73badca726e4ff7877320e6c62339917\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/iommu/intel/debugfs.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.7\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.7\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.53\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.17.3\",\"lessThanOrEqual\":\"6.17.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18\",\"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:U/C:H/I:L/A:H\",\"baseScore\":7.3,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.5}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/d8cf7b59c49f9118fa875462e18686cb6b131bb5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/df2bf759a0bdb71f13e327d7527260d09facc055\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fbe6070c73badca726e4ff7877320e6c62339917\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-07-30T08:48:05+00:00",
      "cve": "CVE-2025-40155",
      "id": "CVE-2025-40155",
      "initial_release_date": "2025-11-12T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: iommu/vt-d: debugfs: Fix legacy mode page table dump logic",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-40155.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-25T00:34:41Z",
      "cve": "CVE-2025-40155",
      "id": "CVE-2025-40155",
      "initial_release_date": "2025-11-14T00:24:47Z",
      "product_status:known_not_affected": "431",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-40155",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-40155.json",
      "version": "16"
    }
  }
}



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…