shopware/core security advisory
CVE-2026-31888: Shopware has user enumeration via distinct error codes on Store API login endpoint
CVE-2026-31888 is a medium-severity user enumeration vulnerability in the PHP package shopware/core (CVSS 5.3), published 11 March 2026. It is fixed in 6.6.10.15 and 6.7.8.1, one per release line; earlier versions on each line are affected. It can be exploited without an account.
medium 5.3 published 2026-03-11 · updated 2026-06-17
- Affected versions
- < 6.6.10.15
>= 6.7.0.0, < 6.7.8.1 - Fixed in
- 6.6.10.15, 6.7.8.1
- Newest release
- 6.7.16.0
- Severity
- Medium · CVSS 5.3
- Type
- User enumeration
CWE-204 - Exploited in the wild
- Not on the CISA KEV list
checked 2026-11-04
Is your shopware/core version affected?
Who can exploit CVE-2026-31888
- Access: No account. Anyone who can send a request to an app that uses the affected code.
CVSS vector (scored by GitHub): CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
How to fix CVE-2026-31888 in shopware/core
- Find the installed version:
composer show shopware/core. If you never required it yourself,composer why shopware/coreshows which package pulls it in. - Update it:
composer update shopware/core --with-all-dependencies. You need the fixed version for your release line (6.6.10.15 and 6.7.8.1). - If Composer will not go that high, your composer.json constraint is holding it back. Widen it (for example
"shopware/core": "^6.7.8.1"if you can take that version), or upgrade the package that requires it. - Run
composer audit. It reads the same advisory data and should no longer list CVE-2026-31888. - Commit composer.lock and deploy it. On the server, run
composer install --no-devfrom the lock file, notcomposer update.
If you cannot upgrade yet
- Rate-limit login and password-reset endpoints and return the same response for unknown and known users.
- If your app does not use the affected feature, note that in your audit, but still plan the upgrade.
The CVE-2026-31888 advisory
Shopware is an open commerce platform. Prior to 6.7.8.1 and 6.6.10.15, the Store API login endpoint (POST /store-api/account/login) returns different error codes depending on whether the submitted email address belongs to a registered customer (CHECKOUT__CUSTOMER_AUTH_BAD_CREDENTIALS) or is unknown (CHECKOUT__CUSTOMER_NOT_FOUND). The "not found" response also echoes the probed email address. This allows an unauthenticated attacker to enumerate valid customer accounts. The storefront login controller correctly unifies both error paths, but the Store API does not — indicating an inconsistent defense. This vulnerability is fixed in 6.7.8.1 and 6.6.10.15.
References
- GitHub advisory GHSA-gqc5-xv7m-gcjq github.com
Other shopware/core advisories
- medium CVE-2026-48013: Shopware: SSRF in Media External-Link Endpoint Bypasses IP Validation 2026-06-04
- medium CVE-2026-48015: Shopware: Stored XSS via SVG file upload — no SVG sanitization 2026-06-04
- medium CVE-2026-48016: Shopware: Unauthorized Payment Trigger for Foreign Orders via /store-api/handle-payment 2026-06-04
- medium CVE-2026-48014: Shopware: Admin API ACL Bypass in Order State Transition Endpoints 2026-06-04
- medium CVE-2026-48012: Shopware SSO referer trust leading to an arbitrary redirect target 2026-06-04
- low CVE-2026-48011: Shopware: Timing-attack on admin panel allowing enumeration of administrator usernames 2026-06-04
Related
Need help patching or upgrading? Laskyr does PHP and Laravel security fixes and upgrades. Tell us what you run and we reply with a plan and a price.
Ask about a fixWhere this data comes from
- Affected and fixed versions: the Packagist security advisories API (GitHub Advisory Database and FriendsOfPHP), the same data
composer audituses. Synced 2026-11-03. - Description, score, weakness and references: NIST National Vulnerability Database (NVD), checked 2026-11-04. This product uses data from the NVD API but is not endorsed or certified by the NVD.
- Exploited-in-the-wild status: the CISA Known Exploited Vulnerabilities catalog, checked 2026-11-04.
- Compiled by Daniel Lasek at Laskyr from the sources above. The summary, “who can exploit it”, “how to fix it” and hardening sections are our plain-English reading of the record and are generated from it. The quoted description is the record's own text. Spot an error? Tell us.