CVE-2026-98283 (GCVE-0-2026-98283)

Vulnerability from cvelistv5 – Published: 2026-10-06 08:45 – Updated: 2026-10-07 06:49
VLAI
Title
KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid() kvmhv_emulate_tlbie_all_lpid() iterates the nested-guest IDR and drops mmu_lock before calling kvmhv_emulate_tlbie_lpid(), but does not hold a reference on the kvm_nested_guest pointer obtained from the IDR. A concurrent vCPU issuing a single-LPID tlbie (is=2, ric=2) can race through kvmhv_flush_nested() -> kvmhv_remove_nested() -> idr_remove / --refcnt -> kvmhv_release_nested() -> kfree(gp) in that window, leaving the iterating vCPU with a dangling pointer. The subsequent mutex_lock(&gp->tlb_lock) and accesses to gp->shadow_pgtable, gp->shadow_lpid and gp->l1_host all touch freed memory. The free path is fully L1-controlled. Fix this by incrementing gp->refcnt inside the loop before dropping mmu_lock, mirroring what kvmhv_get_nested() does, and releasing the reference with kvmhv_put_nested() after the per-guest work completes. This is the same get/put discipline already used at every other call site that drops mmu_lock while holding a nested-guest pointer.
Assigner
Linux CNA under the mitre root
CNA scorecard D 54/100 over 6633 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < 4d8f7b1f586375df8bce23a0909566ad5e852259 (git)
Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < e37fba1ba69385cff2d0e60b371ee19e7d1852d1 (git)
Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < 24b634852413229bb8340d908b115c3365f3a247 (git)
Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < fbf69b7d0555ee83c871f58750770f74b7179ad1 (git)
Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < ec2d7a52b3996ae81131617b4afc0af31583c1b4 (git)
Affected: e3b6b4661527e821ffbe3db83952fdb1e6e47c49 , < 51938dfa8a51a4f85328413fca9b6e21f9d2d088 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.20
Unaffected: 0 , < 4.20 (semver)
Unaffected: 6.1.189 , ≤ 6.1.* (semver)
Unaffected: 6.6.158 , ≤ 6.6.* (semver)
Unaffected: 6.12.112 , ≤ 6.12.* (semver)
Unaffected: 6.18.54 , ≤ 6.18.* (semver)
Unaffected: 7.2.8 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc4 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/powerpc/kvm/book3s_hv_nested.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4d8f7b1f586375df8bce23a0909566ad5e852259",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            },
            {
              "lessThan": "e37fba1ba69385cff2d0e60b371ee19e7d1852d1",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            },
            {
              "lessThan": "24b634852413229bb8340d908b115c3365f3a247",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            },
            {
              "lessThan": "fbf69b7d0555ee83c871f58750770f74b7179ad1",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            },
            {
              "lessThan": "ec2d7a52b3996ae81131617b4afc0af31583c1b4",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            },
            {
              "lessThan": "51938dfa8a51a4f85328413fca9b6e21f9d2d088",
              "status": "affected",
              "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/powerpc/kvm/book3s_hv_nested.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.20"
            },
            {
              "lessThan": "4.20",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.189",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.158",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.54",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.189",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.158",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.54",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.8",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc4",
                  "versionStartIncluding": "4.20",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()\n\nkvmhv_emulate_tlbie_all_lpid() iterates the nested-guest IDR and drops\nmmu_lock before calling kvmhv_emulate_tlbie_lpid(), but does not hold a\nreference on the kvm_nested_guest pointer obtained from the IDR.  A\nconcurrent vCPU issuing a single-LPID tlbie (is=2, ric=2) can race\nthrough kvmhv_flush_nested() -\u003e kvmhv_remove_nested() -\u003e idr_remove /\n--refcnt -\u003e kvmhv_release_nested() -\u003e kfree(gp) in that window, leaving\nthe iterating vCPU with a dangling pointer.  The subsequent\nmutex_lock(\u0026gp-\u003etlb_lock) and accesses to gp-\u003eshadow_pgtable,\ngp-\u003eshadow_lpid and gp-\u003el1_host all touch freed memory.  The free path\nis fully L1-controlled.\n\nFix this by incrementing gp-\u003erefcnt inside the loop before dropping\nmmu_lock, mirroring what kvmhv_get_nested() does, and releasing the\nreference with kvmhv_put_nested() after the per-guest work completes.\nThis is the same get/put discipline already used at every other\ncall site that drops mmu_lock while holding a nested-guest pointer."
        }
      ],
      "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 trigger is the H_TLB_INVALIDATE hcall made by code running inside an L1 guest on the POWER KVM-HV host, via kvmppc_pseries_do_hcall -\u003e kvmhv_do_nested_tlbie -\u003e kvmhv_emulate_priv_tlbie -\u003e kvmhv_emulate_tlbie_all_lpid. No network protocol carries the input; the attacker needs code execution in a local guest.\nAC:L - The L1 controls both sides of the race: one vCPU issues tlbie is=3 (all-LPID walk), another issues is=2 ric=2 after zeroing its own partition-table entry so kvmhv_flush_nested() calls kvmhv_remove_nested() and kfree(gp). Contention on gp-\u003etlb_lock widens the window and the attempt can be repeated. The only outside requirement is the VMM enabling KVM_CAP_PPC_NESTED_HV.\nPR:L - The attacker needs kernel/hypervisor-mode code in a nested-enabled L1 guest, which an ordinary tenant owns, but holds no privilege on the L0 host. The nesting_enabled() check is the only gate before kvmhv_do_nested_tlbie().\nUI:N - The L1 guest issues every hcall and controls every partition-table entry involved. No host operator or other user has to do anything.\nS:C - A guest-controlled vulnerability corrupts memory in the L0 host kernel (the kfree\u0027d kvm_nested_guest object), which crosses the guest-to-host boundary.\nC:H - After the free, kvmhv_emulate_tlbie_lpid() reads gp-\u003eshadow_pgtable, gp-\u003eshadow_lpid and gp-\u003el1_host from the dangling object. A reclaimed object lets the guest steer host page-table walks and host data reads.\nI:H - The freed gp is used for mutex_lock(\u0026gp-\u003etlb_lock), kvmppc_free_pgtable_radix() on gp-\u003eshadow_pgtable, and kvmhv_flush_nested()/kvmhv_put_nested() refcount writes. With a reclaimed object, these become host-kernel write and free primitives the guest controls.\nA:H - Using the freed kvm_nested_guest in the host can oops or panic the L0 host kernel, taking down every guest on the machine. The L1 can trigger it again at will."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-07T06:49:54.642Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4d8f7b1f586375df8bce23a0909566ad5e852259"
        },
        {
          "url": "https://git.kernel.org/stable/c/e37fba1ba69385cff2d0e60b371ee19e7d1852d1"
        },
        {
          "url": "https://git.kernel.org/stable/c/24b634852413229bb8340d908b115c3365f3a247"
        },
        {
          "url": "https://git.kernel.org/stable/c/fbf69b7d0555ee83c871f58750770f74b7179ad1"
        },
        {
          "url": "https://git.kernel.org/stable/c/ec2d7a52b3996ae81131617b4afc0af31583c1b4"
        },
        {
          "url": "https://git.kernel.org/stable/c/51938dfa8a51a4f85328413fca9b6e21f9d2d088"
        }
      ],
      "title": "KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98283",
    "datePublished": "2026-10-06T08:45:44.593Z",
    "dateReserved": "2026-09-25T10:25:14.335Z",
    "dateUpdated": "2026-10-07T06:49:54.642Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-98283",
      "date": "2026-10-08",
      "epss": "0.00135",
      "percentile": "0.02526"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "arch/powerpc/kvm/book3s_hv_nested.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "4d8f7b1f586375df8bce23a0909566ad5e852259",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e37fba1ba69385cff2d0e60b371ee19e7d1852d1",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "24b634852413229bb8340d908b115c3365f3a247",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "fbf69b7d0555ee83c871f58750770f74b7179ad1",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "ec2d7a52b3996ae81131617b4afc0af31583c1b4",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "51938dfa8a51a4f85328413fca9b6e21f9d2d088",
                    "status": "affected",
                    "version": "e3b6b4661527e821ffbe3db83952fdb1e6e47c49",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "arch/powerpc/kvm/book3s_hv_nested.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.20"
                  },
                  {
                    "lessThan": "4.20",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.189",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.158",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.112",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.54",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.8",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc4",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()\n\nkvmhv_emulate_tlbie_all_lpid() iterates the nested-guest IDR and drops\nmmu_lock before calling kvmhv_emulate_tlbie_lpid(), but does not hold a\nreference on the kvm_nested_guest pointer obtained from the IDR.  A\nconcurrent vCPU issuing a single-LPID tlbie (is=2, ric=2) can race\nthrough kvmhv_flush_nested() -\u003e kvmhv_remove_nested() -\u003e idr_remove /\n--refcnt -\u003e kvmhv_release_nested() -\u003e kfree(gp) in that window, leaving\nthe iterating vCPU with a dangling pointer.  The subsequent\nmutex_lock(\u0026gp-\u003etlb_lock) and accesses to gp-\u003eshadow_pgtable,\ngp-\u003eshadow_lpid and gp-\u003el1_host all touch freed memory.  The free path\nis fully L1-controlled.\n\nFix this by incrementing gp-\u003erefcnt inside the loop before dropping\nmmu_lock, mirroring what kvmhv_get_nested() does, and releasing the\nreference with kvmhv_put_nested() after the per-guest work completes.\nThis is the same get/put discipline already used at every other\ncall site that drops mmu_lock while holding a nested-guest pointer."
          }
        ],
        "id": "CVE-2026-98283",
        "lastModified": "2026-10-07T07:17:08.070",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "CHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.0,
              "impactScore": 6.0,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-10-06T09:18:18.333",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/24b634852413229bb8340d908b115c3365f3a247"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4d8f7b1f586375df8bce23a0909566ad5e852259"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/51938dfa8a51a4f85328413fca9b6e21f9d2d088"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e37fba1ba69385cff2d0e60b371ee19e7d1852d1"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ec2d7a52b3996ae81131617b4afc0af31583c1b4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/fbf69b7d0555ee83c871f58750770f74b7179ad1"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-10-08T16:48:39Z",
      "cve": "CVE-2026-98283",
      "id": "CVE-2026-98283",
      "initial_release_date": "2026-10-08T16:48:39Z",
      "product_status:known_affected": "208",
      "product_status:known_not_affected": "139",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-98283",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-98283.json",
      "version": "2"
    }
  }
}



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…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…