GHSA-7vw7-qx38-37vr
Propel2 SQL injection possible with limit() on MySQL
The limit() query method is susceptible to catastrophic SQL injection with MySQL.
For example, given a model User for a table users:
UserQuery::create()->limit('1;DROP TABLE users')->find();
This will drop the users table!
The cause appears to be a lack of integer casting of the limit input in either Propel\Runtime\ActiveQuery\Criteria::setLimit() or in Propel\Runtime\Adapter\Pdo\MysqlAdapter::applyLimit(). The code comments there seem to imply that casting was avoided due to overflow issues with 32-bit integers.
This is surprising behavior since one of the primary purposes of an ORM is to prevent basic SQL injection.
This affects all versions of Propel: 1.x, 2.x, and 3.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
What each source reports
GitHub Advisories Score used 9.8
Propel2 SQL injection possible with limit() on MySQL
The limit() query method is susceptible to catastrophic SQL injection with MySQL.
For example, given a model User for a table users:
UserQuery::create()->limit('1;DROP TABLE users')->find();
This will drop the users table!
The cause appears to be a lack of integer casting of the limit input in either Propel\Runtime\ActiveQuery\Criteria::setLimit() or in Propel\Runtime\Adapter\Pdo\MysqlAdapter::applyLimit(). The code comments there seem to imply that casting was avoided due to overflow issues with 32-bit integers.
This is surprising behavior since one of the primary purposes of an ORM is to prevent basic SQL injection.
This affects all versions of Propel: 1.x, 2.x, and 3.
- Record
GHSA-7vw7-qx38-37vr- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-02
OSV 9.8
Propel2 SQL injection possible with limit() on MySQL
The limit() query method is susceptible to catastrophic SQL injection with MySQL.
For example, given a model User for a table users:
UserQuery::create()->limit('1;DROP TABLE users')->find();
This will drop the users table!
The cause appears to be a lack of integer casting of the limit input in either Propel\Runtime\ActiveQuery\Criteria::setLimit() or in Propel\Runtime\Adapter\Pdo\MysqlAdapter::applyLimit(). The code comments there seem to imply that casting was avoided due to overflow issues with 32-bit integers.
This is surprising behavior since one of the primary purposes of an ORM is to prevent basic SQL injection.
This affects all versions of Propel: 1.x, 2.x, and 3.
- Record
GHSA-7vw7-qx38-37vr- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-89
- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
propel/propelPackagist | 2.0.0-alpha1 to 2.0.0-alpha7 | 2.0.0-alpha8 |
propel/propelPackagist | 2.0.0-alpha1 up to 2.0.0-alpha8, plus listed versions 2.0.0-alpha22.0.0-alpha32.0.0-alpha42.0.0-alpha52.0.0-alpha62.0.0-alpha7 | 2.0.0-alpha8 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | GitHub Advisories, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
GHSA-7vw7-qx38-37vr is a critical vulnerability (CVSS 9.8) in propel/propel, published May 20, 2024. No source lists public exploit code. Fixed in propel/propel 2.0.0-alpha8.
References
github.com/propelorm/Propel2/issues/1463
github.com/propelorm/Propel2/pull/1464
github.com/propelorm/Propel2/commit/cd23d7384a15cfe203e23b3a835c8ab1d81d9246
github.com/FriendsOfPHP/security-advisories/blob/master/propel/propel/2018-02-14.yaml
github.com/advisories/GHSA-7vw7-qx38-37vr
github.com/propelorm/Propel2