Mar 12, 2026·5 min read·38 visits
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.
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.
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 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.
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.
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.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Shopware Core Shopware | < 6.6.10.15 | 6.6.10.15 |
Shopware Core Shopware | >= 6.7.0.0, < 6.7.8.1 | 6.7.8.1 |
Shopware Platform Shopware | < 6.6.10.14 | 6.6.10.14 |
Shopware Platform Shopware | >= 6.7.0.0, < 6.7.8.1 | 6.7.8.1 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-204 / CWE-208 |
| Attack Vector | Network |
| Authentication Required | None |
| CVSS v3.1 Score | 5.3 (Medium) |
| Impact | Information Disclosure (User Enumeration) |
| Exploit Status | Proof of Concept Available |
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.
CVE-2026-58272 is a timing side-channel vulnerability in the authentication endpoint of Sync-in Server before version 2.4.1. Unauthenticated remote attackers can distinguish between valid and invalid usernames due to asymmetric execution paths. When processing invalid usernames, the database query returns early, skipping the computationally expensive bcrypt verification path that is normally triggered for valid accounts.
An input validation bypass in the CKAN MCP Server (NPM package @aborruso/ckan-mcp-server) prior to version 0.4.108 allows remote attackers to perform Server-Side Request Forgery (SSRF). The application's server URL validation mechanism checked hostnames only as literal strings without performing pre-connection DNS resolution. An attacker can bypass these checks using hostnames that resolve to loopback, private, or link-local IP addresses, including the AWS Instance Metadata Service (IMDS). This is the third documented bypass of this protection mechanism, succeeding previous incomplete mitigations in CVE-2026-33060 and CVE-2026-53509.
A security feature bypass vulnerability in the Falco k8saudit plugin (and its cloud-specific variants) allowed privileged workloads to run undetected. This bypass occurred because the plugin's default extraction logic and rules only evaluated standard containers, completely omitting initContainers and ephemeralContainers.
nginx-ignition is a web-based user interface for managing the Nginx web server. In versions 2.33.0 through 2.35.0, the application is vulnerable to an improper authentication flaw (CWE-287) in its Multi-Factor Authentication (MFA) implementation. The stateless validation of Time-Based One-Time Passwords (TOTP) allows an attacker to reuse a captured, active verification code multiple times within the standard 30-second validity window, successfully bypassing secondary authentication checks if primary credentials are known.
A vulnerability exists in the i18n middleware of nginx-ignition, enabling CPU amplification attacks. By transmitting a crafted Accept-Language header containing malformed tags separated by underscores, an unauthenticated remote attacker can bypass the length-guard threshold of the underlying Go parsing library. Normalization of underscores to hyphens occurs after the initial validation checks, forcing the parser into expensive quadratic-time loops that consume 100% of available CPU resources. This leads to a complete denial of service for the administrative API and potentially degrades the availability of the hosting system. This vulnerability has been resolved in version 2.40.1.
Nginx Ignition prior to version 2.41.1 contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its unauthenticated onboarding API endpoint. This flaw allows remote, unauthenticated attackers to register an administrative account by sending concurrent HTTP requests during the initial system configuration phase, bypassing the check meant to restrict onboarding to a single initial administrator.