Low severityNVD Advisory· Published Mar 10, 2026· Updated Mar 10, 2026
Craft Commerce has Stored XSS in Craft Commerce Order Details Slideout
CVE-2026-29177
Description
Craft Commerce is an ecommerce platform for Craft CMS. Prior to 4.10.2 and 5.5.3, a Stored Cross-Site Scripting (XSS) vulnerability exists in the Craft Commerce Order details. Malicious JavaScript can be injected via the Shipping Method Name, Order Reference, or Site Name. When a user opens the order details slideout via a double-click on the order index page, the injected payload executes. This vulnerability is fixed in 4.10.2 and 5.5.3.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
craftcms/commercePackagist | >= 4.0.0, < 4.10.2 | 4.10.2 |
craftcms/commercePackagist | >= 5.0.0, < 5.5.3 | 5.5.3 |
Affected products
1Patches
1b0683e04773forder metadata xss
1 file changed · +5 −5
src/elements/Order.php+5 −5 modified@@ -3399,24 +3399,24 @@ public function getMetadata(): array $metadata = []; if ($this->isCompleted) { - $metadata[Craft::t('commerce', 'Reference')] = $this->reference; + $metadata[Craft::t('commerce', 'Reference')] = Html::encode($this->reference); $metadata[Craft::t('commerce', 'Date Ordered')] = Craft::$app->getFormatter()->asDatetime($this->dateOrdered, 'short'); } - $metadata[Craft::t('commerce', 'Coupon Code')] = $this->couponCode; + $metadata[Craft::t('commerce', 'Coupon Code')] = Html::encode($this->couponCode); $orderSite = $this->getOrderSite(); - $metadata[Craft::t('commerce', 'Order Site')] = $orderSite?->getName() ?? ''; + $metadata[Craft::t('commerce', 'Order Site')] = Html::encode($orderSite?->getName()) ?? ''; $shippingMethod = $this->getShippingMethod(); - $metadata[Craft::t('commerce', 'Shipping Method')] = $shippingMethod?->getName() ?? ''; + $metadata[Craft::t('commerce', 'Shipping Method')] = Html::encode($shippingMethod?->getName()) ?? ''; $metadata[Craft::t('app', 'ID')] = $this->id; $metadata[Craft::t('commerce', 'Short Number')] = $this->getShortNumber(); $metadata[Craft::t('commerce', 'Paid Status')] = $this->getPaidStatusHtml(); $metadata[Craft::t('commerce', 'Total Price')] = $this->totalPriceAsCurrency; $metadata[Craft::t('commerce', 'Paid Amount')] = $this->totalPaidAsCurrency; - $metadata[Craft::t('commerce', 'Origin')] = $this->origin; + $metadata[Craft::t('commerce', 'Origin')] = Html::encode($this->origin); return array_merge($metadata, parent::getMetadata()); }
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
4- github.com/advisories/GHSA-mj32-r678-7mvpghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2026-29177ghsaADVISORY
- github.com/craftcms/commerce/commit/b0683e04773f16bba6af9df18aab495fc5dde68aghsax_refsource_MISCWEB
- github.com/craftcms/commerce/security/advisories/GHSA-mj32-r678-7mvpghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.