{"id":11962,"date":"2026-09-04T18:53:59","date_gmt":"2026-09-04T10:53:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80557"},"modified":"2026-09-04T18:53:59","modified_gmt":"2026-09-04T10:53:59","slug":"cve-2026-80557","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80557","title":{"rendered":"CVE-2026-80557 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nlibceph: fix OOB read"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>libceph: fix OOB read in decode_watchers() via missing bounds check<\/p>\n<p>ceph_start_decoding() validates that struct_len bytes remain in the<br \/>\nbuffer after the encoding header, but accepts struct_len=0 as valid:<br \/>\nceph_decode_need(p, end, 0, bad) always passes. When a malicious or<br \/>\ncompromised OSD sends an obj_list_watch_response_t reply with<br \/>\nstruct_len=0, ceph_start_decoding() returns success with p == end,<br \/>\nleaving zero bytes guaranteed for subsequent reads.<\/p>\n<p>The immediately following ceph_decode_32(p) in decode_watchers() has<br \/>\nno preceding bounds check. With p == end this is a 4-byte read past<br \/>\nthe validated buffer boundary. The garbage value is then passed<br \/>\ndirectly to kzalloc_objs() as the watcher count.<\/p>\n<p>The sibling function decode_watcher() already uses the safe variants<br \/>\n(ceph_decode_copy_safe, ceph_decode_64_safe, ceph_decode_skip_32)<br \/>\nafter its own ceph_start_decoding() call. decode_watchers() is the<br \/>\nonly site that uses the bare variant, confirming an oversight.<\/p>\n<p>Fix by replacing ceph_decode_32(p) with ceph_decode_32_safe(p, end,<br \/>\n*num_watchers, bad), consistent with the established pattern.<\/p>\n<p>Attacker model: a malicious or compromised OSD in a multi-tenant Ceph<br \/>\ndeployment (e.g. cloud) can trigger this against any kernel client<br \/>\nthat calls CEPH_OSD_OP_LIST_WATCHERS, without any further privileges<br \/>\nbeyond OSD session establishment.<\/p>\n<p>[ idryomov: trim changelog ]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>libceph: fix OOB read in decode_watchers() via missing bounds check<\/p>\n<p>ceph_start_decoding() validates that struct_len bytes remain i<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-11962","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/11962","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=11962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}