CVE-2021-47390 (GCVE-0-2021-47390)

Vulnerability from cvelistv5 – Published: 2024-05-21 15:03 – Updated: 2026-08-05 08:47
VLAI
Title
KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()
Summary
In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect() KASAN reports the following issue: BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm] Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798 CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G X --------- --- Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020 Call Trace: dump_stack+0xa5/0xe6 print_address_description.constprop.0+0x18/0x130 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] __kasan_report.cold+0x7f/0x114 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kasan_report+0x38/0x50 kasan_check_range+0xf5/0x1d0 kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm] ? kvm_arch_exit+0x110/0x110 [kvm] ? sched_clock+0x5/0x10 ioapic_write_indirect+0x59f/0x9e0 [kvm] ? static_obj+0xc0/0xc0 ? __lock_acquired+0x1d2/0x8c0 ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm] The problem appears to be that 'vcpu_bitmap' is allocated as a single long on stack and it should really be KVM_MAX_VCPUS long. We also seem to clear the lower 16 bits of it with bitmap_zero() for no particular reason (my guess would be that 'bitmap' and 'vcpu_bitmap' variables in kvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed 16-bit long, the later should accommodate all possible vCPUs).
SSVC
Exploitation: none Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2024-06-17 17:37 UTC
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 7ee30bc132c683d06a6d9e360e39e483e3990708 , < bebabb76ad9acca8858e0371e102fb60d708e25b (git)
Affected: 7ee30bc132c683d06a6d9e360e39e483e3990708 , < 99a9e9b80f19fc63be005a33d76211dd23114792 (git)
Affected: 7ee30bc132c683d06a6d9e360e39e483e3990708 , < 2f9b68f57c6278c322793a06063181deded0ad69 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.5
Unaffected: 0 , < 5.5 (semver)
Unaffected: 5.10.71 , ≤ 5.10.* (semver)
Unaffected: 5.14.10 , ≤ 5.14.* (semver)
Unaffected: 5.15 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2021-47390",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-06-17T17:37:17.652949Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-06-17T17:38:01.491Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      },
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-04T05:39:59.812Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/ioapic.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "bebabb76ad9acca8858e0371e102fb60d708e25b",
              "status": "affected",
              "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
              "versionType": "git"
            },
            {
              "lessThan": "99a9e9b80f19fc63be005a33d76211dd23114792",
              "status": "affected",
              "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
              "versionType": "git"
            },
            {
              "lessThan": "2f9b68f57c6278c322793a06063181deded0ad69",
              "status": "affected",
              "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "arch/x86/kvm/ioapic.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.5"
            },
            {
              "lessThan": "5.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.71",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.14.*",
              "status": "unaffected",
              "version": "5.14.10",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.15",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.71",
                  "versionStartIncluding": "5.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.14.10",
                  "versionStartIncluding": "5.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15",
                  "versionStartIncluding": "5.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()\n\nKASAN reports the following issue:\n\n BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798\n\n CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G               X --------- ---\n Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020\n Call Trace:\n  dump_stack+0xa5/0xe6\n  print_address_description.constprop.0+0x18/0x130\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  __kasan_report.cold+0x7f/0x114\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kasan_report+0x38/0x50\n  kasan_check_range+0xf5/0x1d0\n  kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm]\n  ? kvm_arch_exit+0x110/0x110 [kvm]\n  ? sched_clock+0x5/0x10\n  ioapic_write_indirect+0x59f/0x9e0 [kvm]\n  ? static_obj+0xc0/0xc0\n  ? __lock_acquired+0x1d2/0x8c0\n  ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm]\n\nThe problem appears to be that \u0027vcpu_bitmap\u0027 is allocated as a single long\non stack and it should really be KVM_MAX_VCPUS long. We also seem to clear\nthe lower 16 bits of it with bitmap_zero() for no particular reason (my\nguess would be that \u0027bitmap\u0027 and \u0027vcpu_bitmap\u0027 variables in\nkvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed\n16-bit long, the later should accommodate all possible vCPUs)."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The bug is reached when a guest writes the in-kernel IOAPIC MMIO window (0xfec00000), causing a KVM MMIO exit into ioapic_mmio_write \u2192 ioapic_write_indirect on the host; this is a local hypervisor/guest interface, not a network protocol path.\nAC:L - A guest (or VMM user who creates the VM) can reliably trigger the path by writing an IOAPIC redirect entry with FIXED delivery mode; the undersized bitmap is always over-read, and with \u226565 vCPUs the attacker-controlled dest can also force out-of-bounds __set_bit writes with no race or uncontrolled condition.\nPR:L - Exploitation needs only the ability to run a KVM guest that uses the in-kernel irqchip\u2014typically an unprivileged kvm-group user on /dev/kvm, or a cloud tenant controlling their guest OS\u2014not real host root/CAP_SYS_ADMIN.\nUI:N - No victim action is required; the attacker triggers the vulnerable IOAPIC write path directly from guest code or their own VMM once the VM exists.\nS:C - A malicious guest corrupts host-kernel stack memory in KVM\u2019s IOAPIC emulation, crossing the guest/host security boundary and enabling a potential VM escape affecting the host and other tenants.\nC:H - kvm_make_vcpus_request_mask performs a stack out-of-bounds read of the undersized vcpu_bitmap across KVM_MAX_VCPUS bits (~128 bytes), and stack corruption from the related OOB write can be leveraged for further host memory disclosure.\nI:H - kvm_bitmap_or_dest_vcpus uses __set_bit() on vcpu_idx values that can exceed the single unsigned long (bits \u226564), writing past the stack allocation toward higher stack addresses and enabling host memory corruption / control-flow hijacking.\nA:H - The out-of-bounds stack access can oops/panic the host kernel (as shown by the KASAN report in qemu-kvm), so availability impact on the host is high."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:47:35.643Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
        },
        {
          "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
        },
        {
          "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
        }
      ],
      "title": "KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2021-47390",
    "datePublished": "2024-05-21T15:03:48.883Z",
    "dateReserved": "2024-05-21T14:58:30.813Z",
    "dateUpdated": "2026-08-05T08:47:35.643Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2021-47390",
      "date": "2026-09-21",
      "epss": "0.0026",
      "percentile": "0.17969"
    },
    "fkie_nvd": {
      "configurations": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "60C740E4-6C54-40CD-A914-2232D8FC781D",
                  "versionEndExcluding": "5.10.71",
                  "versionStartIncluding": "5.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "matchCriteriaId": "1A437B0D-8305-4C72-B691-D26986A126CF",
                  "versionEndExcluding": "5.14.10",
                  "versionStartIncluding": "5.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc1:*:*:*:*:*:*",
                  "matchCriteriaId": "E46C74C6-B76B-4C94-A6A4-FD2FFF62D644",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc2:*:*:*:*:*:*",
                  "matchCriteriaId": "60134C3A-06E4-48C1-B04F-2903732A4E56",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc3:*:*:*:*:*:*",
                  "matchCriteriaId": "0460DA88-8FE1-46A2-9DDA-1F1ABA552E71",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()\n\nKASAN reports the following issue:\n\n BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798\n\n CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G               X --------- ---\n Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020\n Call Trace:\n  dump_stack+0xa5/0xe6\n  print_address_description.constprop.0+0x18/0x130\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  __kasan_report.cold+0x7f/0x114\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kasan_report+0x38/0x50\n  kasan_check_range+0xf5/0x1d0\n  kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm]\n  ? kvm_arch_exit+0x110/0x110 [kvm]\n  ? sched_clock+0x5/0x10\n  ioapic_write_indirect+0x59f/0x9e0 [kvm]\n  ? static_obj+0xc0/0xc0\n  ? __lock_acquired+0x1d2/0x8c0\n  ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm]\n\nThe problem appears to be that \u0027vcpu_bitmap\u0027 is allocated as a single long\non stack and it should really be KVM_MAX_VCPUS long. We also seem to clear\nthe lower 16 bits of it with bitmap_zero() for no particular reason (my\nguess would be that \u0027bitmap\u0027 and \u0027vcpu_bitmap\u0027 variables in\nkvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed\n16-bit long, the later should accommodate all possible vCPUs)."
        },
        {
          "lang": "es",
          "value": "En el kernel de Linux, se resolvi\u00f3 la siguiente vulnerabilidad: KVM: x86: corrige el acceso a la memoria de pila fuera de los l\u00edmites desde ioapic_write_indirect() KASAN informa el siguiente problema: BUG: KASAN: pila fuera de los l\u00edmites en kvm_make_vcpus_request_mask+ 0x174/0x440 [kvm] Lectura de tama\u00f1o 8 en la direcci\u00f3n ffffc9001364f638 por tarea qemu-kvm/4798 CPU: 0 PID: 4798 Comm: qemu-kvm Contaminado: GX --------- --- Nombre de hardware: AMD Corporaci\u00f3n DAYTONA_X/DAYTONA_X, BIOS RYM0081C 13/07/2020 Seguimiento de llamadas: dump_stack+0xa5/0xe6 print_address_description.constprop.0+0x18/0x130 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] __kasan_report.cold+0x7f/0x114 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kasan_report+0x38/0x50 kasan_check_range+0xf5/0x1d0 kvm_make_vcpus_request_mask+0x174/0x440 [kvm] 0 [kvm] ? kvm_arch_exit+0x110/0x110 [kvm] ? sched_clock+0x5/0x10 ioapic_write_indirect+0x59f/0x9e0 [kvm] ? static_obj+0xc0/0xc0? __lock_acquired+0x1d2/0x8c0? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm] El problema parece ser que \u0027vcpu_bitmap\u0027 est\u00e1 asignado como un \u00fanico largo en la pila y en realidad deber\u00eda ser KVM_MAX_VCPUS largo. Tambi\u00e9n parece que borramos los 16 bits inferiores con bitmap_zero() sin ning\u00fan motivo en particular (supongo que las variables \u0027bitmap\u0027 y \u0027vcpu_bitmap\u0027 en kvm_bitmap_or_dest_vcpus() causaron la confusi\u00f3n: mientras que la \u00faltima tiene 16 bits de longitud , este \u00faltimo deber\u00eda acomodar todas las vCPU posibles)."
        }
      ],
      "id": "CVE-2021-47390",
      "lastModified": "2024-12-30T20:01:12.947",
      "metrics": {
        "cvssMetricV31": [
          {
            "cvssData": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 7.1,
              "baseSeverity": "HIGH",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
              "version": "3.1"
            },
            "exploitabilityScore": 1.8,
            "impactScore": 5.2,
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      },
      "published": "2024-05-21T15:15:24.397",
      "references": [
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
        },
        {
          "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Patch"
          ],
          "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
        }
      ],
      "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "vulnStatus": "Analyzed",
      "weaknesses": [
        {
          "description": [
            {
              "lang": "en",
              "value": "CWE-125"
            }
          ],
          "source": "nvd@nist.gov",
          "type": "Primary"
        }
      ]
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "arch/x86/kvm/ioapic.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "bebabb76ad9acca8858e0371e102fb60d708e25b",
                    "status": "affected",
                    "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "99a9e9b80f19fc63be005a33d76211dd23114792",
                    "status": "affected",
                    "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "2f9b68f57c6278c322793a06063181deded0ad69",
                    "status": "affected",
                    "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "arch/x86/kvm/ioapic.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.5"
                  },
                  {
                    "lessThan": "5.5",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.10.*",
                    "status": "unaffected",
                    "version": "5.10.71",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.14.*",
                    "status": "unaffected",
                    "version": "5.14.10",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "5.15",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "60C740E4-6C54-40CD-A914-2232D8FC781D",
                    "versionEndExcluding": "5.10.71",
                    "versionStartIncluding": "5.5",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                    "matchCriteriaId": "1A437B0D-8305-4C72-B691-D26986A126CF",
                    "versionEndExcluding": "5.14.10",
                    "versionStartIncluding": "5.11",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc1:*:*:*:*:*:*",
                    "matchCriteriaId": "E46C74C6-B76B-4C94-A6A4-FD2FFF62D644",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc2:*:*:*:*:*:*",
                    "matchCriteriaId": "60134C3A-06E4-48C1-B04F-2903732A4E56",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:o:linux:linux_kernel:5.15:rc3:*:*:*:*:*:*",
                    "matchCriteriaId": "0460DA88-8FE1-46A2-9DDA-1F1ABA552E71",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()\n\nKASAN reports the following issue:\n\n BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798\n\n CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G               X --------- ---\n Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020\n Call Trace:\n  dump_stack+0xa5/0xe6\n  print_address_description.constprop.0+0x18/0x130\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  __kasan_report.cold+0x7f/0x114\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kasan_report+0x38/0x50\n  kasan_check_range+0xf5/0x1d0\n  kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm]\n  ? kvm_arch_exit+0x110/0x110 [kvm]\n  ? sched_clock+0x5/0x10\n  ioapic_write_indirect+0x59f/0x9e0 [kvm]\n  ? static_obj+0xc0/0xc0\n  ? __lock_acquired+0x1d2/0x8c0\n  ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm]\n\nThe problem appears to be that \u0027vcpu_bitmap\u0027 is allocated as a single long\non stack and it should really be KVM_MAX_VCPUS long. We also seem to clear\nthe lower 16 bits of it with bitmap_zero() for no particular reason (my\nguess would be that \u0027bitmap\u0027 and \u0027vcpu_bitmap\u0027 variables in\nkvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed\n16-bit long, the later should accommodate all possible vCPUs)."
          },
          {
            "lang": "es",
            "value": "En el kernel de Linux, se resolvi\u00f3 la siguiente vulnerabilidad: KVM: x86: corrige el acceso a la memoria de pila fuera de los l\u00edmites desde ioapic_write_indirect() KASAN informa el siguiente problema: BUG: KASAN: pila fuera de los l\u00edmites en kvm_make_vcpus_request_mask+ 0x174/0x440 [kvm] Lectura de tama\u00f1o 8 en la direcci\u00f3n ffffc9001364f638 por tarea qemu-kvm/4798 CPU: 0 PID: 4798 Comm: qemu-kvm Contaminado: GX --------- --- Nombre de hardware: AMD Corporaci\u00f3n DAYTONA_X/DAYTONA_X, BIOS RYM0081C 13/07/2020 Seguimiento de llamadas: dump_stack+0xa5/0xe6 print_address_description.constprop.0+0x18/0x130 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] __kasan_report.cold+0x7f/0x114 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kasan_report+0x38/0x50 kasan_check_range+0xf5/0x1d0 kvm_make_vcpus_request_mask+0x174/0x440 [kvm] 0 [kvm] ? kvm_arch_exit+0x110/0x110 [kvm] ? sched_clock+0x5/0x10 ioapic_write_indirect+0x59f/0x9e0 [kvm] ? static_obj+0xc0/0xc0? __lock_acquired+0x1d2/0x8c0? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm] El problema parece ser que \u0027vcpu_bitmap\u0027 est\u00e1 asignado como un \u00fanico largo en la pila y en realidad deber\u00eda ser KVM_MAX_VCPUS largo. Tambi\u00e9n parece que borramos los 16 bits inferiores con bitmap_zero() sin ning\u00fan motivo en particular (supongo que las variables \u0027bitmap\u0027 y \u0027vcpu_bitmap\u0027 en kvm_bitmap_or_dest_vcpus() causaron la confusi\u00f3n: mientras que la \u00faltima tiene 16 bits de longitud , este \u00faltimo deber\u00eda acomodar todas las vCPU posibles)."
          }
        ],
        "id": "CVE-2021-47390",
        "lastModified": "2026-08-04T10:17:01.297",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "CHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 2.0,
              "impactScore": 6.0,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            },
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.1,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "NONE",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.2,
              "source": "nvd@nist.gov",
              "type": "Primary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2021-47390",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-06-17T17:37:17.652949Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2024-05-21T15:15:24.397",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Patch"
            ],
            "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-125"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-04T19:58:31+00:00",
      "cve": "CVE-2021-47390",
      "id": "CVE-2021-47390",
      "initial_release_date": "2021-01-01T00:00:00+00:00",
      "product_status:known_affected": "42",
      "product_status:known_not_affected": "156",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2021/cve-2021-47390.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-11T16:58:41Z",
      "cve": "CVE-2021-47390",
      "id": "CVE-2021-47390",
      "initial_release_date": "2024-05-23T15:55:48Z",
      "product_status:known_affected": "275",
      "product_status:known_not_affected": "266",
      "product_status:recommended": "452",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2021-47390",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2021-47390.json",
      "version": "54"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "providerMetadata": {
              "dateUpdated": "2024-08-04T05:39:59.812Z",
              "orgId": "af854a3a-2127-422b-91ae-364da2661108",
              "shortName": "CVE"
            },
            "references": [
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
              },
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
              },
              {
                "tags": [
                  "x_transferred"
                ],
                "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
              }
            ],
            "title": "CVE Program Container"
          },
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2021-47390",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2024-06-17T17:37:17.652949Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2024-06-17T17:37:18.686Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "arch/x86/kvm/ioapic.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "bebabb76ad9acca8858e0371e102fb60d708e25b",
                  "status": "affected",
                  "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                  "versionType": "git"
                },
                {
                  "lessThan": "99a9e9b80f19fc63be005a33d76211dd23114792",
                  "status": "affected",
                  "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                  "versionType": "git"
                },
                {
                  "lessThan": "2f9b68f57c6278c322793a06063181deded0ad69",
                  "status": "affected",
                  "version": "7ee30bc132c683d06a6d9e360e39e483e3990708",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "arch/x86/kvm/ioapic.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "5.5"
                },
                {
                  "lessThan": "5.5",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "5.10.*",
                  "status": "unaffected",
                  "version": "5.10.71",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "5.14.*",
                  "status": "unaffected",
                  "version": "5.14.10",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "5.15",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.10.71",
                      "versionStartIncluding": "5.5",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.14.10",
                      "versionStartIncluding": "5.5",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.15",
                      "versionStartIncluding": "5.5",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()\n\nKASAN reports the following issue:\n\n BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798\n\n CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G               X --------- ---\n Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020\n Call Trace:\n  dump_stack+0xa5/0xe6\n  print_address_description.constprop.0+0x18/0x130\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  __kasan_report.cold+0x7f/0x114\n  ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kasan_report+0x38/0x50\n  kasan_check_range+0xf5/0x1d0\n  kvm_make_vcpus_request_mask+0x174/0x440 [kvm]\n  kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm]\n  ? kvm_arch_exit+0x110/0x110 [kvm]\n  ? sched_clock+0x5/0x10\n  ioapic_write_indirect+0x59f/0x9e0 [kvm]\n  ? static_obj+0xc0/0xc0\n  ? __lock_acquired+0x1d2/0x8c0\n  ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm]\n\nThe problem appears to be that \u0027vcpu_bitmap\u0027 is allocated as a single long\non stack and it should really be KVM_MAX_VCPUS long. We also seem to clear\nthe lower 16 bits of it with bitmap_zero() for no particular reason (my\nguess would be that \u0027bitmap\u0027 and \u0027vcpu_bitmap\u0027 variables in\nkvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed\n16-bit long, the later should accommodate all possible vCPUs)."
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "baseScore": 8.8,
                "baseSeverity": "HIGH",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H",
                "version": "3.1"
              },
              "scenarios": [
                {
                  "lang": "en",
                  "value": "AV:L - The bug is reached when a guest writes the in-kernel IOAPIC MMIO window (0xfec00000), causing a KVM MMIO exit into ioapic_mmio_write \u2192 ioapic_write_indirect on the host; this is a local hypervisor/guest interface, not a network protocol path.\nAC:L - A guest (or VMM user who creates the VM) can reliably trigger the path by writing an IOAPIC redirect entry with FIXED delivery mode; the undersized bitmap is always over-read, and with \u226565 vCPUs the attacker-controlled dest can also force out-of-bounds __set_bit writes with no race or uncontrolled condition.\nPR:L - Exploitation needs only the ability to run a KVM guest that uses the in-kernel irqchip\u2014typically an unprivileged kvm-group user on /dev/kvm, or a cloud tenant controlling their guest OS\u2014not real host root/CAP_SYS_ADMIN.\nUI:N - No victim action is required; the attacker triggers the vulnerable IOAPIC write path directly from guest code or their own VMM once the VM exists.\nS:C - A malicious guest corrupts host-kernel stack memory in KVM\u2019s IOAPIC emulation, crossing the guest/host security boundary and enabling a potential VM escape affecting the host and other tenants.\nC:H - kvm_make_vcpus_request_mask performs a stack out-of-bounds read of the undersized vcpu_bitmap across KVM_MAX_VCPUS bits (~128 bytes), and stack corruption from the related OOB write can be leveraged for further host memory disclosure.\nI:H - kvm_bitmap_or_dest_vcpus uses __set_bit() on vcpu_idx values that can exceed the single unsigned long (bits \u226564), writing past the stack allocation toward higher stack addresses and enabling host memory corruption / control-flow hijacking.\nA:H - The out-of-bounds stack access can oops/panic the host kernel (as shown by the KASAN report in qemu-kvm), so availability impact on the host is high."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-08-05T08:47:35.643Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/bebabb76ad9acca8858e0371e102fb60d708e25b"
            },
            {
              "url": "https://git.kernel.org/stable/c/99a9e9b80f19fc63be005a33d76211dd23114792"
            },
            {
              "url": "https://git.kernel.org/stable/c/2f9b68f57c6278c322793a06063181deded0ad69"
            }
          ],
          "title": "KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect()",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2021-47390",
        "datePublished": "2024-05-21T15:03:48.883Z",
        "dateReserved": "2024-05-21T14:58:30.813Z",
        "dateUpdated": "2026-08-05T08:47:35.643Z",
        "state": "PUBLISHED"
      },
      "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…

Related by attack behaviour

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


Loading…