CVE-2025-22384
Executive Summary
CVE-2025-22384 is a business logic vulnerability in Optimizely Configured Commerce, specifically within the B2B application. The flaw allows storefront visitors to purchase discontinued products by altering HTTP requests before they reach the server. This bypasses intended business rules that should prevent the sale of discontinued items. The vulnerability has a medium severity rating, and no public proof-of-concept (PoC) or exploit code is currently available. The vendor has released a patch in version 5.2.2408.
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 not related to an open-source package manager (NPM, PyPI, Go, Ruby). It is a proprietary e-commerce application. The supply chain risk is limited to the direct use of the Optimizely Configured Commerce software.
CVSS Breakdown & Threat Level
The CVSS score is listed as 0.0, which is likely a placeholder. Based on the description, a reasonable CVSS vector would be:
- Attack Vector (AV): Network (N) - The vulnerability is exploitable remotely.
- Attack Complexity (AC): Low (L) - The attack requires altering requests, which is straightforward.
- Privileges Required (PR): None (N) - No authentication is needed.
- User Interaction (UI): None (N) - No user interaction is required.
- Scope (S): Unchanged (U) - The vulnerability affects the same security authority.
- Confidentiality (C): None (N) - No data disclosure.
- Integrity (I): High (H) - The attacker can purchase products that should not be available.
- Availability (A): None (N) - No impact on availability.
Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N Estimated Base Score: 7.5 (High)
Threat Level: Medium to High. While the vulnerability does not allow data theft or system compromise, it enables unauthorized purchases, leading to financial loss and inventory management issues.
Deep Dive & Mechanics
The vulnerability resides in the business logic layer of Optimizely Configured Commerce. The application likely has a server-side check to prevent the purchase of discontinued products. However, this check is performed after the request is processed by the client-side logic. An attacker can intercept and modify the HTTP request (e.g., using a proxy like Burp Suite) to change product identifiers, quantities, or other parameters that indicate a product is discontinued.
How it works:
- A storefront visitor browses a product that is marked as "discontinued" in the database.
- The client-side UI may hide the "Add to Cart" button or disable the purchase flow.
- The attacker intercepts the HTTP request (e.g., POST to
/cart/add) and modifies the product ID or a flag that indicates the product is discontinued. - The server receives the altered request and processes it without re-validating the product's availability, allowing the purchase to succeed.
Root Cause: The server does not perform a secondary validation of the product's status (discontinued vs. active) after receiving the request. It trusts the client-side logic to enforce this rule.
Vulnerable vs. Patched Code
Since no source code is provided, we can infer the logic:
Vulnerable Code (Conceptual):
// Server-side endpoint for adding to cart
app.post('/cart/add', (req, res) => {
const productId = req.body.productId;
const quantity = req.body.quantity;
// No check for discontinued status
addToCart(productId, quantity);
res.send({ success: true });
});
Patched Code (Conceptual):
// Server-side endpoint for adding to cart
app.post('/cart/add', (req, res) => {
const productId = req.body.productId;
const quantity = req.body.quantity;
// Check if product is discontinued
const product = getProductById(productId);
if (product.status === 'discontinued') {
return res.status(400).send({ error: 'Product is discontinued' });
}
addToCart(productId, quantity);
res.send({ success: true });
});
The patch adds a server-side validation to check the product's status before processing the request.
Exploitation & Lab Setup
Red Team
Objective: Purchase a discontinued product without authorization.
Prerequisites:
- Access to a storefront of an unpatched Optimizely Configured Commerce instance.
- A web proxy tool (e.g., Burp Suite, OWASP ZAP).
Steps:
- Browse to a product that is discontinued. Note the product ID from the URL or page source.
- Attempt to add the product to cart via the normal UI (if possible). If not, proceed to step 3.
- Intercept the HTTP request to the cart addition endpoint (e.g.,
POST /cart/add). - Modify the request body to include the discontinued product ID and a valid quantity.
POST /cart/add HTTP/1.1 Host: vulnerable-store.com Content-Type: application/x-www-form-urlencoded productId=DISCONTINUED_PRODUCT_ID&quantity=1 - Forward the request to the server.
- Verify that the product is added to the cart and can be checked out.
No exploit code is available from Exploit-DB.
Blue Team
Detection:
- Monitor for unusual cart addition requests where the product ID corresponds to a discontinued product.
- Look for requests with missing or altered client-side validation headers.
- Analyze server logs for successful purchases of products that are marked as discontinued.
Prevention:
- Ensure server-side validation of product status is performed for all cart operations.
- Implement input validation and sanitization on all user-supplied data.
- Use a Web Application Firewall (WAF) to detect and block request tampering.
Indicators of Compromise (IOCs)
- Network:
- HTTP requests to
/cart/addor similar endpoints with product IDs that are known to be discontinued. - Requests with unusual or missing
Refererheaders.
- HTTP requests to
- Logs:
- Server logs showing successful addition of discontinued products to cart.
- Audit logs showing orders containing discontinued products.
- System:
- Unusual inventory depletion for discontinued products.
Detection Engineering
YARA Rule
rule Detect_Discontinued_Product_Purchase {
meta:
description = "Detects HTTP requests attempting to purchase discontinued products"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-22384"
strings:
$s1 = "productId=" ascii wide nocase
$s2 = "discontinued" ascii wide nocase
$s3 = "addToCart" ascii wide nocase
condition:
all of ($s*) and #s1 > 0
}
Sigma Rule
title: Purchase of Discontinued Product
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects successful addition of discontinued products to cart
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/cart/add'
cs-uri-query|contains: 'productId='
condition: selection
falsepositives:
- Legitimate admin actions
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-22384 - Attempt to purchase discontinued product"; flow:to_server; content:"POST"; http_method; content:"/cart/add"; http_uri; content:"productId="; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade to Optimizely Configured Commerce version 5.2.2408 or later.
- Workaround: If patching is not immediately possible, implement a server-side validation script that checks product status before processing cart additions. This can be done via a custom middleware or plugin.
Long-term Measures:
- Conduct a thorough code review of all business logic endpoints to ensure server-side validation is enforced.
- Implement a Web Application Firewall (WAF) with rules to detect and block request tampering.
- Enable comprehensive logging and monitoring for all cart and checkout operations.
- Perform regular security assessments and penetration testing.
Valters IT Signature
This report was generated by Valters IT DevSecOps & CTI Expert System. Analysis Date: 2025-04-10 CVE: CVE-2025-22384