{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-64106","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-07-19T07:54:57.034Z","datePublished":"2026-07-19T15:40:09.344Z","dateUpdated":"2026-08-05T12:39:16.848Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T12:39:16.848Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: arm64: vgic-its: Reject restored DTE with out-of-range num_eventid_bits\n\nUserspace can restore an ITS Device Table Entry whose Size field encodes\nmore EventID bits than the virtual ITS supports.  The live MAPD path\nrejects that state, but vgic_its_restore_dte() accepts it and stores the\nout-of-range value in dev->num_eventid_bits.\n\nReject restored DTEs with num_eventid_bits > VITS_TYPER_IDBITS before\nallocating the device.  This mirrors the MAPD check and prevents the\nrestored state from reaching vgic_its_restore_itt(), where the unchecked\nvalue can be converted into an oversized scan_its_table() range."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:H","baseScore":9,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:L - The bug is reached only through the KVM device ioctl path (KVM_SET_DEVICE_ATTR with KVM_DEV_ARM_ITS_RESTORE_TABLES), which requires a local process with access to a VM file descriptor; it is not triggered by network packets or guest MMIO/ITS commands.\nAC:L - An attacker can reliably plant a crafted Device Table Entry in guest RAM (Size field encoding 17–32 EventID bits) and have it processed during migration/snapshot restore; no race or attacker-uncontrollable memory layout is required, and the live MAPD path already proves the invalid state is straightforward to supply.\nPR:N - The highest-impact scenario is a malicious cloud VM tenant who needs no host privileges: they write a malformed DTE directly into guest physical memory (bypassing MAPD validation) and trigger host-side restore during automated live migration or snapshot resume, without requiring /dev/kvm or root on the host.\nUI:N - Exploitation does not require victim interaction beyond normal hypervisor operations such as automated live migration or snapshot restore that the attacker can initiate as a VM tenant; no end-user action like opening a file is needed.\nS:C - The vulnerability crosses the VM security boundary because guest-controlled saved state causes the host kernel to perform an oversized ITS table scan and mass kernel allocations, impacting host availability outside the guest's security scope.\nC:H - The unchecked num_eventid_bits value inflates scan_its_table()'s range up to BIT_ULL(32)*8 bytes (and can wrap the int size parameter for values 28–31), causing the host kernel to read far beyond the valid ITT bounds through kvm_read_guest_lock across a large guest GPA span.\nI:N - The flaw causes excessive guest-memory reads and kernel object allocation but does not corrupt or write host kernel memory; there is no demonstrated arbitrary host write, use-after-free, or code-execution primitive from this bug alone.\nA:H - The oversized scan can loop for an enormous number of kvm_read_guest_lock iterations (worse when the truncated int size wraps to a huge unsigned length), and valid-looking restored ITEs can drive unbounded vgic_add_lpi/kzalloc allocations, exhausting host CPU and memory and causing severe denial of service."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/arm64/kvm/vgic/vgic-its.c"],"versions":[{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"1716b7fea2ead941a0dfac06c4504a3437cdf00d","status":"affected","versionType":"git"},{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"dab9f93251b2c86a033de6098d0c73afddd55d4a","status":"affected","versionType":"git"},{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"b94538186a3eae3763b8f96dacd610920a865aa7","status":"affected","versionType":"git"},{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"0680f511926589206f81f57f76ce131d7741a316","status":"affected","versionType":"git"},{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"8bcd15b690a390241179516af1b6ae49ebfd9d95","status":"affected","versionType":"git"},{"version":"57a9a117154c93539e33161dd318e6aeb8c04efa","lessThan":"9ce754ed8e7ab4e3999767ce1505f85c449ccb07","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/arm64/kvm/vgic/vgic-its.c"],"versions":[{"version":"4.12","status":"affected"},{"version":"0","lessThan":"4.12","status":"unaffected","versionType":"semver"},{"version":"6.1.175","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.142","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.92","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.34","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.0.11","lessThanOrEqual":"7.0.*","status":"unaffected","versionType":"semver"},{"version":"7.1","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.1.175"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.6.142"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.12.92"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.18.34"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"7.0.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"7.1"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/1716b7fea2ead941a0dfac06c4504a3437cdf00d"},{"url":"https://git.kernel.org/stable/c/dab9f93251b2c86a033de6098d0c73afddd55d4a"},{"url":"https://git.kernel.org/stable/c/b94538186a3eae3763b8f96dacd610920a865aa7"},{"url":"https://git.kernel.org/stable/c/0680f511926589206f81f57f76ce131d7741a316"},{"url":"https://git.kernel.org/stable/c/8bcd15b690a390241179516af1b6ae49ebfd9d95"},{"url":"https://git.kernel.org/stable/c/9ce754ed8e7ab4e3999767ce1505f85c449ccb07"}],"title":"KVM: arm64: vgic-its: Reject restored DTE with out-of-range num_eventid_bits","x_generator":{"engine":"bippy-1.2.0"}}}}