{"cve":{"cve_id":"CVE-2026-52969","is_kev":false,"kev_date_added":null,"kev_vendor_project":null,"kev_product":null,"kev_vulnerability_name":null,"kev_short_description":null,"kev_required_action":null,"kev_due_date":null,"kev_known_ransomware":null,"kev_notes":null,"kev_cwes":null,"epss_score":null,"epss_percentile":null,"epss_as_of":null,"description":"In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: Reject wrapped offset in kvm_reset_dirty_gfn()\n\nkvm_reset_dirty_gfn() guards the gfn range with\n\n\tif (!memslot || (offset + __fls(mask)) >= memslot->npages)\n\t\treturn;\n\nbut offset is u64 and the addition is unchecked.  The check can be\nsilently bypassed by a u64 wrap.\n\nThe dirty ring backing those entries is MAP_SHARED at\nKVM_DIRTY_LOG_PAGE_OFFSET of the vcpu fd, so the VMM can rewrite the\nslot and offset fields of any entry between when the kernel pushes\nthem and when KVM_RESET_DIRTY_RINGS consumes them.  On reset,\nkvm_dirty_ring_reset() re-reads the values via READ_ONCE() and feeds\nthem straight back into this check; only the flags handshake is\ntreated as the handover, the slot/offset payload is taken on trust.\n\nCrafting two entries\n\n\tentry[i].offset   = 0xffffffffffffffc1\n\tentry[i+1].offset = 0\n\nmakes the coalescing loop in kvm_dirty_ring_reset() compute\n\n\tdelta = (s64)(0 - 0xffffffffffffffc1) = 63\n\nwhich falls in [0, BITS_PER_LONG), so it folds entry[i+1] into the\nexisting mask by setting bit 63.  The trailing kvm_reset_dirty_gfn()\ncall then sees offset = 0xffffffffffffffc1 and __fls(mask) = 63;\nthe sum is 0 in u64 and the bounds check passes.\n\nThat offset propagates into kvm_arch_mmu_enable_log_dirty_pt_masked()\nunchanged.  On the legacy MMU path -- kvm_memslots_have_rmaps() ==\ntrue, i.e. shadow paging, any VM that has allocated shadow roots, or\na write-tracked slot -- it reaches gfn_to_rmap(), which indexes\nslot->arch.rmap[0][] with a near-U64_MAX gfn.  That is an\nout-of-bounds load of a kvm_rmap_head, followed by a conditional\nclear of PT_WRITABLE_MASK in whatever the loaded pointer points at.\nThe path is reachable from any process holding /dev/kvm.\n\nRange-check offset on its own first, so the addition cannot wrap.\nmemslot->npages is bounded well below U64_MAX, so once offset <\nnpages holds, offset + __fls(mask) (with __fls(mask) < BITS_PER_LONG)\nstays in range.","published_at":"2026-06-24T16:28:48.085000Z","last_modified_at":null,"cvss_v3_score":null,"cvss_v3_vector":null,"cvss_v3_severity":null,"cvss_v4_score":null,"cvss_v4_vector":null,"cvss_v4_severity":null,"ssvc_decision":null,"ssvc_exploitation":null,"ssvc_automatable":null,"ssvc_technical_impact":null,"cwes":null,"nvd_references":["https://git.kernel.org/stable/c/74f1a22f7a80f03d28ad8551a2d25d563433addf","https://git.kernel.org/stable/c/0eb281eb95b2d4eea4db1da5fe91023aecc97095","https://git.kernel.org/stable/c/01b71b930f15728aa8599478a7ce90c19dcd9fc2","https://git.kernel.org/stable/c/b315b033a877b1ee6d827810b5d7bb4392ffcf8d","https://git.kernel.org/stable/c/0d419c23bb11b5c9664de777c47c1f04a235882d","https://git.kernel.org/stable/c/ecf9b3ea7847fe14f34b8c41f00de1eb95c747da","https://git.kernel.org/stable/c/577a8d3bae0531f0e5ccfac919cd8192f920a804"],"vuln_status":null,"trending_score":null,"is_trending":false,"has_trended":false,"trended_number_one":false,"trending_peak_score":null,"trending_peak_rank":null,"started_trending_at":null,"trended_number_one_at":null,"summary_generated":null,"summary_generated_at":null,"summary_model":null,"created_at":"2026-06-28T17:55:22.518073Z","updated_at":"2026-06-28T23:30:49.890169Z"},"effective_severity":null,"badges":[],"impact_analysis":[],"cvss_v3_decoded":{"version":null,"metrics":[]},"cvss_v4_decoded":{"version":null,"metrics":[]},"affected":[{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"74f1a22f7a80f03d28ad8551a2d25d563433addf","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:74f1a22f7a80f03d28ad8551a2d25d563433addf"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"0eb281eb95b2d4eea4db1da5fe91023aecc97095","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:0eb281eb95b2d4eea4db1da5fe91023aecc97095"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"01b71b930f15728aa8599478a7ce90c19dcd9fc2","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:01b71b930f15728aa8599478a7ce90c19dcd9fc2"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"b315b033a877b1ee6d827810b5d7bb4392ffcf8d","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:b315b033a877b1ee6d827810b5d7bb4392ffcf8d"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"0d419c23bb11b5c9664de777c47c1f04a235882d","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:0d419c23bb11b5c9664de777c47c1f04a235882d"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"ecf9b3ea7847fe14f34b8c41f00de1eb95c747da","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:ecf9b3ea7847fe14f34b8c41f00de1eb95c747da"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"fb04a1eddb1a65b6588a021bdc132270d5ae48bb","version_start_inclusive":true,"version_end":"577a8d3bae0531f0e5ccfac919cd8192f920a804","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:fb04a1eddb1a65b6588a021bdc132270d5ae48bb:577a8d3bae0531f0e5ccfac919cd8192f920a804"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"5.11","version_start_inclusive":true,"version_end":"5.11","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:5.11:5.11"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"0","version_start_inclusive":true,"version_end":"5.11","version_end_inclusive":false,"cpe23_uri":"cve5:linux:linux:0:5.11"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"5.15.209","version_start_inclusive":true,"version_end":"5.15.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:5.15.209:5.15.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"6.1.175","version_start_inclusive":true,"version_end":"6.1.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:6.1.175:6.1.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"6.6.141","version_start_inclusive":true,"version_end":"6.6.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:6.6.141:6.6.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"6.12.91","version_start_inclusive":true,"version_end":"6.12.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:6.12.91:6.12.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"6.18.33","version_start_inclusive":true,"version_end":"6.18.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:6.18.33:6.18.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"7.0.10","version_start_inclusive":true,"version_end":"7.0.*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:7.0.10:7.0.*"},{"vendor_slug":"linux","vendor_name":"Linux","product_slug":"linux","product_name":"Linux","version_start":"7.1","version_start_inclusive":true,"version_end":"*","version_end_inclusive":true,"cpe23_uri":"cve5:linux:linux:7.1:*"}],"exploit_refs":[],"news":[],"references":[{"url":"https://git.kernel.org/stable/c/74f1a22f7a80f03d28ad8551a2d25d563433addf","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/0eb281eb95b2d4eea4db1da5fe91023aecc97095","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/01b71b930f15728aa8599478a7ce90c19dcd9fc2","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/b315b033a877b1ee6d827810b5d7bb4392ffcf8d","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/0d419c23bb11b5c9664de777c47c1f04a235882d","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/ecf9b3ea7847fe14f34b8c41f00de1eb95c747da","source_type":"MISC","tags":[]},{"url":"https://git.kernel.org/stable/c/577a8d3bae0531f0e5ccfac919cd8192f920a804","source_type":"MISC","tags":[]}],"timeline":[{"type":"published","at":"2026-06-24T16:28:48.085000Z","label":"CVE published","source":null}]}