CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-31888

CVE-2026-31888: Observable Response Discrepancy in Shopware Store API

Alon Barad
Alon Barad
Software Engineer

Mar 12, 2026·5 min read·30 visits

Executive Summary (TL;DR)

An unauthenticated user enumeration vulnerability exists in Shopware's Store API (`/store-api/account/login`) due to differing error responses and processing times for valid versus invalid accounts. Attackers can leverage this to compile lists of registered users.

Shopware Open Commerce Platform is vulnerable to user enumeration via observable response discrepancies in the Store API login endpoint. An unauthenticated remote attacker can probe the `/store-api/account/login` endpoint to systematically identify registered customer accounts, facilitating targeted social engineering or subsequent password spraying attacks.

Vulnerability Overview

Shopware provides a Store API to facilitate headless commerce operations, including authentication through the /store-api/account/login endpoint. This endpoint accepts standard JSON payloads containing an email address and a password. Due to insufficient normalization of error handling, the API exposes the existence or non-existence of customer accounts to unauthenticated requesters.

The vulnerability is classified as an Observable Response Discrepancy (CWE-204). The API returns distinct error codes based on whether the queried email address exists in the underlying database. This allows an attacker to bypass intended privacy controls and systematically map out the user base by submitting lists of candidate email addresses and evaluating the HTTP responses.

Account enumeration serves as a critical reconnaissance step in broader attack chains. By verifying which email addresses correspond to valid accounts, an attacker can highly target subsequent credential stuffing, password spraying, or spear-phishing campaigns. The impact is limited to information disclosure (CVSS Confidentiality: Low), but the lack of authentication or user interaction requirements increases the overall risk profile.

Root Cause Analysis

The root cause of this vulnerability lies in the inconsistent exception handling within the Store API's login routing logic. The AccountService::getCustomerByLogin method is responsible for validating the provided credentials against the user database. When authentication fails, this method differentiates the failure modes by throwing distinct PHP exceptions.

If the provided email address does not match any existing records in the database, the method throws a CustomerNotFoundException. The API framework subsequently catches this exception and translates it into a specific JSON error response with the code CHECKOUT__CUSTOMER_NOT_FOUND. Additionally, this error payload echoes the queried email address back to the client in the response details.

Conversely, if the email address exists but the provided password is incorrect, the method throws a BadCredentialsException. This translates into an API response with the code CHECKOUT__CUSTOMER_AUTH_BAD_CREDENTIALS. By failing to catch and normalize these exceptions into a generic authentication failure message at the controller boundary, the application leaks the internal database state directly to the client.

Exploitation Mechanics

Exploitation requires sending standard HTTP POST requests to the vulnerable /store-api/account/login endpoint. The attacker does not need any prior authentication or specific network positioning. The requests require a JSON body containing the target email and a generic password string.

POST /store-api/account/login HTTP/1.1
Host: vulnerable-shopware.local
Content-Type: application/json
 
{
  "email": "target@example.com",
  "password": "InvalidPassword123!"
}

The attacker observes the resultant JSON response body. An invalid account yields a 400 or 401 status with the error code CHECKOUT__CUSTOMER_NOT_FOUND. A valid account yields a response with the error code CHECKOUT__CUSTOMER_AUTH_BAD_CREDENTIALS. The attacker scripts this process to iterate over thousands of candidate addresses, classifying them based purely on string matching within the returned error codes.

Timing Side-Channel Considerations

Even if the explicit error codes are unified, the underlying authentication logic may introduce an Information Exposure Through Environmental Side-Channels (CWE-208). In a typical vulnerable implementation, the application first queries the database for the user record. If the record is absent, the execution flow terminates immediately.

If the record exists, the application proceeds to verify the provided password against the stored hash. Shopware utilizes modern, computationally intensive hashing algorithms (such as Argon2 or BCrypt) to secure stored credentials. The execution of functions like password_verify() requires measurable CPU time (often tens to hundreds of milliseconds, depending on the work factor).

This creates a measurable timing discrepancy. Requests targeting non-existent users return significantly faster than requests targeting valid users. An attacker measuring the response latency over a network can statistically differentiate between valid and invalid accounts, effectively performing user enumeration even when the HTTP response body and status codes are perfectly uniform.

Remediation and Mitigation Analysis

Complete remediation of this vulnerability requires changes to both the error handling logic and the cryptographic timing execution paths. The immediate patch involves intercepting the CustomerNotFoundException at the LoginRoute boundary. Instead of passing this exception to the response formatter, the application must re-throw it as a generic BadCredentialsException to ensure the final output is indistinguishable from a standard failed login.

To address the timing side-channel, the authentication service must enforce a constant-time execution flow. This is achieved by computing a "dummy" hash comparison when the user is not found in the database. The system executes password_verify() against a hardcoded, static hash using the provided password, ensuring the CPU spends an equivalent amount of time processing the request regardless of whether the account exists.

Administrators who cannot apply the patches immediately should implement stringent rate limiting on the /store-api/account/login endpoint. Configuring Web Application Firewalls (WAF) or API gateways to track failed authentication attempts by IP address and strictly throttle bulk requests will severely degrade the efficacy of enumeration and subsequent brute-force attacks.

