GitHub Advisoryadvisory · Packagist
GHSA-2x36-qhx3-7m5f ZendFramework1 Potential SQL injection in the ORDER implementation of Zend_Db_Select
CRITICAL
Official page ↗
- Ecosystem
- Packagist
- Packages
- zendframework/zendframework1
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-89
- Reviewed
- 2024-06-07
Affected packages
• Packagist zendframework/zendframework1: >= 1.12.0, < 1.12.7 → fixed in 1.12.7
Description
The implementation of the ORDER BY SQL statement in Zend_Db_Select of Zend Framework 1 contains a potential SQL injection when the query string passed contains parentheses.
For instance, the following code is affected by this issue:
```
$db = Zend_Db::factory( /* options here */ );
$select = $db->select()
->from(array('p' => 'products'))
->order('MD5(1); drop table products');
echo $select;
```
This code produce the string:
```
SELECT "p".* FROM "products" AS "p" ORDER BY MD5(1);drop table products ASC
```
instead of the correct one:
```
SELECT "p".* FROM "products" AS "p" ORDER BY "MD5(1);drop table products" ASC
```
The SQL injection occurs because we create a new Zend_Db_Expr() object, in presence of parentheses, passing directly the value without any filter on the string.
Related
Weakness · CWE (1)
- CWE-89 Improper Neutralization of Special Elements used in an SQL Command weakness