{"id":26060,"date":"2026-09-18T04:32:17","date_gmt":"2026-09-17T20:32:17","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93203"},"modified":"2026-09-18T04:32:17","modified_gmt":"2026-09-17T20:32:17","slug":"cve-2026-93203","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93203","title":{"rendered":"CVE-2026-93203 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nbatman-adv: bla: avoi"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>batman-adv: bla: avoid CRC corruption due to parallel claim add<\/p>\n<p>batadv_bla_add_claim() is used to add claims and modify the backbone of<br \/>\nclaims for CLAIM frames from remote backbones and local packets. When it<br \/>\nhandles a claim, it needs to either<\/p>\n<p>* add the new claim&#8217;s CRC to the backbone CRC<br \/>\n* remove the already existing claim&#8217;s CRC from the old backbone and add it<br \/>\n  to the new backbone<\/p>\n<p>But when the &#8220;new&#8221; claim code was running in parallel to the &#8220;change<br \/>\nbackbone&#8221; code, it can happen that the CRC was invalid because the<br \/>\nbackbone_gw of the claim was changed twice in the &#8220;new&#8221; claim code path:<\/p>\n<p>* CPU0 creates the claim for gateway A and publishes it in the claim<br \/>\n  hash. The crc16 of the address has not yet been added to A&#8217;s crc at<br \/>\n  this point.<\/p>\n<p>* CPU1 processes a claim frame of gateway B for the same client, finds<br \/>\n  the just published claim, and performs the ownership change: it<br \/>\n  switches the pointer to B, removes the crc16 from A&#8217;s crc &#8211; which<br \/>\n  never contained it &#8211; and adds it to B&#8217;s crc.<\/p>\n<p>* CPU0 continues behind the creation branch, unconditionally switches<br \/>\n  the pointer back to A without compensating B&#8217;s crc (its remove_crc<br \/>\n  is false for the creation path), and finally adds the crc16 to A&#8217;s<br \/>\n  crc<\/p>\n<p>The CRC is then wrong for both:<\/p>\n<p>* claim belongs to A: but CRC is not part of backbone A&#8217;s CRC<br \/>\n* claim doesn&#8217;t belong to B: CRC is still part of backbone B&#8217;s CRC<\/p>\n<p>This wrong CRC is never recomputated from the stored claims. For local<br \/>\nbackbone claims, this can also not recovered using syncs.<\/p>\n<p>To avoid this, split the functionality in clear separate parts:<\/p>\n<p>* new claim which always adds claim CRC to the backbone CRC (but never<br \/>\n  changes the already set backbone_gw of the claim back)<\/p>\n<p>* update of existing claim which automatically changes the backbone_gw<br \/>\n  entry and only updates both backbone CRCs when there was an actual change<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>batman-adv: bla: avoid CRC corruption due to parallel claim add<\/p>\n<p>batadv_bla_add_claim() is used to add claims and modify the backbo<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-26060","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/26060","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=26060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=26060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=26060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}