| Name | CVE-2026-73194 |
| Description | DBI versions before 1.652 for Perl allow a heap out-of-bounds write via an unvalidated numeric placeholder that sets the binder counter in preparse. preparse reserves seven output bytes per input byte, the width of the longest ':p99999' expansion. The ':N' branch parses the number with `atoi(src)` and assigns it to the binder counter with no range check, so a statement containing ':2147483648' leaves the counter negative (-2147483648 with glibc, where atoi wraps). Each following '?' then expands through `sprintf(start, ":p%d", idx++)` to ':p-2147483648', 14 bytes with the terminating NUL where the buffer budgets 7. The placeholder limit added in 1.650 tests the counter against 99,999, which a negative counter passes. Any caller that preparses an untrusted statement into ':pN' style placeholders gets a heap out-of-bounds write that grows with the number of '?' marks following the poisoned placeholder. The '?' and '%s' return styles compare the parsed number against the expected sequence and error out, and are unaffected. |
| Source | CVE (at NVD; CERT, ENISA, LWN, oss-sec, fulldisc, Debian ELTS, Red Hat, Ubuntu, Gentoo, SUSE bugzilla/CVE, GitHub advisories/code/issues, web search, more) |
| References | DLA-4764-1, DSA-6473-1 |
| Debian Bugs | 1144471 |
The table below lists information on source packages.
| Source Package | Release | Version | Status |
|---|---|---|---|
| libdbi-perl (PTS) | bookworm | 1.643-4+deb12u1 | vulnerable |
| bookworm (security) | 1.643-4+deb12u2 | fixed | |
| trixie (security), trixie | 1.652-2~deb13u1 | fixed | |
| forky, sid | 1.653-1 | fixed |
The information below is based on the following data on fixed versions.
| Package | Type | Release | Fixed Version | Urgency | Origin | Debian Bugs |
|---|---|---|---|---|---|---|
| libdbi-perl | source | bullseye | 1.643-3+deb11u2 | DLA-4764-1 | ||
| libdbi-perl | source | bookworm | 1.643-4+deb12u2 | DLA-4764-1 | ||
| libdbi-perl | source | trixie | 1.652-2~deb13u1 | DSA-6473-1 | ||
| libdbi-perl | source | (unstable) | 1.652-1 | 1144471 |
https://lists.security.metacpan.org/cve-announce/msg/42707363/
Fixed by: https://github.com/perl5-dbi/dbi/commit/29b72ae7d2a8114a734a55840bf1c45b89207809 (1.652)
Followup: https://github.com/perl5-dbi/dbi/commit/9ffafab2369d7214f88967645feb3beadb900712 (1.653)