{"id":21570,"date":"2026-09-12T04:31:22","date_gmt":"2026-09-11T20:31:22","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89648"},"modified":"2026-09-12T04:31:22","modified_gmt":"2026-09-11T20:31:22","slug":"cve-2026-89648","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89648","title":{"rendered":"CVE-2026-89648 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nceph: cap delegated i"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ceph: cap delegated inode count in ceph_parse_deleg_inos()<\/p>\n<p>ceph_parse_deleg_inos() decodes interval sets of delegated inode numbers<br \/>\nfrom an MDS create-with-delegation reply. For each set it reads a 64-bit<br \/>\nstart and a 64-bit len with ceph_decode_64_safe(), which only validates<br \/>\nthat the eight bytes are present in the message, not the value, and then<br \/>\nloops over len while inserting entries into s_delegated_inos.<\/p>\n<p>len is fully attacker controlled. A malicious or compromised MDS can send<br \/>\none huge interval, many intervals in one reply, duplicate intervals, or<br \/>\nrepeated replies that accumulate delegated inodes on the same session.<br \/>\nThe original code bounded none of these and could spin the insert loop or<br \/>\ngrow the xarray without limit.<\/p>\n<p>Bound both dimensions with a single enforcement point. Track the number<br \/>\nof delegated inodes held by each MDS session in an atomic counter and<br \/>\ngrow it only in ceph_insert_deleg_ino(), which uses atomic_add_unless()<br \/>\nto refuse to push the count past CEPH_MAX_DELEG_INOS. Because that helper<br \/>\nis the only place the counter grows, the per-session population can never<br \/>\nexceed the cap, so no separate per-session pre-check is needed. The<br \/>\ncounter is decremented when async create consumes a delegated inode or<br \/>\nwhen an insert fails, incremented when a delegated inode is restored,<br \/>\ninitialized with the session xarray, and reset when reconnect destroys<br \/>\nthe xarray.<\/p>\n<p>A per-session cap alone still lets one reply spin the insert loop on<br \/>\nduplicate ranges without growing the counter, so also cap the aggregate<br \/>\ninterval length accepted from a single reply. Together these bound both<br \/>\nthe loop trip count per reply and the xarray population across replies.<\/p>\n<p>The cap is a fixed, client-chosen constant rather than a value derived<br \/>\nfrom the MDS. mds_client_prealloc_inos is a userspace MDS configuration<br \/>\noption; it is never sent to the kernel client on the wire, and a<br \/>\nserver-supplied bound could not be trusted for a defensive limit in any<br \/>\ncase. The constant is set well above that option&#8217;s documented default of<br \/>\n1000 (a generous multiple), so legitimate refill behavior is unaffected<br \/>\nwhile the CPU and xarray memory a malformed delegation stream can consume<br \/>\nstays bounded.<\/p>\n<p>Impact: a malicious or compromised Ceph MDS can no longer make a client<br \/>\nspin through an unbounded delegated-inode interval or grow one session&#8217;s<br \/>\ndelegated-inode xarray without limit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ceph: cap delegated inode count in ceph_parse_deleg_inos()<\/p>\n<p>ceph_parse_deleg_inos() decodes interval sets of delegated inode number<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21570","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21570","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=21570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}