{"id":29147,"date":"2026-09-25T20:31:59","date_gmt":"2026-09-25T12:31:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97991"},"modified":"2026-09-25T20:31:59","modified_gmt":"2026-09-25T12:31:59","slug":"cve-2026-97991","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97991","title":{"rendered":"CVE-2026-97991 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nvdpa_sim_blk: reject"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>vdpa_sim_blk: reject out-of-range sector starts<\/p>\n<p>vdpasim_blk_check_range() logs an invalid start sector but continues<br \/>\nvalidating the request.  The subsequent unsigned capacity subtraction can<br \/>\nunderflow and let an out-of-range buffer offset reach the data path.<\/p>\n<p>The invalid offset is used by three request paths.  VIRTIO_BLK_T_OUT<br \/>\ncopies guest data to blk-&gt;buffer + offset through<br \/>\nvringh_iov_pull_iotlb(), causing an out-of-bounds write in<br \/>\n_copy_from_iter() or memcpy().  VIRTIO_BLK_T_IN copies from<br \/>\nblk-&gt;buffer + offset to the guest through vringh_iov_push_iotlb(),<br \/>\ncausing an out-of-bounds read in _copy_to_iter().<br \/>\nVIRTIO_BLK_T_WRITE_ZEROES passes blk-&gt;buffer + offset to memset(),<br \/>\ncausing an out-of-bounds write.<\/p>\n<p>Reject starts at or beyond the capacity before the subtraction.  Treat the<br \/>\ncapacity boundary as invalid because the IN and OUT paths round byte counts<br \/>\ndown to sectors for validation but later copy the original byte counts.  A<br \/>\nsub-sector request at the capacity boundary would otherwise still access<br \/>\npast the end of the buffer.<\/p>\n<p>I found this bug myself, though the patch was written with AI assistance.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>vdpa_sim_blk: reject out-of-range sector starts<\/p>\n<p>vdpasim_blk_check_range() logs an invalid start sector but continues<br \/>\nvalidating th<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29147","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}