PS Summit! We’re organizing a major event
3 min. read
Categories: Security
Security blog post: Updates for 2.x versions

Security is, and always will be, our top priority. Protecting the merchants and customers who rely on Sylius every day is something we treat as a continuous responsibility. This is why we strongly recommend keeping Sylius installations up to date, especially when security releases are available. This round of fixes started with a few independent reports concerning the shop API and the cart Live Components. Rather than patching each one on its own, we reviewed the authorization and order-state handling around them more thoroughly, so that every affected operation is hardened in the same consistent way.

If your store runs a version below 2.0.18, 2.1.15 or 2.2.6, we strongly encourage you to upgrade as soon as possible. The issues described below include a broken object-level authorization (IDOR) on payment requests, an authorization bypass on the account payments endpoint, and a race condition that can corrupt or even delete an order that has already been placed, with possible data loss and financial impact for merchants.

A safe eCommerce environment depends on staying ahead of issues like these, and we are grateful for the trust and vigilance of our community. Below, we outline each issue, its impact, and the steps you should take to protect your business.

Sylius 2.0 and above

CVE-2026-?: IDOR on Shop Payment Request endpoints in API

The original security advisory has been published on GitHub at Sylius/Sylius repository.

Impact

The PATCH /api/v2/shop/account/orders/{tokenValue}/payments/{paymentId} endpoint, used by an authenticated customer to change the payment method of a placed but unpaid order, does not validate that the chosen payment method is enabled for the order’s channel. The equivalent checkout endpoint correctly rejects out-of-channel payment methods with HTTP 422; the account endpoint silently accepts them and returns HTTP 200. An authenticated customer can therefore assign any globally enabled payment method to their own order, including methods the store operator has explicitly excluded from that channel.

Patches

The issue is fixed in versions: 2.0.18, 2.1.15, 2.2.6 and above.

Workarounds

If an immediate upgrade is not possible, decorate the PaymentMethodChangerInterface service to re-validate the chosen payment method against the channel’s supported methods. See the full workaround in the advisory.

CVE-2026-?: Channel-based Payment Method Restriction Bypass on Shop Account Orders API

The original security advisory has been published on GitHub at Sylius/Sylius repository.

Impact

The PATCH /api/v2/shop/account/orders/{tokenValue}/payments/{paymentId} endpoint, used by an authenticated customer to change the payment method of a placed but unpaid order, does not validate that the chosen payment method is enabled for the order’s channel. The equivalent checkout endpoint correctly rejects out-of-channel payment methods with HTTP 422; the account endpoint silently accepts them and returns HTTP 200. An authenticated customer can therefore assign any globally enabled payment method to their own order, including methods the store operator has explicitly excluded from that channel.

Patches

The issue is fixed in versions: 2.0.18, 2.1.15, 2.2.6 and above.

Workarounds

If an immediate upgrade is not possible, decorate the PaymentMethodChangerInterface service to re-validate the chosen payment method against the channel’s supported methods. See the full workaround in the advisory.

CVE-2026-?: Modification or Deletion of an Already-Completed Order via the Cart FormComponent

The original security advisory has been published on GitHub at Sylius/Sylius repository.

Impact

When the cart page is open in the browser and the underlying order becomes completed in the background (e.g. an admin changes its status, or the customer finalizes payment in another tab), the cart Live Component remains unaware of the state change. Clearing the cart then calls manager->remove() on the completed order and permanently deletes it; removing an item or changing a quantity mutates the completed order. The customer’s order data is irreversibly corrupted or lost even though the order has already been placed and paid for. The same vector can be triggered deliberately by an authenticated customer to alter quantities beyond what was paid for.

Patches

The issue is fixed in versions: 2.0.18, 2.1.15, 2.2.6 and above.

Workarounds

If an immediate upgrade is not possible, override the cart FormComponent at the project level so that any order in the completed checkout state is treated as a fresh cart and can no longer be mutated or deleted. See the full workaround in the advisory.

Reporters

We would like to extend our gratitude to the researchers who responsibly disclosed these vulnerabilities:

  • IDOR on Shop Payment Request endpoints in API – Fase Rais Baradika (@baradika) and Anshu Chimala (@achimala)
  • Channel-based Payment Method Restriction Bypass on Shop Account Orders API@FredrikEV
  • Modification or Deletion of an Already-Completed Order via the Cart FormComponent – Kévin Gonella (@kgonella)

Summary

#AdvisorySeverity
1.IDOR on Shop Payment Request endpoints in APIModerate
2.Channel-based Payment Method Restriction Bypass on Shop Account Orders APIModerate
3.Modification or Deletion of an Already-Completed Order via the Cart FormComponentModerate

These fixes address areas that directly affect the customer journey and store operations, including payments, order access, and order completion.

We recommend updating your Sylius installation as soon as you can. Sharing these fixes with others in the community also helps keep the whole ecosystem safer for everyone.We would like to thank everyone who participated in responsible disclosure of these vulnerabilities. If you believe you have found a security vulnerability in Sylius, please do not post it publicly. Instead, report it to [email protected].

Tags: news Sylius
Share:
Kamil Grygierzec
More from our blog
Ecosystem 3 min read 10.09.2026
August settled into something calmer than the months before it, but no less productive: the 2.2 cycle wrapped up, Payment Request graduated to fully stable, and the AI tooling stack moved onto its new native-CLI foundation, all while the ecosystem kept new projects coming, from an AI-powered curtain shop to… Read More
Ecosystem News Sylius 3 min read 01.09.2026
Stripe has officially joined the Sylius ecosystem as our Preferred Payment Partner, marking another important step in the development of our payments ecosystem. Stripe is a financial infrastructure platform for businesses, used by millions of companies to accept payments and grow revenue.  This partnership also represents… Read More
Ecosystem 3 min read 12.08.2026
Summer slowdown? Not here. While half of Europe was off chasing sunshine, the Sylius ecosystem kept shipping, and July turned into one of the busiest months yet, headlined by a new official partnership with Stripe and a fresh MCP tool for admin panel. From new go-lives to amazing events, the… Read More
Comments