Shopware CVE-2026-48014: Authorization Bypass in the Admin API

Step by step
How the attack unfolded
Click a phase for details – or let the animation play through.
PHASE 1/4 · Initial Access

An attacker uses a valid low-privileged API account to gain access to Shopware's Admin API.

T1190 – Exploit Public-Facing Application T1078 – Valid Accounts
  • Prerequisite: valid API session with any account, even highly restricted
  • Commonly used: integration accounts for ERP, fulfillment or support tools
  • About 30,089 shops affected worldwide, over 20,000 in Germany
  • Attack via direct API calls, independent of UI restrictions
PHASE 2/4 · Execution

The attacker sends a hidden API call to the order state transition endpoints.

T1106 – Native API
  • Targets three unprotected routes: /api/_action/order/{orderId}/state/{transition} etc.
  • Only requires a known or guessed order ID
  • Standard order-update API returns 403, transition action responds with 200
  • CVE-2026-48014 / EUVD-2026-45241, CVSS 6.5 (Medium)
PHASE 3/4 · Privilege Escalation

Through missing ACL metadata and fail-open behavior, the user bypasses the authorization boundary.

T1068 – Exploitation for Privilege Escalation T1548 – Abuse Elevation Control Mechanism
  • Vertical authorization bypass (Broken Access Control)
  • Three routes lack ACL privilege declaration in route metadata
  • AclAnnotationValidator aborts on missing annotations and allows through (fail-open)
  • Privileges order:update, order_transaction:update, order_delivery:update are bypassed
PHASE 4/4 · Impact

The state change is written to the database with system privileges (SYSTEM_SCOPE), manipulating order states.

T1565 – Data Manipulation T1565.001 – Stored Data Manipulation
  • Orders can be cancelled, marked as paid or marked as shipped
  • Execution in SYSTEM_SCOPE without further authorization check
  • Consequences: loss of operational integrity, automation misuse, disruption of fulfillment/settlement/support
  • Traces detectable in the state_machine_history table
Short & clear answers
Frequently asked questions about this incident
Am I affected by CVE-2026-48014?
All Shopware installations before version 6.6.10.18 (in the 6.6.x branch) as well as all versions from 6.7.0.0 up to and including 6.7.10.0 are affected. You can find your version in the admin area under Settings > System > Version Information or via console with php bin/console --version. Older branches such as 6.5.x are also considered vulnerable since they no longer receive security patches.
What do I need to do now to close the vulnerability?
First create a full backup, then update immediately to version 6.6.10.21 (6.6.x) or 6.7.12.2 (6.7.x); the fix has been included since 6.6.10.18 and 6.7.10.1 respectively. Run the update via Settings > System > Shopware Account > Updates or through Composer with composer update shopware/core shopware/platform. Afterwards, review all API accounts according to the least-privilege principle.
How dangerous is this vulnerability really?
The vulnerability is rated medium with a CVSS score of 6.5 and allows low-privileged users to change order states—such as marking orders as paid or shipped—even though they lack the required permissions. No confirmed attacks in the wild are known so far (EPSS score of only 0.23%, not listed in the CISA KEV catalog). Nevertheless, exploitation can cause significant operational damage, for example in fulfillment or settlement processes.
How can I tell if my shop has already been attacked?
Check the database table state_machine_history for suspicious state changes, for example using SELECT * FROM state_machine_history WHERE created_at > '2026-01-01' ORDER BY created_at DESC LIMIT 100;. Also search your Nginx or Apache logs for POST requests to /api/_action/order/*/state/* that originated from non-privileged API users and returned HTTP status 200. Suspicious changes may indicate possible exploitation.
What can I do if I can't update immediately?
As a stopgap, you can secure the affected routes at the network level by restricting access to /api/_action/order/*/state/*, /api/_action/order_transaction/*/state/*, and /api/_action/order_delivery/*/state/* to trusted admin IP addresses only (e.g., via an Nginx allow/deny rule). However, this is explicitly only a temporary measure and no substitute for the actual update. Apply the update as soon as possible.
More security news
You might also be interested in
Critical Elementor Pro Flaw: Attackers Can Fully Take Over WordPress Sites
A file upload bug in Elementor Pro up to 4.2.1 allows RCE without login. Version 4.2.2 fixes the flaw – update now!
Pods Plugin: Critical Flaw Enables Admin Takeover, No Login
A critical flaw in the WordPress plugin Pods lets attackers overwrite admin passwords without login. Over 100,000 sites are affected.
miniOrange SAML SSO: Critical Bypass Turns Attackers Into Admins
Two critical auth bypasses in the miniOrange SAML SSO plugin allow forged SAML assertions—up to full WordPress admin access.