Read the docs
TI-2024-38710 Aliases GHSA-7vw7-qx38-37vr

Propel2 SQL injection possible with limit() on MySQL

Priority LOW 38CWE-89Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
SQL injection
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-89.

Summary

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.

Why it matters now

Fix Fixed propel/propel (Packagist): 2.0.0-alpha8

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—propel/propel (Packagist)2.0.0-alpha1 to before 2.0.0-alpha82.0.0-alpha8Patch availableGHSA-7vw7-qx38-37vr
  • propel/propel (Packagist) Vendor— Affected 2.0.0-alpha1 to before 2.0.0-alpha8 Fixed in 2.0.0-alpha8 Patch available GHSA-7vw7-qx38-37vr

Remediation

  • Fix · GHSA-7vw7-qx38-37vr propel/propel (Packagist) Fixed in 2.0.0-alpha8 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-7vw7-qx38-37vr

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences