PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet

CVE-2026-88815: 
Rocky Linux vulnerability analysis and mitigation

Overview

CVE-2026-88815 is a type confusion vulnerability in the Perl DBI (Database Interface) module that causes a segmentation fault when sql_type_cast is called with a pure numeric scalar and the SQL_NUMERIC type code. It affects DBI versions before 1.654 and was disclosed on September 26–28, 2026, with the fix released in DBI 1.654 (September 10, 2026). The vulnerability was assigned a CVSS v3.1 base score of 6.2 (Medium), with a local attack vector and high availability impact (GitHub Advisory, Red Hat Bugzilla). The CVE was assigned by CPANSec and is classified as "Deferred" status by Red Hat (Red Hat CVE).

Technical details

The root cause is a type confusion flaw (CWE-843 / CWE-476) in sql_type_cast_svpv() within DBI.xs. In the SQL_NUMERIC branch (~line 1961), the code calls grok_number(SvPVX(sv), SvCUR(sv), &uv) without first ensuring the Perl scalar value (SV) has a valid string representation (i.e., without checking or setting the SvPOK flag via SvPV()). When the SV is a pure integer (IV) or floating-point (NV) value — which has no associated string pointer — SvPVX(sv) returns NULL or an unmapped memory address, and grok_number() dereferences it, triggering a SIGSEGV (GitHub Advisory, oss-security). The fix in DBI 1.654 replaces the unsafe SvPVX(sv) call with SvPV(sv, len), which forces stringification and handles magic before passing the pointer to grok_number (Patch). The vulnerability is also reachable via DBI drivers that call sql_type_cast_svpv() through the DBIS->sql_type_cast_svpv interface defined in DBIXS.h (GitHub Advisory).

Impact

Successful exploitation causes the Perl interpreter to crash with a SIGSEGV (exit code 139), resulting in a denial of service for any process running vulnerable DBI code that passes a numeric scalar to sql_type_cast() with SQL_NUMERIC. There is no confidentiality or integrity impact — the vulnerability is limited to availability (GitHub Advisory, Red Hat Bugzilla). Applications relying on DBI for database connectivity — including those using third-party drivers that internally invoke sql_type_cast_svpv() — are at risk of process termination if they pass uncoerced numeric values to the affected function.

Exploitability

A public proof-of-concept exploit is available in the GitHub Security Advisory, consisting of a single reproducible command: perl -MDBI -e 'my $x=42; DBI::sql_type_cast($x, DBI::SQL_NUMERIC(), 0)', which crashes the interpreter with 100% reliability on DBI 1.653 (GitHub Advisory). There is no evidence of in-the-wild exploitation at this time, and the vulnerability is not listed in the CISA KEV catalog. The EPSS score is approximately 0.0021 (low probability of exploitation), and the NVD SSVC assessment classifies exploitation status as "poc" with no automation (Feedly). No threat actor attribution has been reported.

Exploitation steps

  1. Identify vulnerable installations: Determine if the target system has DBI version 1.653 or earlier installed (perl -MDBI -e 'print $DBI::VERSION'). The vulnerability requires local access to a Perl environment with the vulnerable DBI module loaded.
  2. Prepare a pure numeric scalar: Create an integer (IV) or floating-point (NV) Perl scalar that has not been stringified — e.g., my $x = 42;, my $x = 3.14;, my $x = 1<<40;, or my $x = -1;. A string-backed scalar like my $x = "42"; $x + 0 (PVIV) is not vulnerable.
  3. Invoke the vulnerable function: Call DBI::sql_type_cast($x, DBI::SQL_NUMERIC(), 0) with the numeric scalar and the SQL_NUMERIC type code.
  4. Trigger the crash: The sql_type_cast_svpv() C function reads SvPVX(sv) without forcing stringification, passing a NULL or invalid pointer to grok_number(), which dereferences it and causes a SIGSEGV, crashing the Perl interpreter (exit code 139) (GitHub Advisory, oss-security).

Indicators of compromise

  • Process: Perl interpreter processes terminating unexpectedly with exit code 139 (SIGSEGV); core dump files generated in the working directory of the Perl process.
  • Logs: Application or system logs showing segmentation fault messages associated with Perl processes; entries like Segmentation fault (core dumped) in syslog or application error logs.
  • File System: Unexpected core dump files (e.g., core, core.<pid>) in directories where Perl/DBI applications run, potentially containing memory snapshots of the crashed process.

Mitigation and workarounds

The primary remediation is to upgrade DBI to version 1.654 or later, available on CPAN (cpan install DBI or cpanm DBI). Red Hat has issued security errata addressing this vulnerability: RHSA-2026:76760 (RHEL 9), RHSA-2026:76762 (RHEL 10), and RHSA-2026:77576 (RHEL 8) (Red Hat Bugzilla). SUSE has released SUSE-SU-2026:4442-1 and SUSE-SU-2026:4612-1, and Debian has issued DLA-4798-1 for LTS users. As a temporary workaround where patching is not immediately possible, avoid passing pure numeric (IV/NV) scalars directly to DBI::sql_type_cast() with SQL_NUMERIC — instead, stringify values first (e.g., "$num") before passing them to the function (GitHub Advisory, oss-security).

Community reactions

The vulnerability was reported by researcher Harsh Raj Singhania and disclosed via the CPAN Security Group (CPANSec) through the oss-security mailing list on September 28, 2026 (oss-security). A Reddit post in r/perl noted the discovery of additional segfaults in DBI of the same bug class, suggesting broader community awareness of the issue pattern. The advisory notes that the impact class matches prior DBI advisories CVE-2019-20919 and CVE-2026-60082, indicating a recurring pattern of similar memory safety issues in the module (GitHub Advisory).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

libdbi-perl: 1.643-4+deb12u3

Fixed

sid

libdbi-perl: 1.654-1

Fixed

trixie

libdbi-perl

Affected

Ubuntu

Unknown

bionic (esm-infra)

libdbi-perl

Unknown

devel

libdbi-perl

Unknown

focal (esm-infra)

libdbi-perl

Unknown

jammy

libdbi-perl

Unknown

noble

libdbi-perl

Unknown

resolute

libdbi-perl

Unknown

trusty (esm-infra-legacy)

libdbi-perl

Unknown

xenial (esm-infra-legacy)

libdbi-perl

Unknown

RHEL / CentOS

Fixed

RHEL 8

:baseos:perl-DBI-0:1.641-4.el8_10.src

Fixed

RHEL 9

:appstream:perl-DBI-0:1.643-9.el9_8.7.src

Fixed

RHEL 10

perl-DBI-0:1.643-26.el10_2.7.src

Fixed

Alpine

Fixed

edge

perl-dbi: 1.654-r0

Fixed

Source: This report was generated using AI

Related Rocky Linux vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-109619CRITICAL9.2
  • PHP logoPHP
  • php8.4-dba
NoYesOct 21, 2026
CVE-2026-109618CRITICAL9.2
  • PHP logoPHP
  • rh-php71-php-common
NoYesOct 21, 2026
CVE-2026-93523HIGH7.8
  • Rocky Linux logoRocky Linux
  • xorg-x11-server-sdk
NoYesOct 07, 2026
CVE-2026-93521HIGH7.8
  • Rocky Linux logoRocky Linux
  • xorg-x11-server
NoYesOct 07, 2026
CVE-2026-111943MEDIUM6.8
  • Go logoGo
  • crossplane-provider-aws-route53-fips
NoYesOct 21, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management