CVE-2024-26992 (GCVE-0-2024-26992)
Vulnerability from cvelistv5
Published
2024-05-01 05:27
Modified
2026-08-05 11:28
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: x86/pmu: Disable support for adaptive PEBS Drop support for virtualizing adaptive PEBS, as KVM's implementation is architecturally broken without an obvious/easy path forward, and because exposing adaptive PEBS can leak host LBRs to the guest, i.e. can leak host kernel addresses to the guest. Bug #1 is that KVM doesn't account for the upper 32 bits of IA32_FIXED_CTR_CTRL when (re)programming fixed counters, e.g fixed_ctrl_field() drops the upper bits, reprogram_fixed_counters() stores local variables as u8s and truncates the upper bits too, etc. Bug #2 is that, because KVM _always_ sets precise_ip to a non-zero value for PEBS events, perf will _always_ generate an adaptive record, even if the guest requested a basic record. Note, KVM will also enable adaptive PEBS in individual *counter*, even if adaptive PEBS isn't exposed to the guest, but this is benign as MSR_PEBS_DATA_CFG is guaranteed to be zero, i.e. the guest will only ever see Basic records. Bug #3 is in perf. intel_pmu_disable_fixed() doesn't clear the upper bits either, i.e. leaves ICL_FIXED_0_ADAPTIVE set, and intel_pmu_enable_fixed() effectively doesn't clear ICL_FIXED_0_ADAPTIVE either. I.e. perf _always_ enables ADAPTIVE counters, regardless of what KVM requests. Bug #4 is that adaptive PEBS *might* effectively bypass event filters set by the host, as "Updated Memory Access Info Group" records information that might be disallowed by userspace via KVM_SET_PMU_EVENT_FILTER. Bug #5 is that KVM doesn't ensure LBR MSRs hold guest values (or at least zeros) when entering a vCPU with adaptive PEBS, which allows the guest to read host LBRs, i.e. host RIPs/addresses, by enabling "LBR Entries" records. Disable adaptive PEBS support as an immediate fix due to the severity of the LBR leak in particular, and because fixing all of the bugs will be non-trivial, e.g. not suitable for backporting to stable kernels. Note! This will break live migration, but trying to make KVM play nice with live migration would be quite complicated, wouldn't be guaranteed to work (i.e. KVM might still kill/confuse the guest), and it's not clear that there are any publicly available VMMs that support adaptive PEBS, let alone live migrate VMs that support adaptive PEBS, e.g. QEMU doesn't support PEBS in any capacity.
Impacted products
Vendor Product Version
Linux Linux Version: c59a1f106f5cd4843c097069ff1bb2ad72103a67
Version: c59a1f106f5cd4843c097069ff1bb2ad72103a67
Version: c59a1f106f5cd4843c097069ff1bb2ad72103a67
Version: c59a1f106f5cd4843c097069ff1bb2ad72103a67
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-04T17:15:44.124Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee"
          },
          {
            "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/"
          },
          {
            "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/"
          },
          {
            "url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-26992",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T15:44:53.201167Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:33:39.904Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/vmx/vmx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "0fb74c00d140a66128afc0003785dcc57e69d312",
              "status": "affected",
              "version": "c59a1f106f5cd4843c097069ff1bb2ad72103a67",
              "versionType": "git"
            },
            {
              "lessThan": "037e48ceccf163899374b601afb6ae8d0bf1d2ac",
              "status": "affected",
              "version": "c59a1f106f5cd4843c097069ff1bb2ad72103a67",
              "versionType": "git"
            },
            {
              "lessThan": "7a7650b3ac23e5fc8c990f00e94f787dc84e3175",
              "status": "affected",
              "version": "c59a1f106f5cd4843c097069ff1bb2ad72103a67",
              "versionType": "git"
            },
            {
              "lessThan": "9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee",
              "status": "affected",
              "version": "c59a1f106f5cd4843c097069ff1bb2ad72103a67",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/vmx/vmx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.88",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.29",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.8.*",
              "status": "unaffected",
              "version": "6.8.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.9",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.88",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.29",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.8",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86/pmu: Disable support for adaptive PEBS\n\nDrop support for virtualizing adaptive PEBS, as KVM\u0027s implementation is\narchitecturally broken without an obvious/easy path forward, and because\nexposing adaptive PEBS can leak host LBRs to the guest, i.e. can leak\nhost kernel addresses to the guest.\n\nBug #1 is that KVM doesn\u0027t account for the upper 32 bits of\nIA32_FIXED_CTR_CTRL when (re)programming fixed counters, e.g\nfixed_ctrl_field() drops the upper bits, reprogram_fixed_counters()\nstores local variables as u8s and truncates the upper bits too, etc.\n\nBug #2 is that, because KVM _always_ sets precise_ip to a non-zero value\nfor PEBS events, perf will _always_ generate an adaptive record, even if\nthe guest requested a basic record.  Note, KVM will also enable adaptive\nPEBS in individual *counter*, even if adaptive PEBS isn\u0027t exposed to the\nguest, but this is benign as MSR_PEBS_DATA_CFG is guaranteed to be zero,\ni.e. the guest will only ever see Basic records.\n\nBug #3 is in perf.  intel_pmu_disable_fixed() doesn\u0027t clear the upper\nbits either, i.e. leaves ICL_FIXED_0_ADAPTIVE set, and\nintel_pmu_enable_fixed() effectively doesn\u0027t clear ICL_FIXED_0_ADAPTIVE\neither.  I.e. perf _always_ enables ADAPTIVE counters, regardless of what\nKVM requests.\n\nBug #4 is that adaptive PEBS *might* effectively bypass event filters set\nby the host, as \"Updated Memory Access Info Group\" records information\nthat might be disallowed by userspace via KVM_SET_PMU_EVENT_FILTER.\n\nBug #5 is that KVM doesn\u0027t ensure LBR MSRs hold guest values (or at least\nzeros) when entering a vCPU with adaptive PEBS, which allows the guest\nto read host LBRs, i.e. host RIPs/addresses, by enabling \"LBR Entries\"\nrecords.\n\nDisable adaptive PEBS support as an immediate fix due to the severity of\nthe LBR leak in particular, and because fixing all of the bugs will be\nnon-trivial, e.g. not suitable for backporting to stable kernels.\n\nNote!  This will break live migration, but trying to make KVM play nice\nwith live migration would be quite complicated, wouldn\u0027t be guaranteed to\nwork (i.e. KVM might still kill/confuse the guest), and it\u0027s not clear\nthat there are any publicly available VMMs that support adaptive PEBS,\nlet alone live migrate VMs that support adaptive PEBS, e.g. QEMU doesn\u0027t\nsupport PEBS in any capacity."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.3,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The attacker must execute code inside a KVM guest on the target host (or open /dev/kvm locally and build a minimal VMM); the vulnerable KVM PMU/PEBS MSR path is not bound to any network stack.\nAC:L - Adaptive PEBS is exposed by default on any adaptive-PEBS-capable host (perf_capabilities is seeded from kvm_caps.supported_perf_cap at vCPU creation, enable_pmu defaults on, and DS/DTES64/PDCM come free from KVM_GET_SUPPORTED_CPUID), so the guest just writes DS_AREA, PEBS_DATA_CFG with the LBRS bit, and PEBS_ENABLE \u2014 no race, no memory-layout dependency, and the leak repeats on every VM entry.\nPR:L - The attacker needs only the ability to run a VM on the host \u2014 a cloud tenant or any local user with /dev/kvm access \u2014 and supplies the guest ring-0 code themselves; no host-side privilege or administrator configuration is required.\nUI:N - The guest performs the MSR writes and reads its own DS buffer entirely on its own; no host user or administrator action is involved.\nS:C - The vulnerable component is host-kernel KVM but the attacker operates in the guest security authority, and exploitation transfers host-kernel data (LBR RIPs) across the VM boundary and defeats a host-configured policy (KVM_SET_PMU_EVENT_FILTER), so the impacted authority differs from the attacking one.\nC:H - The guest harvests the host\u0027s Last Branch Record stack \u2014 host kernel RIPs and control-flow history, and on shared pCPUs potentially other guests\u0027 addresses \u2014 repeatedly at every VM entry, defeating host KASLR and enabling branch-trace side-channel recovery of host secrets; the maintainer disabled the feature outright citing \"the severity of the LBR leak in particular.\"\nI:L - The guest subverts host-imposed PMU policy by bypassing KVM_SET_PMU_EVENT_FILTER via the \"Updated Memory Access Info\" group, and guest-driven adaptive programming persists in host PMU state because intel_pmu_disable_fixed() never clears ICL_FIXED_0_ADAPTIVE, perturbing the host\u0027s own perf records; there is no arbitrary-write or code-execution primitive against the host.\nA:N - PEBS record writes are confined to guest memory through EPT and the host DS_AREA/PEBS_DATA_CFG are restored by the VM-exit MSR-load list, so no host panic, hang, or resource exhaustion results; the only breakage described is confusion of the attacker\u0027s own guest."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:28:52.706Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312"
        },
        {
          "url": "https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac"
        },
        {
          "url": "https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175"
        },
        {
          "url": "https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee"
        }
      ],
      "title": "KVM: x86/pmu: Disable support for adaptive PEBS",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-26992",
    "datePublished": "2024-05-01T05:27:57.967Z",
    "dateReserved": "2024-02-19T14:20:24.205Z",
    "dateUpdated": "2026-08-05T11:28:52.706Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/\"}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/\"}, {\"url\": \"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/\"}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2025-11-04T17:15:44.124Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-26992\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T15:44:53.201167Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:17.952Z\"}}], \"cna\": {\"title\": \"KVM: x86/pmu: Disable support for adaptive PEBS\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.3, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The attacker must execute code inside a KVM guest on the target host (or open /dev/kvm locally and build a minimal VMM); the vulnerable KVM PMU/PEBS MSR path is not bound to any network stack.\\nAC:L - Adaptive PEBS is exposed by default on any adaptive-PEBS-capable host (perf_capabilities is seeded from kvm_caps.supported_perf_cap at vCPU creation, enable_pmu defaults on, and DS/DTES64/PDCM come free from KVM_GET_SUPPORTED_CPUID), so the guest just writes DS_AREA, PEBS_DATA_CFG with the LBRS bit, and PEBS_ENABLE \\u2014 no race, no memory-layout dependency, and the leak repeats on every VM entry.\\nPR:L - The attacker needs only the ability to run a VM on the host \\u2014 a cloud tenant or any local user with /dev/kvm access \\u2014 and supplies the guest ring-0 code themselves; no host-side privilege or administrator configuration is required.\\nUI:N - The guest performs the MSR writes and reads its own DS buffer entirely on its own; no host user or administrator action is involved.\\nS:C - The vulnerable component is host-kernel KVM but the attacker operates in the guest security authority, and exploitation transfers host-kernel data (LBR RIPs) across the VM boundary and defeats a host-configured policy (KVM_SET_PMU_EVENT_FILTER), so the impacted authority differs from the attacking one.\\nC:H - The guest harvests the host\u0027s Last Branch Record stack \\u2014 host kernel RIPs and control-flow history, and on shared pCPUs potentially other guests\u0027 addresses \\u2014 repeatedly at every VM entry, defeating host KASLR and enabling branch-trace side-channel recovery of host secrets; the maintainer disabled the feature outright citing \\\"the severity of the LBR leak in particular.\\\"\\nI:L - The guest subverts host-imposed PMU policy by bypassing KVM_SET_PMU_EVENT_FILTER via the \\\"Updated Memory Access Info\\\" group, and guest-driven adaptive programming persists in host PMU state because intel_pmu_disable_fixed() never clears ICL_FIXED_0_ADAPTIVE, perturbing the host\u0027s own perf records; there is no arbitrary-write or code-execution primitive against the host.\\nA:N - PEBS record writes are confined to guest memory through EPT and the host DS_AREA/PEBS_DATA_CFG are restored by the VM-exit MSR-load list, so no host panic, hang, or resource exhaustion results; the only breakage described is confusion of the attacker\u0027s own guest.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"c59a1f106f5cd4843c097069ff1bb2ad72103a67\", \"lessThan\": \"0fb74c00d140a66128afc0003785dcc57e69d312\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"c59a1f106f5cd4843c097069ff1bb2ad72103a67\", \"lessThan\": \"037e48ceccf163899374b601afb6ae8d0bf1d2ac\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"c59a1f106f5cd4843c097069ff1bb2ad72103a67\", \"lessThan\": \"7a7650b3ac23e5fc8c990f00e94f787dc84e3175\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"c59a1f106f5cd4843c097069ff1bb2ad72103a67\", \"lessThan\": \"9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\", \"versionType\": \"git\"}], \"programFiles\": [\"arch/x86/kvm/vmx/vmx.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.0\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.0\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.1.88\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.29\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8.8\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"arch/x86/kvm/vmx/vmx.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\"}, {\"url\": \"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\"}, {\"url\": \"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\"}, {\"url\": \"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nKVM: x86/pmu: Disable support for adaptive PEBS\\n\\nDrop support for virtualizing adaptive PEBS, as KVM\u0027s implementation is\\narchitecturally broken without an obvious/easy path forward, and because\\nexposing adaptive PEBS can leak host LBRs to the guest, i.e. can leak\\nhost kernel addresses to the guest.\\n\\nBug #1 is that KVM doesn\u0027t account for the upper 32 bits of\\nIA32_FIXED_CTR_CTRL when (re)programming fixed counters, e.g\\nfixed_ctrl_field() drops the upper bits, reprogram_fixed_counters()\\nstores local variables as u8s and truncates the upper bits too, etc.\\n\\nBug #2 is that, because KVM _always_ sets precise_ip to a non-zero value\\nfor PEBS events, perf will _always_ generate an adaptive record, even if\\nthe guest requested a basic record.  Note, KVM will also enable adaptive\\nPEBS in individual *counter*, even if adaptive PEBS isn\u0027t exposed to the\\nguest, but this is benign as MSR_PEBS_DATA_CFG is guaranteed to be zero,\\ni.e. the guest will only ever see Basic records.\\n\\nBug #3 is in perf.  intel_pmu_disable_fixed() doesn\u0027t clear the upper\\nbits either, i.e. leaves ICL_FIXED_0_ADAPTIVE set, and\\nintel_pmu_enable_fixed() effectively doesn\u0027t clear ICL_FIXED_0_ADAPTIVE\\neither.  I.e. perf _always_ enables ADAPTIVE counters, regardless of what\\nKVM requests.\\n\\nBug #4 is that adaptive PEBS *might* effectively bypass event filters set\\nby the host, as \\\"Updated Memory Access Info Group\\\" records information\\nthat might be disallowed by userspace via KVM_SET_PMU_EVENT_FILTER.\\n\\nBug #5 is that KVM doesn\u0027t ensure LBR MSRs hold guest values (or at least\\nzeros) when entering a vCPU with adaptive PEBS, which allows the guest\\nto read host LBRs, i.e. host RIPs/addresses, by enabling \\\"LBR Entries\\\"\\nrecords.\\n\\nDisable adaptive PEBS support as an immediate fix due to the severity of\\nthe LBR leak in particular, and because fixing all of the bugs will be\\nnon-trivial, e.g. not suitable for backporting to stable kernels.\\n\\nNote!  This will break live migration, but trying to make KVM play nice\\nwith live migration would be quite complicated, wouldn\u0027t be guaranteed to\\nwork (i.e. KVM might still kill/confuse the guest), and it\u0027s not clear\\nthat there are any publicly available VMMs that support adaptive PEBS,\\nlet alone live migrate VMs that support adaptive PEBS, e.g. QEMU doesn\u0027t\\nsupport PEBS in any capacity.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.88\", \"versionStartIncluding\": \"6.0\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.29\", \"versionStartIncluding\": \"6.0\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8.8\", \"versionStartIncluding\": \"6.0\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9\", \"versionStartIncluding\": \"6.0\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:28:52.706Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-26992\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:28:52.706Z\", \"dateReserved\": \"2024-02-19T14:20:24.205Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-01T05:27:57.967Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…