HIGH 8.8

CVE-2026-14380: DBI Perl Code Injection via Profile Attribute (CVSS 8.8)

DBI, a Perl database interface module, has a critical vulnerability in how it handles the Profile attribute. When this attribute receives untrusted input—from environment variables, direct code assignment, or database connection strings—DBI evaluates it as Perl code without proper validation. An attacker who controls any of these inputs can execute arbitrary commands on the affected system. The risk is particularly acute for exposed database brokers (DBI::Gofer or DBI::ProxyServer) where remote clients can inject malicious code through connection parameters.

Source data · NVD / CISA · public domain

CVSS
3.1 · 8.8 HIGH · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses (CWE)
CWE-95
Affected products
1 configuration(s)
Published / Modified
2026-07-07 / 2026-07-10

NVD description (verbatim)

DBI versions before 1.650 for Perl are vulnerable to code injection via caller-influenced Profile. When a string is assigned to a DBI handle's Profile attribute, DBI splits it into path, package and arguments, and interpolates the package part in a string eval with no validation of the package name. Any caller-influenced value that reaches the Profile attribute is therefore arbitrary Perl code execution, including calls to run system commands. The Profile attribute can be set from three different sources that can carry untrusted data: the DBI_PROFILE environment variable, a direct attribute assignment, and a DSN driver-attribute clause dbi:Driver(Profile=>SPEC):db. An attacker controlling any of those inputs runs arbitrary Perl in the host process. The strongest remote position is a network-exposed DBI::Gofer / DBI::ProxyServer whose per-request DSN reaches the Profile attribute, letting a client execute code on the broker host.

4 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-14380 is a code injection vulnerability in Perl DBI versions before 1.650 stemming from unsafe string evaluation of the Profile attribute. The Profile attribute is parsed to extract path, package name, and arguments, then executed via string eval() without validating the package name component. Three input vectors can introduce untrusted data: the DBI_PROFILE environment variable, programmatic handle attribute assignment (via the Profile property), and DSN driver-attribute clauses embedded in connection strings (e.g., dbi:Driver(Profile=>SPEC):db). The string eval interpolates user-controlled content directly into Perl code, bypassing any sandboxing. Network-exposed DBI::Gofer or DBI::ProxyServer instances are particularly vulnerable because per-request DSN parameters from remote clients can reach the Profile attribute, enabling unauthenticated or low-privilege remote code execution.

Business impact

A successful exploit grants an attacker arbitrary code execution within the Perl process hosting the DBI connection. In production environments, this typically means full compromise of the database client process, potential lateral movement to the database server itself, and access to all credentials and data the process can reach. For organizations running database brokers or application servers that use DBI, a remote attacker can execute system commands, exfiltrate sensitive data, install persistence mechanisms, or disrupt service availability. The vulnerability's severity is elevated because DBI is widely used across Perl-based infrastructure, including legacy enterprise systems and web applications.

Affected systems

Any system running Perl DBI versions before 1.650 is affected. This includes Perl applications, web frameworks (such as Catalyst or Mojolicious), legacy enterprise systems, and database broker services (DBI::Gofer, DBI::ProxyServer). Systems are at highest immediate risk if they: expose DBI-based database brokers to untrusted networks, accept DSN connection strings from user input, or run applications in environments where the DBI_PROFILE environment variable can be set by untrusted processes. Administrators should inventory Perl modules in production environments and check DBI versions across development, testing, and production systems.

Exploitability

The vulnerability requires authenticated access or control over one of three input vectors: environment variables, direct code attribute assignment, or DSN connection parameters. For local attackers or developers with code access, exploitation is trivial—setting Profile to a malicious string executes code immediately. For remote attackers, the primary vector is network-exposed DBI::Gofer or DBI::ProxyServer instances that accept untrusted DSN parameters from clients. The CVSS score of 8.8 (HIGH, AV:N/AC:L/PR:L) reflects that remote exploitation requires authenticated access or a pre-established connection, but once that condition is met, no additional complexity is needed—any crafted DSN or Profile value reliably executes code. Unauthenticated remote exploitation is possible if the broker is misconfigured to accept unauthenticated connections.

Remediation

Upgrade Perl DBI to version 1.650 or later. This patch version includes validation of the Profile attribute package name, preventing arbitrary code execution. In parallel, apply defense-in-depth measures: restrict network access to DBI brokers (DBI::Gofer, DBI::ProxyServer) using firewalls or VPNs; avoid accepting DSN connection strings from untrusted sources; do not allow untrusted processes to set the DBI_PROFILE environment variable; and review code that programmatically assigns the Profile attribute. Organizations unable to patch immediately should disable or isolate database brokers from untrusted networks.

