{"id":30258,"date":"2026-09-29T04:30:48","date_gmt":"2026-09-28T20:30:48","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-85644"},"modified":"2026-09-29T04:30:48","modified_gmt":"2026-09-28T20:30:48","slug":"cve-2026-85644","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-85644","title":{"rendered":"CVE-2026-85644 &#8211; XS::Parse::Infix versions from 0.40 through 0.49 for Perl treat a number as an array refer"},"content":{"rendered":"<p>XS::Parse::Infix versions from 0.40 through 0.49 for Perl treat a number as an array reference.<\/p>\n<p>The wrapper function XS::Parse::Infix generates for a list-associative infix operator checks whether arguments are array references, but it tests using SvRV() rather than SvROK(). SvRV() reads a union slot that only holds a referent once SvROK(sv) is true, so the guard never validates that it is a reference. For an IV or NV that slot holds the number itself, SvRV() returns the caller&#8217;s value and SvTYPE() dereferences it at offset 12. This will generally result in a segmentation fault.<\/p>\n<p>An application that hands the wrapper a list built from decoded input (for example, from JSON) lets whoever supplies a number in that list choose the address that the interpreter dereferences.<\/p>\n<p>An ordinary string&#8217;s byte 12 is rarely SVt_PVAV so the guard croaks by luck, but an attacker-crafted string carrying 0x0b there passes, and the buffer is then used as an AV head, with AvARRAY taken from bytes 16-23 and its entries pushed onto the Perl stack as live SVs.<\/p>\n<p>A simple proof-of-concept uses the zip operator:<\/p>\n<p>    use Syntax::Operator::Zip &#8216;zip&#8217;;<\/p>\n<p>    my @args = ([1], 2);<br \/>\n    zip(@args);<\/p>\n","protected":false},"excerpt":{"rendered":"<p>XS::Parse::Infix versions from 0.40 through 0.49 for Perl treat a number as an array reference.<\/p>\n<p>The wrapper function XS::Parse::Infix generates for a list-associative infix operator checks whether ar<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-30258","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/30258","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=30258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=30258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=30258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}