Official Patches

ShopwareGitHub Security Advisory GHSA-gqc5-xv7m-gcjq

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Affected Systems

Shopware CoreShopware Platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
Shopware Core
Shopware
< 6.6.10.156.6.10.15
Shopware Core
Shopware
>= 6.7.0.0, < 6.7.8.16.7.8.1
Shopware Platform
Shopware
< 6.6.10.146.6.10.14
Shopware Platform
Shopware
>= 6.7.0.0, < 6.7.8.16.7.8.1
AttributeDetail
CWE IDCWE-204 / CWE-208
Attack VectorNetwork
Authentication RequiredNone
CVSS v3.1 Score5.3 (Medium)
ImpactInformation Disclosure (User Enumeration)
Exploit StatusProof of Concept Available

MITRE ATT&CK Mapping

T1589.002Gather Victim Identity Information: Email Addresses
Reconnaissance
T1110.003Brute Force: Password Spraying
Credential Access
CWE-204
Observable Response Discrepancy

The product behaves differently or sends different responses depending on whether a particular state or condition exists, which may allow an attacker to learn about the state of the system.

Vulnerability Timeline

Vulnerability published by NVD and CVE.org
2026-03-11
Security advisory GHSA-gqc5-xv7m-gcjq released by Shopware
2026-03-11
Fixes released in Shopware versions 6.7.8.1, 6.6.10.15, and 6.6.10.14
2026-03-11

References & Sources

  • [1]Shopware Security Advisory
  • [2]NVD Vulnerability Detail
  • [3]CVE.org Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 15 hours ago•GHSA-7PPR-R889-MCF2
7.5

GHSA-7PPR-R889-MCF2: Unbounded WebSocket Message Aggregation in http4s-blaze-server leads to Denial of Service

An uncontrolled resource consumption vulnerability exists in the Scala-based http4s-blaze-server package of the http4s/blaze library. The vulnerability allows remote, unauthenticated attackers to cause an Out of Memory Error (OOM) and JVM crash by streaming a continuous sequence of small or empty WebSocket continuation frames with the FIN bit set to 0. This bypasses typical payload size checks because of the JVM's per-object allocation overhead, leading to rapid heap exhaustion with minimal network bandwidth.

Alon Barad
Alon Barad
6 views•5 min read
•about 16 hours ago•GHSA-95CV-R8X4-VH75
7.6

GHSA-95cv-r8x4-vh75: Path Traversal Vulnerability in OpenList Batch Rename Handler

A critical path traversal vulnerability has been identified in the OpenList Go-based backend package. The vulnerability exists within the batch rename handler because the application does not validate the source filename parameter before constructing filesystems paths. This omission allows authenticated users to escape their designated directory and rename files in sibling paths.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 17 hours ago•GHSA-P6PH-3JX2-3337
4.3

GHSA-P6PH-3JX2-3337: Horizontal Privilege Escalation and Metadata Information Disclosure via Bleve Search in OpenList

OpenList version 4.2.3 and prior is vulnerable to an authorization bypass and metadata leakage. When configured with the Bleve search engine backend, OpenList fails to perform separator-aware path matching when validating tenant containment. This allows authenticated users to access sibling directories sharing similar name prefixes. Furthermore, the search backend returns unfiltered global result counts, leaking existence verification data of unauthorized files via side-channel analysis.

Amit Schendel
Amit Schendel
7 views•5 min read
•about 18 hours ago•GHSA-86CX-WWF4-PHQ4
6.5

GHSA-86cx-wwf4-phq4: Path Prefix Confusion Authorization Bypass in OpenList

An authorization bypass vulnerability in OpenList version 4.2.3 and below allows authenticated users to read arbitrary files outside of their designated base directories due to an insecure path prefix check using Go's standard strings.HasPrefix function.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 19 hours ago•CVE-2026-16584
7.0

CVE-2026-16584: Security Policy Bypass in AWS API MCP Server via Startup Initialization Failure

A security policy bypass vulnerability exists in the AWS API MCP Server (awslabs-aws-api-mcp-server) from version 0.2.13 through 1.3.46. When the server fails to load the read-only operations index during startup (due to transient network failures, file permission issues, or other exceptions), it logs a warning but continues running in an insecure, degraded state. Under this condition, the security policy engine fails open, silently skipping all subsequent security checks and consent prompts for the lifetime of the process. This permits unauthorized mutating AWS CLI commands to execute via indirect prompt injection attacks.

Amit Schendel
Amit Schendel
7 views•7 min read
•about 20 hours ago•GHSA-6V4M-FW66-8R4X
6.5

GHSA-6V4M-FW66-8R4X: Path Disclosure and Shell Expansion Bypass in Shescape

An incomplete escaping vulnerability in the npm package 'shescape' allows unauthenticated users to trigger dynamic shell expansions, absolute path disclosure, and command block break-outs on Unix and Windows systems.

Alon Barad
Alon Barad
6 views•7 min read