{"id":21417,"date":"2026-09-12T04:31:09","date_gmt":"2026-09-11T20:31:09","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89495"},"modified":"2026-09-12T04:31:09","modified_gmt":"2026-09-11T20:31:09","slug":"cve-2026-89495","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-89495","title":{"rendered":"CVE-2026-89495 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nocfs2: bound namelen"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ocfs2: bound namelen in dlm_migrate_request_handler<\/p>\n<p>Patch series &#8220;ocfs2\/dlm: bound peer-controlled lengths in the o2dlm&#8221;.<\/p>\n<p>The o2dlm receive handlers trust u8 length and count fields from the wire<br \/>\nwithout bounding them, so a node in a DLM domain can corrupt or panic any<br \/>\nother node with a malformed message.  Three defects:<\/p>\n<p>  &#8211; dlm_migrate_request_handler() passes migrate-&gt;namelen unchecked to<br \/>\n    dlm_init_mle(), which memcpy()s it into the 32-byte mname[] of an<br \/>\n    o2dlm_mle slab object: a heap out-of-bounds write of up to ~215<br \/>\n    attacker-controlled bytes.<\/p>\n<p>  &#8211; dlm_mig_lockres_handler() passes mres-&gt;lockname_len unchecked to<br \/>\n    dlm_init_lockres(), which memcpy()s it into the 32-byte o2dlm_lockname<br \/>\n    slab object: a heap out-of-bounds write of up to ~223 bytes.<\/p>\n<p>  &#8211; the same handler trusts mres-&gt;num_locks without checking that the<br \/>\n    message is large enough to hold that many entries, so<br \/>\n    dlm_process_recovery_data() walks mres-&gt;ml[] past the kmalloc(data_len)<br \/>\n    copy and trips a BUG_ON (an out-of-bounds read ending in a panic).<\/p>\n<p>The other o2dlm receive handlers already reject an oversized name; the<br \/>\nmigration and recovery handlers have omitted it since the DLM was added<br \/>\n(see the Fixes tags).  Patch 1 bounds namelen; patch 2 validates<br \/>\nlockname_len, num_locks, and the payload size.  Conforming recovery and<br \/>\nmigration traffic is unaffected.<\/p>\n<p>o2net authenticates peers only by the DLM domain key, so any node that has<br \/>\njoined the domain &#8212; including a compromised or malicious member &#8212; can<br \/>\nsend these messages.  There is no local trigger; the attacker must already<br \/>\nbe a member of the cluster.<\/p>\n<p>Each sink was confirmed under KASAN with an out-of-tree module mirroring<br \/>\nit exactly &#8212; a kmem_cache\/kmalloc of the real destination size, then the<br \/>\nsame unclamped memcpy\/loop: slab-out-of-bounds Write for the two writes,<br \/>\nRead for the recovery walk, and a panic.  A userspace AddressSanitizer<br \/>\nbuild faults identically under -m32 and -m64.  Scrubbed logs are available<br \/>\non request.<\/p>\n<p>I reported this privately to security@kernel.org and the ocfs2 maintainers<br \/>\non 2026-06-20; with no response after the standard embargo period I am<br \/>\nposting the fix publicly.  I have no embargo requirement.<\/p>\n<p>This patch (of 2):<\/p>\n<p>A node receiving a DLM_MIGRATE_REQUEST message trusts the peer-supplied<br \/>\nname length (migrate-&gt;namelen) without bounding it.  dlm_init_mle() then<br \/>\ncopies that many bytes into the fixed DLM_LOCKID_NAME_MAX-byte mname[]<br \/>\narray of an o2dlm_mle slab object, so a malformed message from a cluster<br \/>\npeer overflows the slab object by up to ~215 bytes: a heap out-of-bounds<br \/>\nwrite of attacker-controlled data, reachable by any node in the domain.<\/p>\n<p>Reject an oversized name, the way dlm_master_request_handler() and the<br \/>\nother o2dlm receive handlers already do; the migration handler omits the<br \/>\ncheck entirely.  Conforming messages are unaffected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ocfs2: bound namelen in dlm_migrate_request_handler<\/p>\n<p>Patch series &#8220;ocfs2\/dlm: bound peer-controlled lengths in the o2dlm&#8221;.<\/p>\n<p>The o2d<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-21417","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/21417","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=21417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=21417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=21417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}