ZendFramework SQL injection due to execution of platform-specific SQL containing interpolationsGHSA-x2f4-8wxf-w3vf
HIGHFix: zendframework/zendframework@0ef63e7GHSA-x2f4-8wxf-w3vf is a high-severity (CVSS 8.8) vulnerability in zendframework/zendframework. A fix is available for zendframework/zendframework — see the affected versions and patch details below.
Real-World Exposure
zendframework/zendframework🐘zendframework/zendframeworkReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.
Description
The Zend\Db component in Zend Framework 2 provides platform abstraction, which is used in particular for SQL abstraction. Two methods defined in the platform interface, quoteValue() and quoteValueList(), allow users to manually quote values for creating SQL statements; these are in turn consumed by aspects of the SQL abstraction platform, including Zend\Db\Sql\Sql::getSqlStringForSqlObject(), and the getSqlString() method provided in a number of classes in the Zend\Db\Sql namespace.
While these methods are primarily intended for debugging and logging purposes, developers can use them to produce SQL that is then passed to the driver to execute. Due to a flaw in how the quoteValue() and quoteValueList() methods were written, this can lead to potential SQL injection.
The offending code is located in any of the Zend\Db\Adapter\Platform* objects, particularly the quoteValue() and quoteValueList() methods. These methods did not take into account most of the possible escapable characters that would need to be escaped when attempting to create a quoted value for interpolation into a SQL string. Moreover, these methods did value quoting without extension level coordination which, when available, takes character-sets into account when quoting.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐘Packagist | zendframework/zendframework | ≥ 2.0.0&&< 2.0.8 | 2.0.8composer require zendframework/zendframework:^2.0.8 |
| 🐘Packagist | zendframework/zendframework | ≥ 2.1.0&&< 2.1.4 | 2.1.4composer require zendframework/zendframework:^2.1.4 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for zendframework/zendframework, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update zendframework/zendframework to 2.0.8 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-x2f4-8wxf-w3vf is resolved across your whole dependency graph.
Workarounds
Until you can upgrade, make sure every query built from user input uses parameterised statements or a prepared-statement API rather than string concatenation, and reduce the database account's privileges so an injected query cannot read or alter data beyond what the feature needs.
Frequently Asked Questions
Is GHSA-x2f4-8wxf-w3vf in your dependencies?
Find it across Packagist, including transitive dependencies.