Skip to main content

Perl DBI CVE-2026-88816

| EUVDEUVD-2026-88343 HIGH
Access of Resource Using Incompatible Type (Type Confusion) (CWE-843)
2026-09-24 vendor:ubuntu
7.5
CVSS 3.1 · Vendor: vendor:ubuntu
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Influence FetchHashKeyName attribute to numeric value
  2. Delivery
    Application calls fetchrow_hashref
  3. Exploit
    SvPVX reads bogus PV pointer on IV/NV
  4. Execution
    Process crash or memory misread
  5. Impact
    Denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Type safety enforcement
MITRE ATT&CK

1 technique across 1 tactic: Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a Perl application built on DBI that assigns a non-string (integer/IV or float/NV) scalar to the FetchHashKeyName statement/handle attribute and then invokes fetchrow_hashref. It does not affect default usage where FetchHashKeyName is left as its string default ('NAME'). Exploitation is limited by the fact that this attribute is normally set by the application itself, not by remote input, so remote unauthenticated triggering (as the CVSS vector implies) depends on the application unsafely propagating attacker-controlled data into that attribute. Affected: DBI before 1.654.

Impact

This is a type-confusion bug (CWE-843) in the Perl DBI module's fetchrow_hashref implementation (DBI.xs), where SvPVX(kn) was used to read the FetchHashKeyName attribute value without forcing stringification. When that attribute holds an integer (IV) or float (NV) scalar rather than a string, the code dereferences the SV's string-buffer slot on a value that has none, producing an invalid/garbage pointer. The signals point to a low-to-moderate real-world priority rather than an urgent one: EPSS is very low (0.21%, 10th percentile), there is no CISA KEV listing (no confirmed active exploitation) and no public exploit identified. The vendor CVSS vector (AV:N/AC:L/PR:N/UI:N/A:H, 7.5) rates it as a remote unauthenticated availability (crash/DoS) issue, but this conflicts with the actual trigger: the flaw fires only when the *application itself* assigns a non-string value to the FetchHashKeyName attribute, which is not normally attacker-controllable over the network - verify the network/unauthenticated framing with the vendor. The Tags claim 'Information Disclosure' and 'Memory Corruption' while the CVSS marks C:N/I:N; reading the PV slot of an IV/NV could in principle expose adjacent memory as a hash key name, but the primary demonstrated impact in the added test is a controlled crash/exception, so availability is the dependable impact.

Exploit ScenarioDerived

A Perl application using DBI sets $dbh->{FetchHashKeyName} (directly or from unvalidated input) to a numeric scalar such as 42, then calls $sth->fetchrow_hashref. Pre-patch, DBI reads the string-buffer pointer of the integer SV, dereferencing a bogus pointer and crashing the process (or reading unintended memory). No public exploit exists and no active exploitation is reported; realistic abuse requires the application to route attacker-influenced data into this attribute.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv2 – Sep 30, 2026

Type confusion in the Perl DBI module's fetchrow_hashref implementation allows an application that assigns a non-string scalar (integer/IV or float/NV) to the FetchHashKeyName attribute and then calls fetchrow_hashref to trigger an out-of-bounds memory read, typically crashing the Perl process (denial of service) and, in principle, exposing adjacent heap memory in error output. Affected are DBI releases before 1.654 on any platform where the module is installed; the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) rates this unauthenticated and remotely triggerable, though independent assessment raises attack complexity to AC:H because exploitation requires the hosting application to propagate attacker-controlled data into a statement-handle attribute that is normally set by the application itself. No public exploit code has been identified at time of analysis, no confirmed active exploitation (not in CISA KEV), and EPSS is low at 0.21% (10th percentile), reflecting the narrow precondition of application-specific attribute misuse.

Earlier versions of this analysis (1)
v1 Sep 25, 2026 - 01:13