Patch guidance

Verify your Perl DBI version using: perl -MDBI -e 'print $DBI::VERSION'. If version is below 1.650, update DBI via your package manager (apt, yum, cpan, etc.) or directly from CPAN. For cpan: cpan DBI or cpanm DBI. Test the upgrade in a non-production environment first, especially if your application uses custom Profile configurations. After upgrading, confirm the version change and restart any long-running Perl processes or application servers. Coordinate with teams managing database brokers to ensure they are also updated.

Detection guidance

Monitor for suspicious Profile attribute usage: log or alert on DBI_PROFILE environment variable being set, especially with system command patterns (backticks, qx(), system(), exec(), or fork()). In source code, flag any assignment to a DBI handle's Profile attribute with untrusted input, particularly from environment variables, user input, or DSN parameters. Network-based detection is difficult; focus on application-level logging and code review. Check for unexpected child processes spawned by Perl applications connected to databases, and monitor outbound network connections from DBI client processes that differ from normal patterns. Implement egress filtering to restrict unexpected outbound connections from database-connected services.

Why prioritize this

This vulnerability merits immediate patching due to its combination of high severity (CVSS 8.8), ease of exploitation once an input vector is accessible, and wide deployment of DBI across Perl infrastructure. Unlike many code-injection vulnerabilities that require elaborate payloads, this one executes arbitrary code from a simple string assignment. Organizations running DBI-based database brokers exposed to networks, or applications that accept user-supplied DSN parameters, should treat this as critical. Even systems without direct network exposure benefit from prompt patching, as insider threats or compromised dependencies could exploit local input vectors.

Risk score, explained

The CVSS 8.8 HIGH score reflects: Network exploitability (AV:N) via exposed brokers or network-reachable components; Low attack complexity (AC:L) because exploitation requires only a crafted string; Low privilege requirement (PR:L) as authenticated access to the broker or ability to set environment variables typically requires some foothold; and High confidentiality, integrity, and availability impact (C:H/I:H/A:H) because arbitrary code execution in a database client process typically compromises all data and functionality it can access. The score does not account for the absence of KEV status (not yet added to the Known Exploited Vulnerabilities catalog) but reflects the genuine severity of unauthenticated remote code execution in widely deployed software.

Frequently asked questions

Is my Perl application vulnerable if it doesn't use the Profile attribute?

If your code never sets or reads the DBI Profile attribute, and your application does not accept DSN connection strings from users, you are likely not directly at risk. However, review whether you use DBI::Gofer or DBI::ProxyServer, which may expose the vulnerability to remote clients. Additionally, check if any dependencies or frameworks dynamically construct DSN strings.

What is the difference between the three input vectors for Profile?

Environment variable (DBI_PROFILE): affects all DBI connections in a process if set. Direct assignment (e.g., $dbh->{Profile} = '...'): requires code access, typically a developer or insider threat. DSN driver-attribute clause (dbi:Driver(Profile=>...):db): most dangerous for network-exposed brokers because remote clients can inject it in connection requests. All three are equivalent in execution risk once Profile is set.

If I run a DBI::Gofer broker behind a firewall, am I safe?

Firewall protection reduces external attack surface, but does not eliminate risk from compromised internal systems, malicious developers, or misconfigurations that expose the broker. Upgrade to 1.650+ regardless of network topology, and maintain the principle of least privilege for network access to database infrastructure.

Can I disable the Profile feature instead of upgrading?

There is no built-in switch to disable Profile globally. The safest interim mitigation is to restrict or isolate DBI brokers from untrusted sources and to audit code for Profile assignments. However, upgrading is strongly preferred because DBI 1.650+ validates Profile input without removing functionality.

This analysis is based on the CVE record and vendor advisory for CVE-2026-14380 as of the publication and modification dates provided. Specific patch versions and detailed remediation steps should be verified against the official Perl DBI release notes and vendor communications. No exploit code or weaponized proof-of-concept is provided. This assessment does not constitute professional security advice; consult with your organization's security team and vendor documentation for your environment. KEV inclusion status may change; monitor CISA alerts for updates. Source: NVD (public-domain), retrieved 2026-08-16. Analysis generated by SEC.co (claude-haiku-4-5).