☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6 🐛 CWE-362
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-7954

CVE-2025-7954 Race Condition in Shopware
📅 PUBLISHED: 2025-08-06 07:16 UTC 🔄 UPDATED: 2026-09-23 20:28 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.39%
👁️
0.39% probability
9.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
6.0
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-7954 is a race condition vulnerability in Shopware’s voucher system, affecting Shopware v6.6.10.4. The flaw allows attackers to bypass intended voucher restrictions and exceed usage limitations, potentially enabling unauthorized discounts or repeated voucher redemptions. No public exploit code or patch is currently available, and the CVSS score is unassigned. The vulnerability is classified under CWE-362 (Concurrent Execution using Shared Resource with Improper Synchronization). Given the lack of patch and public exploit, immediate defensive measures are critical.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Shopware is a PHP-based e-commerce platform. The vulnerability resides in the voucher system, which is part of the core application. No third-party package or dependency is directly implicated, but the risk of supply chain compromise exists if attackers leverage the race condition to manipulate voucher state in shared database transactions.

CVSS Breakdown & Threat Level

  • CVSS Score: 0.0 (Unassigned)
  • Vector: UNKNOWN
  • Attack Vector: Network (likely)
  • Attack Complexity: High (race condition requires precise timing)
  • Privileges Required: None (voucher redemption is typically unauthenticated)
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: None
  • Integrity Impact: High (voucher restrictions bypassed)
  • Availability Impact: None

Threat Level: Medium-High. While exploitation requires technical skill, the impact on voucher integrity can lead to financial loss.

Deep Dive & Mechanics

The vulnerability is a classic race condition (TOCTOU - Time of Check, Time of Use) in Shopware’s voucher redemption logic. When a user applies a voucher, the system checks usage limits (e.g., max uses per user, global max uses) and then decrements the remaining uses. If multiple concurrent requests are sent before the first transaction commits, the check may pass for all requests, allowing the voucher to be used more times than intended.

Attack Flow:

  1. Attacker identifies a voucher with a usage limit (e.g., 1 use per customer).
  2. Attacker sends multiple simultaneous redemption requests (e.g., via HTTP pipelining or parallel threads).
  3. The server processes each request concurrently; each thread reads the current usage count before any other thread has written the decremented value.
  4. All threads pass the limit check, and the voucher is redeemed multiple times.

Root Cause: Lack of proper locking or atomic database operations during voucher usage validation and decrement.

Vulnerable vs. Patched Code

No patch is available. The vulnerable code likely resides in Shopware’s voucher service, where usage checks and updates are not wrapped in a database transaction with row-level locking.

Vulnerable Pattern (Pseudocode):

function redeemVoucher($voucherId, $userId) {
    $voucher = getVoucher($voucherId);
    if ($voucher->remainingUses <= 0) {
        throw new Exception("Voucher exhausted");
    }
    // Race window: another request can read the same remainingUses here
    $voucher->remainingUses--;
    saveVoucher($voucher);
}

Patched Pattern (Expected):

function redeemVoucher($voucherId, $userId) {
    $db->beginTransaction();
    $voucher = getVoucherForUpdate($voucherId); // SELECT ... FOR UPDATE
    if ($voucher->remainingUses <= 0) {
        $db->rollback();
        throw new Exception("Voucher exhausted");
    }
    $voucher->remainingUses--;
    saveVoucher($voucher);
    $db->commit();
}

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Shopware v6.6.10.4 instance with a voucher that has a usage limit (e.g., 1 use per customer).
  • Ability to send concurrent HTTP requests (e.g., using curl, Burp Suite, or custom Python script).

Exploitation Steps:

  1. Identify a voucher code with a usage limit (e.g., WELCOME10).
  2. Use a tool to send multiple simultaneous POST requests to the voucher redemption endpoint (e.g., /api/voucher/redeem).
  3. Example using Python with requests and concurrent.futures:
import requests
from concurrent.futures import ThreadPoolExecutor

url = "https://target-shop.com/api/voucher/redeem"
data = {"voucherCode": "WELCOME10", "userId": "attacker123"}
headers = {"Content-Type": "application/json"}

def redeem():
    r = requests.post(url, json=data, headers=headers)
    return r.status_code

with ThreadPoolExecutor(max_workers=20) as executor:
    results = list(executor.map(lambda _: redeem(), range(20)))
    print(f"Successful redemptions: {results.count(200)}")
  1. If successful, the voucher will be redeemed multiple times, bypassing the limit.

Blue Team

Detection:

  • Monitor for multiple rapid-fire requests to voucher redemption endpoints from the same IP or user.
  • Look for anomalies in voucher usage logs (e.g., same voucher used more times than allowed within seconds).
  • Implement rate limiting on voucher redemption endpoints.

Prevention:

  • Apply database-level locking (e.g., SELECT ... FOR UPDATE) in the voucher redemption logic.
  • Use atomic operations (e.g., UPDATE vouchers SET remaining_uses = remaining_uses - 1 WHERE id = ? AND remaining_uses > 0).
  • Add idempotency keys to voucher redemption requests.

Indicators of Compromise (IOCs)

  • Network: Multiple concurrent POST requests to /api/voucher/redeem or similar endpoints from a single source.
  • Logs: Voucher usage logs showing the same voucher redeemed more times than its configured limit within a short time window (e.g., < 1 second).
  • Database: Voucher remaining_uses field dropping below zero or showing inconsistent decrements.

Detection Engineering

YARA Rule

rule CVE_2025_7954_Shopware_Voucher_Race {
    meta:
        description = "Detects potential race condition exploitation in Shopware voucher system"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-7954"
    strings:
        $vulnerable_code = "remainingUses" nocase
        $race_window = "SELECT" nocase
        $update_query = "UPDATE" nocase
    condition:
        all of them
}

Sigma Rule

title: CVE-2025-7954 - Shopware Voucher Race Condition Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects multiple rapid voucher redemption requests from a single source
author: Valters IT
logsource:
    category: webserver
    product: shopware
detection:
    selection:
        cs-method: POST
        c-uri|contains: "/api/voucher/redeem"
    timeframe: 1s
    condition:
        selection | count() by src_ip > 5
falsepositives:
    - Legitimate bulk voucher applications (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-7954 - Shopware Voucher Race Condition Attempt";
    flow:to_server;
    content:"POST"; http_method;
    content:"/api/voucher/redeem"; http_uri;
    threshold: type both, track by_src, count 10, seconds 1;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable voucher system if not critical, or temporarily limit voucher usage to 1 per user globally.
  2. Implement rate limiting on voucher redemption endpoints (e.g., 1 request per second per IP).
  3. Add database-level locking in the voucher redemption logic (e.g., SELECT ... FOR UPDATE).
  4. Monitor logs for anomalous voucher usage patterns.

Long-term Fix:

  • Apply atomic updates: UPDATE vouchers SET remaining_uses = remaining_uses - 1 WHERE id = ? AND remaining_uses > 0.
  • Use idempotency tokens to prevent duplicate redemptions.
  • Upgrade to a patched version once released by Shopware.

Workaround:

  • If using a load balancer, enable session stickiness to reduce race window.
  • Implement a distributed lock (e.g., Redis) around voucher redemption.

Valters IT
DevSecOps & Cyber Threat Intelligence

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-7954/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.