The FetchHashKeyName fix reported through the Ubuntu vendor channel addresses mishandling of hash keys whose internal representation is an integer (IV) or numeric (NV) scalar rather than a string, with the practical effect that a key name can be fetched incorrectly on that code path; the assessed impact is bounded to limited information disclosure and limited availability loss rather than code execution, data modification, or privilege escalation (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:L). Exploitation is input-dependent and narrow: an application, or attacker-supplied data flowing into it, must key a hash by a numeric scalar, an atypical data shape that is why the assessed vector carries high attack complexity, and no authentication requirement can be stated because no PR metric was supplied. No public exploit has been identified at time of analysis - there is no POC reference, no CISA KEV listing, and no EPSS score - and the exact affected package, its version range, and whether the trigger is reachable remotely rather than only locally are not confirmed in the available data.

RemediationAI

Upgrade to Perl DBI 1.654 or later, the vendor-released patch version documented at https://metacpan.org/release/HMBRAND/DBI-1.654/changes and tracked by advisory https://github.com/perl5-dbi/dbi/security/advisories/GHSA-f4qx-mr9m-q2hq; the underlying fix is commit 70962570212dc60a5428098cf2a0462ad5945851 (patch: https://github.com/perl5-dbi/dbi/commit/70962570212dc60a5428098cf2a0462ad5945851.patch), which substitutes SvPV_nolen for SvPVX in DBI.xs. Operators who cannot immediately upgrade should ensure FetchHashKeyName is only ever assigned the literal string values 'NAME', 'NAME_uc', or 'NAME_lc' - e.g. by validating or coercing any externally influenced value with an explicit string cast before it reaches a statement or database handle attribute - since the defect only triggers when a non-string scalar reaches that attribute; this is a code-level compensating control and requires auditing application and library code for dynamic attribute assignment, and it carries the trade-off that it does not protect against unfixed third-party code setting the attribute numerically. Additionally, fail-fast hardening can be applied by wrapping fetchrow_hashref calls in eval blocks and enabling RaiseError so that any malformed attribute surfaces as an exception rather than an out-of-bounds read, though this converts a crash into a caught error only for the calling code and does not remediate the underlying memory-safety defect. Distribution maintainers and container image owners should rebuild or pin patched DBI packages, since the reported-by vendor:ubuntu signal indicates packaged versions in distributions may lag the upstream 1.654 release.

Affected ProductsAI

The perl5-dbi/dbi (Perl DBI) module, all versions before 1.654, across every platform and Perl interpreter where the XS code is compiled; the project's own advisory is at https://github.com/perl5-dbi/dbi/security/advisories/GHSA-f4qx-mr9m-q2hq and the fixed-release changelog is at https://metacpan.org/release/HMBRAND/DBI-1.654/changes, corresponding to ENISA EUVD-2026-88343. Because DBI is a foundational database-interface library, downstream consumers include any Perl application using DBI drivers (DBD::mysql, DBD::Pg, DBD::SQLite, DBD::Oracle, etc.), and OS distribution packages that ship an older DBI remain exposed until rebuilt - the vulnerability was reported through the vendor:ubuntu channel, indicating distribution-level exposure. No explicit CPE strings were supplied with the source data, so affected status should be determined by DBI module version (perl -MDBI -e 'print $DBI::VERSION') rather than by CPE matching.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

CVE-2026-88816 is a CWE-843 type-confusion defect in the XS (C) portion of the Perl DBI distribution, specifically in DBI.xs around the fetchrow_hashref implementation. The routine read the value of the FetchHashKeyName attribute into a C string with SvPVX(kn) without first forcing stringification; SvPVX only returns the internal PV buffer and performs no stringification or magic dispatch, so when the attribute holds an integer (IV) or floating-point (NV) scalar, the macro reinterprets the scalar's numeric body as a character pointer, producing an out-of-bounds read. The upstream fix replaces SvPVX(kn) with SvPV_nolen(kn), which invokes the normal stringification path (including get-magic) and therefore guarantees a valid, NUL-terminated string before use. The same commit (70962570212dc60a5428098cf2a0462ad5945851) also addresses the sibling issue CVE-2026-88815 (DBI::sql_type_cast on IV/NV), confirming a common root cause class of missing SV stringification in the module's XS attribute handling. A regression test (t/06attrs.t) was added that sets FetchHashKeyName = 42 and asserts that fetchrow_hashref now dies with 'Can't use attribute ...' rather than misinterpreting the scalar, and dbixs_rev.h was bumped from revision 1833 to 1834.

Know when Perl gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (vendor:ubuntu) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.9 MEDIUM

AC:H because triggering requires the atypical condition of a non-string FetchHashKeyName value reaching fetchrow_hashref; impact is a crash/DoS (A:H) with no confirmed confidentiality or integrity effect.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 5.9 MEDIUM

Primary rating from Vendor (vendor:ubuntu).

CVSS VectorVendor: vendor:ubuntu

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

1
CVSS changed
Sep 30, 2026 - 20:53 NVD
7.5 (HIGH)

DescriptionCVE.org

[Fix FetchHashKeyName on IV/NV]

Technical POC Analysis

CWE-843 (Access of Resource Using Incompatible Type / type confusion); the advisory additionally tags CWE-125 (out-of-bounds read).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The Perl DBI module, versions before 1.654, contains a type confusion flaw that can crash applications using the fetchrow_hashref method, leading to denial-of-service disruptions for organizations relying on Perl-based systems. Although no public exploit code has been identified and exploitation requires specific application coding patterns, the widespread use of DBI in enterprise and legacy applications means unpatched systems remain vulnerable to availability impacts. Leadership should prioritize patching to maintain service uptime and avoid potential operational disruptions.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
High
DBI is the de facto standard database interface for Perl, widely deployed
Threat Intel
1
1 sources
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Medium

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Perl

View all
CVE-2012-6329 HIGH POC
7.5 Jan 04

The _compile function in Maketext.pm in the Locale::Maketext implementation in Perl before 5.17.7 does not properly hand

CVE-2017-12814 CRITICAL POC
9.8 Sep 28

Stack-based buffer overflow in the CPerlHost::Add method in win32/perlhost.h in Perl before 5.24.3-RC1 and 5.26.x before

CVE-2015-8608 CRITICAL POC
9.8 Feb 07

The VDir::MapPathA and VDir::MapPathW functions in Perl 5.22 allow remote attackers to cause a denial of service (out-of

CVE-2018-18314 CRITICAL POC
9.8 Dec 07

Perl before 5.26.3 has a buffer overflow via a crafted regular expression that triggers invalid write operations. Rated

CVE-2018-18312 CRITICAL POC
9.8 Dec 05

Perl before 5.26.3 and 5.28.0 before 5.28.1 has a buffer overflow via a crafted regular expression that triggers invalid

CVE-2018-18313 CRITICAL POC
9.1 Dec 07

Perl before 5.26.3 has a buffer over-read via a crafted regular expression that triggers disclosure of sensitive informa

CVE-2016-2381 HIGH
7.5 Apr 08

Perl might allow context-dependent attackers to bypass the taint protection mechanism in a child process via duplicate e

CVE-2023-31484 HIGH POC
8.1 Apr 29

CPAN.pm before 2.35 does not verify TLS certificates when downloading distributions over HTTPS. Rated high severity (CVS

CVE-2016-6185 HIGH POC
7.8 Aug 02

The XSLoader::load method in XSLoader in Perl does not properly locate .so files when called in a string eval, which mig

CVE-2018-12015 HIGH POC
7.5 Jun 07

In Perl through 5.26.2, the Archive::Tar module allows remote attackers to bypass a directory-traversal protection mecha

CVE-2020-10543 HIGH
8.2 Jun 05

Perl before 5.30.3 on 32-bit platforms allows a heap-based buffer overflow because nested regular expression quantifiers

CVE-2015-8853 HIGH
7.5 May 25

The (1) S_reghop3, (2) S_reghop4, and (3) S_reghopmaybe3 functions in regexec.c in Perl before 5.24.0 allow context-depe

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Server LTSS Extended Security 12 SP5 Fixed
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS Affected
SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS Affected
SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy