CVE-2026-73194
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
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.1
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
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.
- Record
CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Weakness
- CWE-1284, CWE-787
- Updated
- 2026-11-02
EUVDEUVD-2026-59745
9.1
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.
- Record
EUVD-2026-59745- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Updated
- 2026-11-02
NVD
9.1
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.
- Record
CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Weakness
- CWE-787, CWE-1284
- Updated
- 2026-11-02
OSVBELL-CVE-2026-73194
9.1
- Record
BELL-CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Updated
- 2026-11-02
OSV
9.1
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
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.
- Record
CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Weakness
- CWE-1284, CWE-787
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-73194
9.1
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.
- Record
DEBIAN-CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Updated
- 2026-11-02
Show 25 moreShow less
OSVOESA-2026-3477
7.7
perl-DBI security update
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database driver modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within.
Security Fix(es):
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.(CVE-2026-73194)
- Record
OESA-2026-3477- CVSS 3.1
- 7.7 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-3478
7.7
perl-DBI security update
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database driver modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within.
Security Fix(es):
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.(CVE-2026-73194)
- Record
OESA-2026-3478- CVSS 3.1
- 7.7 High
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-3519
9.1
perl-DBI security update
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database driver modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within.
Security Fix(es):
DBI versions before 1.652 for Perl allow a heap out-of-bounds write on 32-bit perl via an integer wraparound in the output buffer size computed by preparse.
preparse reserves its output buffer with newSV(strlen(statement) * 7 + 16), budgeting seven output bytes per input byte for the longest ':p99999' expansion. The product is computed in STRLEN, which is 32 bits wide on a 32-bit perl build, so a statement of 613,566,757 bytes multiplies to 4,294,967,299, wraps modulo 2^32 to 3, and reserves 19 bytes. The parser then copies the statement out through a raw pointer with no capacity check, writing the whole 585 MB input past the end of the allocation. The 99,999 placeholder limit does not bound this path, which is reached by ordinary non-placeholder content.
Any caller that passes an untrusted statement of that length to preparse on a 32-bit perl gets a heap out-of-bounds write of attacker controlled bytes. Builds with a 64-bit STRLEN are not affected, since the wrap there needs a statement of about 2.3 exabytes.(CVE-2026-73193)
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.(CVE-2026-73194)
- Record
OESA-2026-3519- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-3520
9.1
perl-DBI security update
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database driver modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within.
Security Fix(es):
DBI versions before 1.652 for Perl allow a heap out-of-bounds write on 32-bit perl via an integer wraparound in the output buffer size computed by preparse.
preparse reserves its output buffer with newSV(strlen(statement) * 7 + 16), budgeting seven output bytes per input byte for the longest ':p99999' expansion. The product is computed in STRLEN, which is 32 bits wide on a 32-bit perl build, so a statement of 613,566,757 bytes multiplies to 4,294,967,299, wraps modulo 2^32 to 3, and reserves 19 bytes. The parser then copies the statement out through a raw pointer with no capacity check, writing the whole 585 MB input past the end of the allocation. The 99,999 placeholder limit does not bound this path, which is reached by ordinary non-placeholder content.
Any caller that passes an untrusted statement of that length to preparse on a 32-bit perl gets a heap out-of-bounds write of attacker controlled bytes. Builds with a 64-bit STRLEN are not affected, since the wrap there needs a statement of about 2.3 exabytes.(CVE-2026-73193)
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.(CVE-2026-73194)
- Record
OESA-2026-3520- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-3522
9.1
perl-DBI security update
The DBI is the standard database interface module for Perl. It defines a set of methods, variables and conventions that provide a consistent database interface independent of the actual database being used. It is important to remember that the DBI is just an interface. The DBI is a layer of "glue" between an application and one or more database driver modules. It is the driver modules which do most of the real work. The DBI provides a standard interface and framework for the drivers to operate within.
Security Fix(es):
DBI versions before 1.652 for Perl allow a heap out-of-bounds write on 32-bit perl via an integer wraparound in the output buffer size computed by preparse.
preparse reserves its output buffer with newSV(strlen(statement) * 7 + 16), budgeting seven output bytes per input byte for the longest ':p99999' expansion. The product is computed in STRLEN, which is 32 bits wide on a 32-bit perl build, so a statement of 613,566,757 bytes multiplies to 4,294,967,299, wraps modulo 2^32 to 3, and reserves 19 bytes. The parser then copies the statement out through a raw pointer with no capacity check, writing the whole 585 MB input past the end of the allocation. The 99,999 placeholder limit does not bound this path, which is reached by ordinary non-placeholder content.
Any caller that passes an untrusted statement of that length to preparse on a 32-bit perl gets a heap out-of-bounds write of attacker controlled bytes. Builds with a 64-bit STRLEN are not affected, since the wrap there needs a statement of about 2.3 exabytes.(CVE-2026-73193)
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.(CVE-2026-73194)
- Record
OESA-2026-3522- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:69112
7.3
Red Hat Security Advisory: perl-DBI:1.641 security update
- Record
RHSA-2026:69112- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:70753
7.3
Red Hat Security Advisory: perl-DBI security update
- Record
RHSA-2026:70753- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:71422
7.3
Red Hat Security Advisory: perl-DBI security update
- Record
RHSA-2026:71422- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRHSA-2026:71608
7.3
Red Hat Security Advisory: perl-DBI security update
- Record
RHSA-2026:71608- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:69112
7.3
Important: perl-DBI:1.641 security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:69112- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:70753
7.3
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:70753- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:71422
7.3
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:71422- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVRLSA-2026:71608
7.3
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:71608- CVSS 3.1
- 7.3 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-73194
9.1
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.
- Record
UBUNTU-CVE-2026-73194- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H - Updated
- 2026-11-02
OSVALSA-2026:69112 No score
Important: perl-DBI:1.641 security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:69112- Updated
- 2026-11-02
OSVALSA-2026:70753 No score
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:70753- Updated
- 2026-11-02
OSVALSA-2026:71422 No score
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:71422- Updated
- 2026-11-02
OSVALSA-2026:71608 No score
Important: perl-DBI security update
The perl-DBI package provides the standard database interface module for the Perl programming language. It implements a database-independent interface, meaning it defines a consistent set of methods, variables, and conventions for database operations.
Security Fix(es):
- perl-DBI: DBI for Perl: Heap out-of-bounds write via unvalidated numeric placeholder (CVE-2026-73194)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:71608- Updated
- 2026-11-02
OSVAZL-96704 No score
CVE-2026-73194 affecting package perl-DBI for versions less than 1.652-1
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.
- Record
AZL-96704- Updated
- 2026-11-02
OSVCLSA-2026-1790834869 No score
perl-DBI: Fix of CVE-2026-73194
- CVE-2026-73194: reject :N placeholders outside 1..99999 in preparse() so an oversized or overflowing number can no longer drive a heap out-of-bounds write; add the upstream t/60preparse.t cases
- Record
CLSA-2026-1790834869- Updated
- 2026-11-02
OSVCLSA-2026-1790835624 No score
perl-DBI: Fix of CVE-2026-73194
- CVE-2026-73194: reject :N placeholders outside 1..99999 in preparse() so an oversized or overflowing number can no longer drive a heap out-of-bounds write; add the upstream t/60preparse.t cases
- Record
CLSA-2026-1790835624- Updated
- 2026-11-02
OSVMGASA-2026-0390 No score
Updated perl-DBI packages fix security vulnerabilities
DBI versions before 1.652 for Perl allow a heap out-of-bounds write on 32-bit perl via an integer wraparound in the output buffer size computed by preparse. 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.
- Record
MGASA-2026-0390- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11754-1 No score
perl-DBI-1.653.0-1.1 on GA media
These are all security issues fixed in the perl-DBI-1.653.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11754-1- Updated
- 2026-11-02
OSVROOT-OS-DEBIAN-12-CVE-2026-73194 No score
CVE-2026-73194 in libdbi-perl - Patched by Root
Root has patched CVE-2026-73194 in the libdbi-perl package for Root:Debian:12. Multiple fixed versions available.
- Record
ROOT-OS-DEBIAN-12-CVE-2026-73194- Updated
- 2026-11-02
OSVUSN-8841-1 No score
libdbi-perl vulnerabilities
It was discovered that the Perl DBI module did not correctly handle certain integer arithmetic operations. An attacker could possibly use this issue to cause a denial of service or execute arbitrary code. (CVE-2026-73193, CVE-2026-73194)
- Record
USN-8841-1- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
perl-DBIAlmaLinux:8 |
before 1.641-10.module_el8.10.0+4282+4ee1dbd0 | 1.641-10.module_el8.10.0+4282+4ee1dbd0 |
perl-DBIAlmaLinux:10 |
before 1.643-26.el10_2.6 | 1.643-26.el10_2.6 |
perl-DBIAlmaLinux:9 |
before 1.643-9.el9_8.6 | 1.643-9.el9_8.6 |
perl-DBIAlmaLinux:8 |
before 1.641-3.el8_10 | 1.641-3.el8_10 |
perl-DBIAzure Linux:3 |
before 1.652-1 | 1.652-1 |
perl-dbiAlpaquita:23 |
1.643-r4 up to 1.652-r0 | 1.652-r0 |
perl-dbiAlpaquita:25 |
1.647-r0 up to 1.652-r0 | 1.652-r0 |
perl-dbiAlpaquita:stream |
1.643-r3 up to 1.652-r0 | 1.652-r0 |
perl-DBITuxCare:AlmaLinux:9.6 |
before 1.643-9.el9_6.tuxcare.els4 | 1.643-9.el9_6.tuxcare.els4 |
perl-DBITuxCare:AlmaLinux:9.2 |
before 1.643-9.el9_2.tuxcare.els4 | 1.643-9.el9_2.tuxcare.els4 |
Show 44 moreShow less
| Package | Affected | Fixed |
|---|---|---|
libdbi-perlDebian:12 |
before 1.643-4+deb12u2, plus listed versions 1.643-41.643-4+deb12u1 |
1.643-4+deb12u2 |
libdbi-perlDebian:13 |
before 1.652-2~deb13u1, plus listed versions 1.647-11.647-1+deb13u11.648-11.649-11.650-11.651-11.652-1 |
1.652-2~deb13u1 |
libdbi-perlDebian:14 |
before 1.652-1, plus listed versions 1.647-11.648-11.649-11.650-11.651-1 |
1.652-1 |
perl-DBIMageia:10 From an advisory covering 2 CVEs |
before 1.652.0-2.mga10 | 1.652.0-2.mga10 |
perl-DBIMageia:9 From an advisory covering 2 CVEs |
before 1.652.0-1.1.mga9 | 1.652.0-1.1.mga9 |
perl-DBIopenEuler:24.03-LTS-SP3 |
before 1.643-7.oe2403sp3 | 1.643-7.oe2403sp3 |
perl-DBIopenEuler:20.03-LTS-SP4 |
before 1.643-6.oe2003sp4 | 1.643-6.oe2003sp4 |
perl-DBIopenEuler:22.03-LTS-SP4 From an advisory covering 2 CVEs |
before 1.643-8.oe2203sp4 | 1.643-8.oe2203sp4 |
perl-DBIopenEuler:24.03-LTS-SP1 From an advisory covering 2 CVEs |
before 1.643-8.oe2403sp1 | 1.643-8.oe2403sp1 |
perl-DBIopenEuler:24.03-LTS-SP4 From an advisory covering 2 CVEs |
before 1.648-4.oe2403sp4 | 1.648-4.oe2403sp4 |
perl-DBIRed Hat:enterprise_linux:8::appstream |
before 0:1.641-10.module+el8.10.0+24875+bc962974 | 0:1.641-10.module+el8.10.0+24875+bc962974 |
perl-DBI-debuginfoRed Hat:enterprise_linux:8::appstream |
before 0:1.641-10.module+el8.10.0+24875+bc962974 | 0:1.641-10.module+el8.10.0+24875+bc962974 |
perl-DBI-debugsourceRed Hat:enterprise_linux:8::appstream |
before 0:1.641-10.module+el8.10.0+24875+bc962974 | 0:1.641-10.module+el8.10.0+24875+bc962974 |
perl-DBIRed Hat:enterprise_linux:10.2 |
before 0:1.643-26.el10_2.6 | 0:1.643-26.el10_2.6 |
perl-DBI-debuginfoRed Hat:enterprise_linux:10.2 |
before 0:1.643-26.el10_2.6 | 0:1.643-26.el10_2.6 |
perl-DBI-debugsourceRed Hat:enterprise_linux:10.2 |
before 0:1.643-26.el10_2.6 | 0:1.643-26.el10_2.6 |
perl-DBIRed Hat:enterprise_linux:9::appstream |
before 0:1.643-9.el9_8.6 | 0:1.643-9.el9_8.6 |
perl-DBI-debuginfoRed Hat:enterprise_linux:9::appstream |
before 0:1.643-9.el9_8.6 | 0:1.643-9.el9_8.6 |
perl-DBI-debugsourceRed Hat:enterprise_linux:9::appstream |
before 0:1.643-9.el9_8.6 | 0:1.643-9.el9_8.6 |
perl-DBIRed Hat:enterprise_linux:8::baseos |
before 0:1.641-3.el8_10 | 0:1.641-3.el8_10 |
perl-DBI-debuginfoRed Hat:enterprise_linux:8::baseos |
before 0:1.641-3.el8_10 | 0:1.641-3.el8_10 |
perl-DBI-debugsourceRed Hat:enterprise_linux:8::baseos |
before 0:1.641-3.el8_10 | 0:1.641-3.el8_10 |
perl-DBIRocky Linux:8 |
before 0:1.641-10.module+el8.10.0+40328+bc090241 | 0:1.641-10.module+el8.10.0+40328+bc090241 |
perl-DBIRocky Linux:8 |
before 0:1.641-10.module+el8.10.0+40328+f4c7f87b | 0:1.641-10.module+el8.10.0+40328+f4c7f87b |
perl-DBIRocky Linux:8 |
before 0:1.641-10.module+el8.10.0+40328+3ea70367 | 0:1.641-10.module+el8.10.0+40328+3ea70367 |
perl-DBIRocky Linux:8 |
before 0:1.641-10.module+el8.10.0+40328+0878361a | 0:1.641-10.module+el8.10.0+40328+0878361a |
perl-DBIRocky Linux:10 |
before 0:1.643-26.el10_2.6 | 0:1.643-26.el10_2.6 |
perl-DBIRocky Linux:9 |
before 0:1.643-9.el9_8.6 | 0:1.643-9.el9_8.6 |
perl-DBIRocky Linux:8 |
before 0:1.641-3.el8_10 | 0:1.641-3.el8_10 |
libdbi-perlUbuntu:Pro:14.04:LTS |
before 1.630-1ubuntu0.1~esm8, plus listed versions 1.627-11.628-11.630-11.630-1ubuntu0.1~esm11.630-1ubuntu0.1~esm41.630-1ubuntu0.1~esm51.630-1ubuntu0.1~esm6 |
1.630-1ubuntu0.1~esm8 |
libdbi-perlUbuntu:Pro:16.04:LTS |
before 1.634-1ubuntu0.2+esm4, plus listed versions 1.633-11.634-11.634-1build11.634-1ubuntu0.11.634-1ubuntu0.21.634-1ubuntu0.2+esm11.634-1ubuntu0.2+esm2 |
1.634-1ubuntu0.2+esm4 |
libdbi-perlUbuntu:Pro:18.04:LTS |
before 1.640-1ubuntu0.3+esm3, plus listed versions 1.637-11.639-11.640-11.640-1ubuntu0.11.640-1ubuntu0.21.640-1ubuntu0.31.640-1ubuntu0.3+esm1 |
1.640-1ubuntu0.3+esm3 |
libdbi-perlUbuntu:Pro:20.04:LTS |
before 1.643-1ubuntu0.1+esm3, plus listed versions 1.642-11.642-1build11.643-11.643-1ubuntu0.11.643-1ubuntu0.1+esm1 |
1.643-1ubuntu0.1+esm3 |
libdbi-perlUbuntu:22.04:LTS |
before 1.643-3ubuntu0.3, plus listed versions 1.643-3build21.643-3build31.643-3ubuntu0.1 |
1.643-3ubuntu0.3 |
libdbi-perlUbuntu:24.04:LTS |
before 1.643-4ubuntu0.3, plus listed versions 1.643-41.643-4build11.643-4build21.643-4build31.643-4ubuntu0.1 |
1.643-4ubuntu0.3 |
libdbi-perlUbuntu:26.04:LTS |
before 1.647-1ubuntu0.26.04.3, plus listed versions 1.647-11.647-1build11.647-1ubuntu0.26.04.1 |
1.647-1ubuntu0.26.04.3 |
libdbi-perlUbuntu:Pro:14.04:LTS From an advisory covering 2 CVEs |
before 1.630-1ubuntu0.1~esm8, plus listed versions 1.627-11.628-11.630-11.630-1ubuntu0.1~esm11.630-1ubuntu0.1~esm41.630-1ubuntu0.1~esm51.630-1ubuntu0.1~esm6 |
1.630-1ubuntu0.1~esm8 |
libdbi-perlUbuntu:Pro:16.04:LTS From an advisory covering 2 CVEs |
before 1.634-1ubuntu0.2+esm4, plus listed versions 1.633-11.634-11.634-1build11.634-1ubuntu0.11.634-1ubuntu0.21.634-1ubuntu0.2+esm11.634-1ubuntu0.2+esm2 |
1.634-1ubuntu0.2+esm4 |
libdbi-perlUbuntu:Pro:18.04:LTS From an advisory covering 2 CVEs |
before 1.640-1ubuntu0.3+esm3, plus listed versions 1.637-11.639-11.640-11.640-1ubuntu0.11.640-1ubuntu0.21.640-1ubuntu0.31.640-1ubuntu0.3+esm1 |
1.640-1ubuntu0.3+esm3 |
libdbi-perlUbuntu:Pro:20.04:LTS From an advisory covering 2 CVEs |
before 1.643-1ubuntu0.1+esm3, plus listed versions 1.642-11.642-1build11.643-11.643-1ubuntu0.11.643-1ubuntu0.1+esm1 |
1.643-1ubuntu0.1+esm3 |
libdbi-perlUbuntu:22.04:LTS From an advisory covering 2 CVEs |
before 1.643-3ubuntu0.3, plus listed versions 1.643-3build21.643-3build31.643-3ubuntu0.1 |
1.643-3ubuntu0.3 |
libdbi-perlUbuntu:24.04:LTS From an advisory covering 2 CVEs |
before 1.643-4ubuntu0.3, plus listed versions 1.643-41.643-4build11.643-4build21.643-4build31.643-4ubuntu0.1 |
1.643-4ubuntu0.3 |
libdbi-perlUbuntu:26.04:LTS From an advisory covering 2 CVEs |
before 1.647-1ubuntu0.26.04.3, plus listed versions 1.647-11.647-1build11.647-1ubuntu0.26.04.1 |
1.647-1ubuntu0.26.04.3 |
perl-DBIopenSUSE:Tumbleweed From an advisory covering 3 CVEs |
before 1.653.0-1.1 | 1.653.0-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-73194 is a critical vulnerability (CVSS 9.1) in perl-DBI, published August 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.49%, the 42nd percentile. Fixed in perl-DBI 1.641-10.module_el8.10.0+4282+4ee1dbd0.
References
github.com/perl5-dbi/dbi/security/advisories/GHSA-623j-hfpc-mrc4
github.com/perl5-dbi/dbi/commit/29b72ae7d2a8114a734a55840bf1c45b89207809.patch
cve.org/CVERecord?id=CVE-2026-14739
cve.org/CVERecord?id=CVE-2026-10879
access.redhat.com/errata/RHSA-2026:69112
access.redhat.com/security/cve/CVE-2026-73194
Show 45 moreShow less
bugzilla.redhat.com/2516959
errata.almalinux.org/8/ALSA-2026-69112.html
access.redhat.com/errata/RHSA-2026:70753
errata.almalinux.org/10/ALSA-2026-70753.html
access.redhat.com/errata/RHSA-2026:71422
errata.almalinux.org/9/ALSA-2026-71422.html
access.redhat.com/errata/RHSA-2026:71608
errata.almalinux.org/8/ALSA-2026-71608.html
nvd.nist.gov/vuln/detail/CVE-2026-73194
docs.bell-sw.com/security/cves/CVE-2026-73194
errata.tuxcare.com/els_os/tuxcare9.6esu/CLSA-2026-1790834869.html
errata.tuxcare.com/els_os/almalinux9.2esu/CLSA-2026-1790835624.html
cpan.org/modules
github.com/CVEProject/cvelistV5/tree/main/cves/2026/73xxx/CVE-2026-73194.json
github.com/perl5-dbi/dbi
security-tracker.debian.org/tracker/CVE-2026-73194
advisories.mageia.org/MGASA-2026-0390.html
bugs.mageia.org/show_bug.cgi?id=36144
openwall.com/lists/oss-security/2026/08/15/2
github.com/perl5-dbi/dbi/security/advisories/GHSA-wj3v-c3hh-mhqr
openwall.com/lists/oss-security/2026/08/15/3
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3477
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3478
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3519
nvd.nist.gov/vuln/detail/CVE-2026-73193
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3520
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3522
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2516959
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_69112.json
cve.org/CVERecord?id=CVE-2026-73194
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_70753.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_71422.json
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_71608.json
errata.rockylinux.org/RLSA-2026:69112
errata.rockylinux.org/RLSA-2026:70753
errata.rockylinux.org/RLSA-2026:71422
errata.rockylinux.org/RLSA-2026:71608
ubuntu.com/security/CVE-2026-73194
lists.security.metacpan.org/cve-announce/msg/42707363
ubuntu.com/security/notices/USN-8841-1
ubuntu.com/security/CVE-2026-73193
suse.com/security/cve/CVE-2026-73193
suse.com/security/cve/CVE-2026-73194
suse.com/security/cve/CVE-2026-78030