CVE-2026-46076 (GCVE-0-2026-46076)

Vulnerability from cvelistv5 – Published: 2026-05-27 12:58 – Updated: 2026-08-05 12:29
VLAI
Title
KVM: nSVM: Raise #UD if unhandled VMMCALL isn't intercepted by L1
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: nSVM: Raise #UD if unhandled VMMCALL isn't intercepted by L1 Explicitly synthesize a #UD for VMMCALL if L2 is active, L1 does NOT want to intercept VMMCALL, nested_svm_l2_tlb_flush_enabled() is true, and the hypercall is something other than one of the supported Hyper-V hypercalls. When all of the above conditions are met, KVM will intercept VMMCALL but never forward it to L1, i.e. will let L2 make hypercalls as if it were L1. The TLFS says a whole lot of nothing about this scenario, so go with the architectural behavior, which says that VMMCALL #UDs if it's not intercepted. Opportunistically do a 2-for-1 stub trade by stub-ifying the new API instead of the helpers it uses. The last remaining "single" stub will soon be dropped as well. [sean: rewrite changelog and comment, tag for stable, remove defunct stubs]
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 , < 924d721fae95687acedbaf624a094ed0e8b67104 (git)
Affected: 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 , < 009c0f726abeaa67aad1d96b883bdce01d405ce2 (git)
Affected: 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 , < 5fb4a5f361565f5b629d8a8fe5288ce8463c5727 (git)
Affected: 3f4a812edf5cb0a50e65fbdfafdb3e688da18f16 , < c36991c6f8d2ab56ee67aff04e3c357f45cfc76c (git)
Create a notification for this product.
Linux Linux Affected: 6.2
Unaffected: 0 , < 6.2 (semver)
Unaffected: 6.12.86 , ≤ 6.12.* (semver)
Unaffected: 6.18.27 , ≤ 6.18.* (semver)
Unaffected: 7.0.4 , ≤ 7.0.* (semver)
Unaffected: 7.1 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/hyperv.h",
            "arch/x86/kvm/svm/hyperv.h",
            "arch/x86/kvm/svm/nested.c",
            "arch/x86/kvm/svm/svm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "924d721fae95687acedbaf624a094ed0e8b67104",
              "status": "affected",
              "version": "3f4a812edf5cb0a50e65fbdfafdb3e688da18f16",
              "versionType": "git"
            },
            {
              "lessThan": "009c0f726abeaa67aad1d96b883bdce01d405ce2",
              "status": "affected",
              "version": "3f4a812edf5cb0a50e65fbdfafdb3e688da18f16",
              "versionType": "git"
            },
            {
              "lessThan": "5fb4a5f361565f5b629d8a8fe5288ce8463c5727",
              "status": "affected",
              "version": "3f4a812edf5cb0a50e65fbdfafdb3e688da18f16",
              "versionType": "git"
            },
            {
              "lessThan": "c36991c6f8d2ab56ee67aff04e3c357f45cfc76c",
              "status": "affected",
              "version": "3f4a812edf5cb0a50e65fbdfafdb3e688da18f16",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/hyperv.h",
            "arch/x86/kvm/svm/hyperv.h",
            "arch/x86/kvm/svm/nested.c",
            "arch/x86/kvm/svm/svm.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.2"
            },
            {
              "lessThan": "6.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.86",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.27",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.0.*",
              "status": "unaffected",
              "version": "7.0.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.86",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.27",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.0.4",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: nSVM: Raise #UD if unhandled VMMCALL isn\u0027t intercepted by L1\n\nExplicitly synthesize a #UD for VMMCALL if L2 is active, L1 does NOT want\nto intercept VMMCALL, nested_svm_l2_tlb_flush_enabled() is true, and the\nhypercall is something other than one of the supported Hyper-V hypercalls.\nWhen all of the above conditions are met, KVM will intercept VMMCALL but\nnever forward it to L1, i.e. will let L2 make hypercalls as if it were L1.\n\nThe TLFS says a whole lot of nothing about this scenario, so go with the\narchitectural behavior, which says that VMMCALL #UDs if it\u0027s not\nintercepted.\n\nOpportunistically do a 2-for-1 stub trade by stub-ifying the new API\ninstead of the helpers it uses.  The last remaining \"single\" stub will\nsoon be dropped as well.\n\n[sean: rewrite changelog and comment, tag for stable, remove defunct stubs]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.9,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The path is reached by executing a VMMCALL instruction from within a nested (L2) guest running under KVM on AMD SVM; this is local execution against the hypervisor, not reachable via network, adjacent network, or physical interface.\nAC:L - Triggering is deterministic \u2014 once the nested setup exists (L1 does not intercept VMMCALL, e.g. relying on L0\u0027s Hyper-V direct L2 TLB-flush handling), a single VMMCALL in L2 reliably reaches L0\u0027s hypercall handler with no race or attacker-uncontrolled timing, mirroring sibling CVE-2026-43133.\nPR:L - The attacker must control a guest and run guest kernel-level (CPL0) code in the nested guest to set up and issue the hypercall; this is low privilege relative to the host and requires no real init-namespace root.\nUI:N - Exploitation is triggered solely by guest instruction execution (VMMCALL); no host-side or victim user action is required.\nS:C - The bug is in KVM\u0027s enforcement of the nested-virtualization boundary: L2\u0027s VMMCALL is serviced by L0 as if it were L1 instead of #UD\u0027ing, so an L2 guest\u0027s action reaches and affects L1/L0-maintained state outside the L2 guest\u0027s own security authority.\nC:L - The improperly-handled hypercalls cause L0 to read L1-context memory (guest-physical addresses supplied by L2 are interpreted in the L1/host-maintained address space) and inspect the vCPU\u0027s Hyper-V state \u2014 a bounded cross-domain exposure, not an arbitrary host read primitive.\nI:L - L2 can drive L0 hypercalls that modify L1/host-maintained state (inject IPIs into the VM\u0027s vCPUs, post SynIC messages/signal events, request GPA-range operations), a bounded cross-domain state modification rather than an arbitrary write or code-execution primitive.\nA:H - L2 can repeatedly issue these hypercalls to force TLB flushes, inject IPIs, and corrupt the L1 hypervisor\u0027s Hyper-V messaging state, destabilizing or hanging the affected nested-virtualization workload at will \u2014 a complete loss of availability for that workload."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:29:29.930Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/924d721fae95687acedbaf624a094ed0e8b67104"
        },
        {
          "url": "https://git.kernel.org/stable/c/009c0f726abeaa67aad1d96b883bdce01d405ce2"
        },
        {
          "url": "https://git.kernel.org/stable/c/5fb4a5f361565f5b629d8a8fe5288ce8463c5727"
        },
        {
          "url": "https://git.kernel.org/stable/c/c36991c6f8d2ab56ee67aff04e3c357f45cfc76c"
        }
      ],
      "title": "KVM: nSVM: Raise #UD if unhandled VMMCALL isn\u0027t intercepted by L1",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-46076",
    "datePublished": "2026-05-27T12:58:09.169Z",
    "dateReserved": "2026-05-13T15:03:33.096Z",
    "dateUpdated": "2026-08-05T12:29:29.930Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-46076",
      "date": "2026-08-05",
      "epss": "0.00121",
      "percentile": "0.02254"
    },
    "microsoft_vex": {
      "current_release_date": "2026-06-28T01:44:08.000Z",
      "cve": "CVE-2026-46076",
      "id": "msrc_CVE-2026-46076",
      "initial_release_date": "2026-05-02T00:00:00.000Z",
      "product_status:known_affected": "3",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "KVM: nSVM: Raise #UD if unhandled VMMCALL isn\u0027t intercepted by L1",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-46076.json",
      "version": "5"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-46076\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-05-27T14:17:28.930\",\"lastModified\":\"2026-06-24T16:58:28.430\",\"vulnStatus\":\"Undergoing Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nKVM: nSVM: Raise #UD if unhandled VMMCALL isn\u0027t intercepted by L1\\n\\nExplicitly synthesize a #UD for VMMCALL if L2 is active, L1 does NOT want\\nto intercept VMMCALL, nested_svm_l2_tlb_flush_enabled() is true, and the\\nhypercall is something other than one of the supported Hyper-V hypercalls.\\nWhen all of the above conditions are met, KVM will intercept VMMCALL but\\nnever forward it to L1, i.e. will let L2 make hypercalls as if it were L1.\\n\\nThe TLFS says a whole lot of nothing about this scenario, so go with the\\narchitectural behavior, which says that VMMCALL #UDs if it\u0027s not\\nintercepted.\\n\\nOpportunistically do a 2-for-1 stub trade by stub-ifying the new API\\ninstead of the helpers it uses.  The last remaining \\\"single\\\" stub will\\nsoon be dropped as well.\\n\\n[sean: rewrite changelog and comment, tag for stable, remove defunct stubs]\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"arch/x86/kvm/hyperv.h\",\"arch/x86/kvm/svm/hyperv.h\",\"arch/x86/kvm/svm/nested.c\",\"arch/x86/kvm/svm/svm.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"3f4a812edf5cb0a50e65fbdfafdb3e688da18f16\",\"lessThan\":\"924d721fae95687acedbaf624a094ed0e8b67104\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3f4a812edf5cb0a50e65fbdfafdb3e688da18f16\",\"lessThan\":\"009c0f726abeaa67aad1d96b883bdce01d405ce2\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3f4a812edf5cb0a50e65fbdfafdb3e688da18f16\",\"lessThan\":\"5fb4a5f361565f5b629d8a8fe5288ce8463c5727\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"3f4a812edf5cb0a50e65fbdfafdb3e688da18f16\",\"lessThan\":\"c36991c6f8d2ab56ee67aff04e3c357f45cfc76c\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"arch/x86/kvm/hyperv.h\",\"arch/x86/kvm/svm/hyperv.h\",\"arch/x86/kvm/svm/nested.c\",\"arch/x86/kvm/svm/svm.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.2\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.2\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.86\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.27\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.0.4\",\"lessThanOrEqual\":\"7.0.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1\",\"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:C/C:L/I:L/A:H\",\"baseScore\":7.9,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.0,\"impactScore\":5.3}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"NVD-CWE-noinfo\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.2\",\"versionEndExcluding\":\"6.12.86\",\"matchCriteriaId\":\"B33E0975-006A-45BB-AD35-19D8D80F6676\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.18.27\",\"matchCriteriaId\":\"A10AC84F-C058-47D5-85B4-E6E51A613B74\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.19\",\"versionEndExcluding\":\"7.0.4\",\"matchCriteriaId\":\"CDB78D6D-22C3-4154-B0D0-94AF1CE5C2E3\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/009c0f726abeaa67aad1d96b883bdce01d405ce2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/5fb4a5f361565f5b629d8a8fe5288ce8463c5727\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/924d721fae95687acedbaf624a094ed0e8b67104\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/c36991c6f8d2ab56ee67aff04e3c357f45cfc76c\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-05T14:51:01+00:00",
      "cve": "CVE-2026-46076",
      "id": "CVE-2026-46076",
      "initial_release_date": "2026-05-27T00:00:00+00:00",
      "product_status:known_affected": "184",
      "product_status:known_not_affected": "90",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: KVM: nSVM: Raise #UD if unhandled VMMCALL isn\u0027t intercepted by L1",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-46076.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-07-28T17:14:55Z",
      "cve": "CVE-2026-46076",
      "id": "CVE-2026-46076",
      "initial_release_date": "2026-05-28T03:53:06Z",
      "product_status:first_fixed": "2",
      "product_status:known_affected": "411",
      "product_status:known_not_affected": "181",
      "product_status:recommended": "327",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-46076",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-46076.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…