{"id":11966,"date":"2026-09-04T18:53:59","date_gmt":"2026-09-04T10:53:59","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80561"},"modified":"2026-09-04T18:53:59","modified_gmt":"2026-09-04T10:53:59","slug":"cve-2026-80561","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-80561","title":{"rendered":"CVE-2026-80561 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nlibceph: fix multiple"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>libceph: fix multiple unsafe decodes in decode_locker()<\/p>\n<p>decode_locker() in cls_lock_client.c contains three unsafe decode<br \/>\noperations that allow a malicious or compromised OSD to trigger<br \/>\nslab-out-of-bounds reads:<\/p>\n<p>1. ceph_decode_copy() at the locker_id_t name field has no preceding<br \/>\n   bounds check. With p == end after ceph_start_decoding() accepts<br \/>\n   struct_len=0, this reads sizeof(ceph_entity_name) = 9 bytes past<br \/>\n   the validated buffer boundary.<\/p>\n<p>2. *p += sizeof(struct ceph_timespec) after the locker_info_t header<br \/>\n   is an unchecked pointer advance. A malicious OSD can position p<br \/>\n   past end, causing all subsequent _safe checks to pass against a<br \/>\n   bogus boundary.<\/p>\n<p>3. len = ceph_decode_32(p) has no preceding bounds check, and the<br \/>\n   immediately following *p += len is uncapped. A malicious OSD can<br \/>\n   send len=0xffffffff, advancing p gigabytes past end and escaping<br \/>\n   the decode window entirely.<\/p>\n<p>Fix all three by replacing bare operations with their safe variants:<br \/>\n  ceph_decode_copy   -&gt; ceph_decode_copy_safe<br \/>\n  *p += sizeof(&#8230;)  -&gt; ceph_decode_skip_n<br \/>\n  ceph_decode_32(p)  -&gt; ceph_decode_32_safe<br \/>\n  *p += len          -&gt; ceph_decode_skip_n<\/p>\n<p>A new label is added to return -EINVAL on any bounds violation.<br \/>\n-EINVAL is appropriate here: the data received from the OSD<br \/>\nis structurally malformed, which is an invalid argument to the decode<br \/>\ncontract regardless of whether the caller or the wire is at fault.<\/p>\n<p>Attacker model: a malicious or compromised OSD in a multi-tenant Ceph<br \/>\ndeployment can trigger this against any kernel client that issues the<br \/>\nlock.get_info class method (e.g. during RBD exclusive lock acquisition)<br \/>\nwithout any further privileges beyond OSD session establishment.<\/p>\n<p>[ idryomov: use ceph_decode_skip_string() to skip description, trim<br \/>\n  changelog ]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>libceph: fix multiple unsafe decodes in decode_locker()<\/p>\n<p>decode_locker() in cls_lock_client.c contains three unsafe decode<br \/>\noperatio<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-11966","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/11966","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=11966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=11966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=11966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}