CVE-2026-121007: SQL::Abstract versions from 1.90_01 before 2.000001_04 for Perl allow SQL injection via the where values of a nested statement in an identifier position

Published Nov 4, 2026
·
Updated

SQL::Abstract versions from 1.9001 before 2.00000104 for Perl allow SQL injection via the where values of a nested statement in an identifier position.

A nested statement such as { -select => ... } in a position where plain scalars are identifiers treats its own plain scalars as identifiers too. These positions are the select list, ORDER BY, GROUP BY, RETURNING, and with the ExtraClauses plugin FROM (-as) and JOIN (to). The values of the statement's where, having and set clauses, and the rows of a -values, go into the SQL text instead of the bind list, unescaped unless quotechar is set. Subselects in a WHERE condition are not affected.

An application that passes untrusted input as a where value of such a nested statement, expecting it to be bound, allows SQL injection.

Affected Software

4 affected components
debian/libsql-abstract-perl*
debian/libsql-abstract-perl*
debian/libsql-abstract-perl*
debian/libsql-abstract-perl<=2.000001-2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade SQL::Abstract to a version that resolves this vulnerability.

    Fixed in 2.000001_04

Event History

Nov 4, 2026
CVE Published
via MITRE·02:35 PM
Data Sourced
via MITRE·02:35 PM
RemedyDescriptionWeakness
Data Sourced
via NVD·03:17 PM
DescriptionWeakness
Data Sourced
via OSV·06:47 PM
DescriptionAffected Software

Frequently Asked Questions

1

Which applications are realistically exposed to this issue?

Applications using affected SQL::Abstract versions are exposed only if they pass untrusted input as a where, having, set, or -values row value inside a nested -select statement used in an identifier position. Affected identifier positions include the select list, ORDER BY, GROUP BY, RETURNING, and, with the ExtraClauses plugin, FROM (-as) and JOIN (to).

2

Are nested subselects used in ordinary WHERE conditions affected?

No. Subselects in a WHERE condition are explicitly not affected by this issue.

3

What configuration changes the injection behavior?

The affected nested-statement values are placed into SQL text rather than the bind list. They are unescaped unless quote_char is set.

4

What can be done if upgrading is not immediately possible?

Do not pass untrusted input as where, having, set, or -values row values in nested statements used in the affected identifier positions. Restructure such queries so untrusted values are not handled through those nested statements.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203