CVE-2024-26992 (GCVE-0-2024-26992)

Vulnerability from cvelistv5 – Published: 2024-05-01 05:27 – Updated: 2026-08-05 11:28
VLAI
Title
KVM: x86/pmu: Disable support for adaptive PEBS
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.
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator (v2.0.3)
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: c59a1f106f5cd4843c097069ff1bb2ad72103a67 , < 0fb74c00d140a66128afc0003785dcc57e69d312 (git)
Affected: c59a1f106f5cd4843c097069ff1bb2ad72103a67 , < 037e48ceccf163899374b601afb6ae8d0bf1d2ac (git)
Affected: c59a1f106f5cd4843c097069ff1bb2ad72103a67 , < 7a7650b3ac23e5fc8c990f00e94f787dc84e3175 (git)
Affected: c59a1f106f5cd4843c097069ff1bb2ad72103a67 , < 9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee (git)
Create a notification for this product.
Linux Linux Affected: 6.0
Unaffected: 0 , < 6.0 (semver)
Unaffected: 6.1.88 , ≤ 6.1.* (semver)
Unaffected: 6.6.29 , ≤ 6.6.* (semver)
Unaffected: 6.8.8 , ≤ 6.8.* (semver)
Unaffected: 6.9 , ≤ * (original_commit_for_fix)
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": {
    "epss": {
      "cve": "CVE-2024-26992",
      "date": "2026-08-05",
      "epss": "0.0023",
      "percentile": "0.13807"
    },
    "fkie_nvd": {
      "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.\"}, {\"lang\": \"es\", \"value\": \"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: KVM: x86/pmu: deshabilitar el soporte para PEBS adaptativos. Eliminar el soporte para virtualizar PEBS adaptativos, ya que la implementaci\\u00f3n de KVM tiene una arquitectura rota sin un camino obvio/f\\u00e1cil a seguir, y porque exponer PEBS adaptativos puede filtrar los LBR del host al hu\\u00e9sped, es decir, puede filtrar las direcciones del kernel del host al hu\\u00e9sped. El error n\\u00famero 1 es que KVM no tiene en cuenta los 32 bits superiores de IA32_FIXED_CTR_CTRL cuando (re)programa contadores fijos, por ejemplo, fix_ctrl_field() elimina los bits superiores, reprogram_fixed_counters() almacena variables locales como u8 y tambi\\u00e9n trunca los bits superiores, etc. El error n\\u00famero 2 es que, debido a que KVM _siempre_ establece precision_ip en un valor distinto de cero para eventos PEBS, perf _siempre_ generar\\u00e1 un registro adaptativo, incluso si el invitado solicit\\u00f3 un registro b\\u00e1sico. Tenga en cuenta que KVM tambi\\u00e9n habilitar\\u00e1 PEBS adaptativo en *contador* individual, incluso si PEBS adaptativo no est\\u00e1 expuesto al invitado, pero esto es benigno ya que se garantiza que MSR_PEBS_DATA_CFG ser\\u00e1 cero, es decir, el invitado solo ver\\u00e1 registros b\\u00e1sicos. El error n\\u00famero 3 est\\u00e1 en rendimiento. intel_pmu_disable_fixed() tampoco borra los bits superiores, es decir, deja ICL_FIXED_0_ADAPTIVE configurado, e intel_pmu_enable_fixed() efectivamente tampoco borra ICL_FIXED_0_ADAPTIVE. Es decir, perf _siempre_ habilita contadores ADAPTIVOS, independientemente de lo que solicite KVM. El error n\\u00famero 4 es que los PEBS adaptables *podr\\u00edan* omitir efectivamente los filtros de eventos establecidos por el host, ya que el \\\"Grupo de informaci\\u00f3n de acceso a memoria actualizado\\\" registra informaci\\u00f3n que podr\\u00eda no estar permitida por el espacio de usuario a trav\\u00e9s de KVM_SET_PMU_EVENT_FILTER. El error n\\u00famero 5 es que KVM no garantiza que los MSR LBR mantengan valores de invitado (o al menos ceros) al ingresar a una vCPU con PEBS adaptable, lo que permite al invitado leer los LBR del host, es decir, los RIP/direcciones del host, al habilitar las \\\"Entradas LBR\\\". registros. Deshabilite el soporte PEBS adaptable como soluci\\u00f3n inmediata debido a la gravedad de la fuga de LBR en particular, y porque corregir todos los errores no ser\\u00e1 trivial, por ejemplo, no es adecuado para realizar backporting a n\\u00facleos estables. \\u00a1Nota! Esto interrumpir\\u00e1 la migraci\\u00f3n en vivo, pero tratar de hacer que KVM funcione bien con la migraci\\u00f3n en vivo ser\\u00eda bastante complicado, no se garantizar\\u00eda que funcione (es decir, KVM a\\u00fan podr\\u00eda matar/confundir al invitado) y no est\\u00e1 claro si hay alguno disponible p\\u00fablicamente. Los VMM que admiten PEBS adaptables, y mucho menos migran en vivo las m\\u00e1quinas virtuales que admiten PEBS adaptables; por ejemplo, QEMU no admite PEBS de ninguna manera.\"}]",
      "id": "CVE-2024-26992",
      "lastModified": "2024-11-21T09:03:34.383",
      "published": "2024-05-01T06:15:16.957",
      "references": "[{\"url\": \"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\", \"source\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}, {\"url\": \"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}, {\"url\": \"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}, {\"url\": \"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}, {\"url\": \"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\", \"source\": \"af854a3a-2127-422b-91ae-364da2661108\"}]",
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Awaiting Analysis"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2024-26992\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-05-01T06:15:16.957\",\"lastModified\":\"2026-08-04T11:17:31.430\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"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.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: KVM: x86/pmu: deshabilitar el soporte para PEBS adaptativos. Eliminar el soporte para virtualizar PEBS adaptativos, ya que la implementaci\u00f3n de KVM tiene una arquitectura rota sin un camino obvio/f\u00e1cil a seguir, y porque exponer PEBS adaptativos puede filtrar los LBR del host al hu\u00e9sped, es decir, puede filtrar las direcciones del kernel del host al hu\u00e9sped. El error n\u00famero 1 es que KVM no tiene en cuenta los 32 bits superiores de IA32_FIXED_CTR_CTRL cuando (re)programa contadores fijos, por ejemplo, fix_ctrl_field() elimina los bits superiores, reprogram_fixed_counters() almacena variables locales como u8 y tambi\u00e9n trunca los bits superiores, etc. El error n\u00famero 2 es que, debido a que KVM _siempre_ establece precision_ip en un valor distinto de cero para eventos PEBS, perf _siempre_ generar\u00e1 un registro adaptativo, incluso si el invitado solicit\u00f3 un registro b\u00e1sico. Tenga en cuenta que KVM tambi\u00e9n habilitar\u00e1 PEBS adaptativo en *contador* individual, incluso si PEBS adaptativo no est\u00e1 expuesto al invitado, pero esto es benigno ya que se garantiza que MSR_PEBS_DATA_CFG ser\u00e1 cero, es decir, el invitado solo ver\u00e1 registros b\u00e1sicos. El error n\u00famero 3 est\u00e1 en rendimiento. intel_pmu_disable_fixed() tampoco borra los bits superiores, es decir, deja ICL_FIXED_0_ADAPTIVE configurado, e intel_pmu_enable_fixed() efectivamente tampoco borra ICL_FIXED_0_ADAPTIVE. Es decir, perf _siempre_ habilita contadores ADAPTIVOS, independientemente de lo que solicite KVM. El error n\u00famero 4 es que los PEBS adaptables *podr\u00edan* omitir efectivamente los filtros de eventos establecidos por el host, ya que el \\\"Grupo de informaci\u00f3n de acceso a memoria actualizado\\\" registra informaci\u00f3n que podr\u00eda no estar permitida por el espacio de usuario a trav\u00e9s de KVM_SET_PMU_EVENT_FILTER. El error n\u00famero 5 es que KVM no garantiza que los MSR LBR mantengan valores de invitado (o al menos ceros) al ingresar a una vCPU con PEBS adaptable, lo que permite al invitado leer los LBR del host, es decir, los RIP/direcciones del host, al habilitar las \\\"Entradas LBR\\\". registros. Deshabilite el soporte PEBS adaptable como soluci\u00f3n inmediata debido a la gravedad de la fuga de LBR en particular, y porque corregir todos los errores no ser\u00e1 trivial, por ejemplo, no es adecuado para realizar backporting a n\u00facleos estables. \u00a1Nota! Esto interrumpir\u00e1 la migraci\u00f3n en vivo, pero tratar de hacer que KVM funcione bien con la migraci\u00f3n en vivo ser\u00eda bastante complicado, no se garantizar\u00eda que funcione (es decir, KVM a\u00fan podr\u00eda matar/confundir al invitado) y no est\u00e1 claro si hay alguno disponible p\u00fablicamente. Los VMM que admiten PEBS adaptables, y mucho menos migran en vivo las m\u00e1quinas virtuales que admiten PEBS adaptables; por ejemplo, QEMU no admite PEBS de ninguna manera.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"arch/x86/kvm/vmx/vmx.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"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\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"arch/x86/kvm/vmx/vmx.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.0\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.0\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.88\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.29\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.8.8\",\"lessThanOrEqual\":\"6.8.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.9\",\"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:H/I:L/A:N\",\"baseScore\":7.3,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":2.0,\"impactScore\":4.7},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N\",\"baseScore\":3.3,\"baseSeverity\":\"LOW\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":1.8,\"impactScore\":1.4}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2024-09-10T15:44:53.201167Z\",\"id\":\"CVE-2024-26992\",\"options\":[{\"exploitation\":\"none\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.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.0\",\"versionEndExcluding\":\"6.1.88\",\"matchCriteriaId\":\"903B5D08-7DD7-4CA7-9837-2EE6A8A24927\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.2\",\"versionEndExcluding\":\"6.6.29\",\"matchCriteriaId\":\"0999E154-1E68-41FA-8DE3-9A735E382224\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.7\",\"versionEndExcluding\":\"6.8.8\",\"matchCriteriaId\":\"673B3328-389D-41A4-9617-669298635262\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"22BEDD49-2C6D-402D-9DBF-6646F6ECD10B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"DF73CB2A-DFFD-46FB-9BFE-AA394F27EA37\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"52048DDA-FC5A-4363-95A0-A6357B4D7F8C\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"A06B2CCF-3F43-4FA9-8773-C83C3F5764B2\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/037e48ceccf163899374b601afb6ae8d0bf1d2ac\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/0fb74c00d140a66128afc0003785dcc57e69d312\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/7a7650b3ac23e5fc8c990f00e94f787dc84e3175\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/9e985cbf2942a1bb8fcef9adc2a17d90fd7ca8ee\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"},{\"url\":\"https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-08-04T22:48:37+00:00",
      "cve": "CVE-2024-26992",
      "id": "CVE-2024-26992",
      "initial_release_date": "2024-05-01T00:00:00+00:00",
      "product_status:fixed": "280",
      "product_status:known_affected": "64",
      "product_status:known_not_affected": "56",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: KVM: x86/pmu: Disable support for adaptive PEBS",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2024/cve-2024-26992.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-05T01:00:09Z",
      "cve": "CVE-2024-26992",
      "id": "CVE-2024-26992",
      "initial_release_date": "2024-05-03T02:09:42Z",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "312",
      "product_status:recommended": "358",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2024-26992",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2024-26992.json",
      "version": "79"
    },
    "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…

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…