GHSA-2x36-qhx3-7m5f: Zendframework/zendframework1 SQL Injection Vulnerability
CRITICALGHSA-2x36-qhx3-7m5f is a CRITICAL (CVSS 9.8) sql injection vulnerability (CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')) affecting Zendframework/zendframework1 libraries in the Packagist ecosystem. The issue involves zendframework1 potential sql injection in the order implementation of zend_db_select. Remediation is available by upgrading affected packages to version 1.12.7.
GHSA-2x36-qhx3-7m5f at a Glance
Security Impact
CVSS: 9.8
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
How to Fix GHSA-2x36-qhx3-7m5f
To remediate this vulnerability, upgrade all affected Zendframework/zendframework1 dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade zendframework/zendframework1 to 1.12.7
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for zendframework/zendframework1
How to Check if You Are Affected
To determine whether your application is affected by GHSA-2x36-qhx3-7m5f, inspect your project dependencies for Zendframework/zendframework1:
inspect dependencies for zendframework/zendframework1
Analyze the terminal output to locate any version of Zendframework/zendframework1 in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.12.7), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection'), where the product constructs all or part of an sql command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended sql command when it is sent to a downstream component. without sufficient removal or quoting of sql syntax in user-controllable inputs, the generated sql query can cause those inputs to be interpreted as sql instead of ordinary user data. In Zendframework/zendframework1, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
GHSA-2x36-qhx3-7m5f Affected Zendframework/zendframework1 Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
zendframework/zendframework1
|
Packagist |
≥ 1.12.0
< 1.12.7
|
1.12.7
|
References
Frequently Asked Questions
What is GHSA-2x36-qhx3-7m5f?
Which Zendframework/zendframework1 versions are affected?
What version fixes GHSA-2x36-qhx3-7m5f?
Is zendframework/zendframework1 affected?
What is the CVSS score of GHSA-2x36-qhx3-7m5f?
What CWE is associated with GHSA-2x36-qhx3-7m5f?
How can I check Packagist dependencies for GHSA-2x36-qhx3-7m5f?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-2x36-qhx3-7m5f",
"modified" : "2024-06-07T22:24:52Z",
"published" : "2024-06-07T22:24:52Z",
"aliases" : [ ],
"summary" : "ZendFramework1 Potential SQL injection in the ORDER implementation of Zend_Db_Select",
"details" : "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.\n\nFor instance, the following code is affected by this issue:\n```\n$db = Zend_Db::factory( /* options here */ );\n$select = $db->select()\n ->from(array('p' => 'products'))\n ->order('MD5(1); drop table products');\necho $select;\n```\nThis code produce the string:\n```\nSELECT \"p\".* FROM \"products\" AS \"p\" ORDER BY MD5(1);drop table products ASC\n```\ninstead of the correct one:\n```\nSELECT \"p\".* FROM \"products\" AS \"p\" ORDER BY \"MD5(1);drop table products\" ASC\n```\nThe 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.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Packagist",
"name" : "zendframework/zendframework1"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "1.12.0"
}, {
"fixed" : "1.12.7"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://framework.zend.com/security/advisory/ZF2014-04"
}, {
"type" : "WEB",
"url" : "https://github.com/FriendsOfPHP/security-advisories/blob/master/zendframework/zendframework1/ZF2014-04.yaml"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/zendframework/zf1"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-89" ],
"severity" : "CRITICAL",
"github_reviewed" : true,
"github_reviewed_at" : "2024-06-07T22:24:52Z",
"nvd_published_at" : null
}
}