home / blog

2026-11-08 · high

SQL::Abstract: SQL injection via arrayref - CVE-2026-121265

SQL::Abstract allows SQL injection via arrayref in insert, update and generate with default array_datatypes=0.

SQL::Abstract: SQL injection via arrayref - CVE-2026-121265

SQL::Abstract is a widely-used Perl library for building parameterized SQL queries. However, CVE-2026-121265 reveals a critical SQL injection vulnerability: when the array_datatypes option is disabled (the default), the insert(), update() and generate() functions interpret arrayref values as literal SQL without parameterization. The first element of the array is inserted into the SQL text without escaping, while the rest become bind values. This allows JSON arrays or repeated form fields, decoded as arrayref by Perl applications, to inject SQL into the database.

The vulnerability was registered publicly on NVD on November 7, 2026. A functioning proof-of-concept was released on a public GitHub repository the same day, confirming exploits via INSERT/UPDATE, exfiltration, privilege escalation and generate()/AUTOLOAD bypass. No in-the-wild exploitation has been reported; however, public PoC availability significantly raises exploitation risk. Perl applications using SQL::Abstract with default options are immediately vulnerable.

Defensive teams must prioritize updating SQL::Abstract to version 2.000003 or later across all production Perl systems. Before updating, conduct an inventory of applications dependent on this library, especially those handling sensitive data or managing privileged access. Review logs for SQL injection signals; audit the database for unauthorized modifications or anomalous access. If immediate update is not feasible, disable AUTOLOAD and restrict arrayref input sources as a temporary mitigation.

At a glance

What
SQL injection in SQL::Abstract (Perl query builder). With array_datatypes=0 (default), insert/update/generate treat arrayref as literal SQL. First element unescaped. CVE-2026-121265.
Severity
CVSS not reported. Impact: SQL injection on default options, data access, database modification, potential privilege escalation.
Affected versions
SQL::Abstract versions before 2.000003; also affects generate() and AUTOLOAD when allow_autoload=on.
Fix
Update to SQL::Abstract 2.000003 or later.
Status
NVD published November 7, 2026; public PoC on GitHub confirmed November 8, 2026; patch available.
Action
Verify SQL::Abstract use in Perl apps; update to 2.000003+; check logs for SQL injection signals; audit database for unauthorized changes.

Sources: NVD, CVE-2026-121265

← All articles