Skip to content
OpenAdvisories
High · 7.5 CVE-2026-85644 EUVD-2026-88344GHSA-ch9g-92vf-wwhv

XS::Parse::Infix versions from 0.40 through 0.49 for Perl treat a number as an array reference

Published Sep 28, 2026 · Updated Sep 30, 2026 · Assigned by CPANSec

Description

XS::Parse::Infix versions from 0.40 through 0.49 for Perl treat a number as an array reference.

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's value and SvTYPE() dereferences it at offset 12. This will generally result in a segmentation fault.

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.

An ordinary string'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.

A simple proof-of-concept uses the zip operator:

use Syntax::Operator::Zip 'zip';

my @args = ([1], 2);
zip(@args);

Affected products

VendorProductAffectedFixed
— XS-Parse-Keyword 0.40 – ≤ 0.49 —

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 libxs-parse-keyword-perl 0.51-1 —
Debian 13 libxs-parse-keyword-perl No fix yet —
ReleasePackageFixed inAdvisory
Ubuntu 26.10 libxs-parse-keyword-perl 0.49-1ubuntu1 USN-8940-1
Ubuntu 26.04 LTS libxs-parse-keyword-perl 0.49-1ubuntu0.1 USN-8940-1
ReleasePackageFixed inAdvisory
SLES for SAP 16.0 perl-XS-Parse-Keyword 0.480.0-160000.3.1 SUSE-SU-2026:24244-1
SLES 16.0 perl-XS-Parse-Keyword 0.480.0-160000.3.1 SUSE-SU-2026:24244-1
ReleasePackageFixed inAdvisory
openSUSE Tumbleweed perl-XS-Parse-Keyword 0.500.0-1.1 openSUSE-SU-2026:11863-1
openSUSE Leap 16.0 perl-XS-Parse-Keyword 0.480.0-160000.3.1 openSUSE-SU-2026:22101-1

Advisories 4

References