Description
DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv.

When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault.

This is reachable in Perl using the sql_type_cast function:

my $num = 42;
DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );
Published: 2026-09-28
Score: 6.2 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Immediate Patch
AI Analysis

Impact

The bug occurs when a numeric Perl scalar is passed to DBI::sql_type_cast with the target type SQL_NUMERIC. Internally, sql_type_cast_svpv forwards the scalar’s string pointer and length to the function grok_number without first converting the value to a string. Numeric scalars such as integers or floating‑point numbers have no valid string pointer, so grok_number dereferences an invalid address, triggering a segmentation fault. The result is an immediate crash of the process that called DBI, causing a denial of service for that application instance.

Affected Systems

All installations of the DBI Perl module prior to version 1.654 are affected. The issue was fixed in the 1.654 release; updating to that version or later removes the vulnerability.

Risk and Exploitability

The CVSS score is 6.2, indicating a medium severity. The EPSS score is less than 1%, and the vulnerability is not listed in CISA KEV. The attack surface requires an attacker who can cause the application to invoke DBI::sql_type_cast with a numeric value. In many scripts and web applications that use DBI, such a call is already present, so exploitation can be achieved by injecting a numeric parameter that drives the cast. The inferred attack vector is therefore a local code path that may be leveraged remotely when the application accepts untrusted input. Exploitation results in a segmentation fault, terminating the process and disrupting service, but does not directly expose arbitrary code execution.

Generated by OpenCVE AI on October 1, 2026 at 01:34 UTC.

Remediation

Vendor Solution

Upgrade to DBI 1.654 or later.


OpenCVE Recommended Actions

  • Upgrade the DBI module to version 1.654 or later to apply the vendor fix.
  • Audit application code to locate any explicit calls to DBI::sql_type_cast, especially with numeric values, and remove or replace those calls with safer handling or type checks.
  • Restart affected services after the upgrade to ensure the new library is loaded and to clear any residual crashes.

Generated by OpenCVE AI on October 1, 2026 at 01:34 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4798-1 libdbi-perl security update
History

Wed, 30 Sep 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

cvssV3_1

{'score': 6.2, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Tue, 29 Sep 2026 13:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Important


Mon, 28 Sep 2026 20:15:00 +0000

Type Values Removed Values Added
First Time appeared Perl5-dbi
Perl5-dbi dbi
Vendors & Products Perl5-dbi
Perl5-dbi dbi

Mon, 28 Sep 2026 19:30:00 +0000

Type Values Removed Values Added
References

Mon, 28 Sep 2026 16:30:00 +0000

Type Values Removed Values Added
Description DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv. When casting to SQL_NUMERIC, sql_type_cast_svpv passes the string pointer and length of the SV to grok_number without stringifying it first. An integer (IV) or floating-point (NV) value has no valid string pointer, so grok_number reads from an invalid address, triggering a segmentation fault. This is reachable in Perl using the sql_type_cast function: my $num = 42; DBI::sql_type_cast( $num, DBI::SQL_NUMERIC, 0 );
Title DBI versions before 1.654 for Perl incorrectly treat numeric values as strings in sql_type_cast_svpv
Weaknesses CWE-843
References

cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-09-30T19:52:38.366Z

Reserved: 2026-09-10T08:47:49.901Z

Link: CVE-2026-88815

cve-icon Vulnrichment

Updated: 2026-09-28T18:10:34.583Z

cve-icon NVD

Status : Deferred

Published: 2026-09-28T17:17:52.070

Modified: 2026-09-30T20:17:35.380

Link: CVE-2026-88815

cve-icon Redhat

Severity : Important

Publid Date: 2026-09-28T16:04:22Z

Links: CVE-2026-88815 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-01T01:45:16Z

Weaknesses
  • CWE-843

    Access of Resource Using Incompatible Type ('Type Confusion')