Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable upload endpoint (AV:N), trivial allow-list bypass (AC:L), requires an authenticated ROLE_UPLOAD account (PR:L), no user interaction; RCE in-container yields full C/I/A with scope unchanged.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
7DescriptionCVE.org
Malcolm is a network traffic analysis tool suite. The file-upload component (FilePond PHP backend) accepts uploads at POST /server/php/submit.php and stores them in a directory served by the same nginx and php-fpm instance. The allow-list that should restrict accepted file types is an empty array by default (file-upload/php/config.php:16), so the type check is a no-op and every extension is accepted. The filename sanitizer keeps the .php extension intact. Committed files land in /var/www/upload/server/php/files (file-upload/php/config.php:7), and the component's nginx routes any URL ending in .php to php-fpm. An authenticated GET /server/php/files/<name>.php then executes the uploaded code as www-data. Prior to version 26.06.1, in RBAC mode, the upload endpoint is reachable by the granular ROLE_UPLOAD role (nginx/lua/nginx_auth_helpers.lua:71), a role intended only for submitting capture files. As a result, a user holding the upload-only role runs arbitrary PHP as www-data inside the file-upload container. Version 26.06.1 fixes the issue.
Articles & Coverage 1
AnalysisAI
Authenticated users holding only the granular ROLE_UPLOAD permission in CISA's Malcolm network traffic analysis suite can upload a .php file that the suite's own nginx routes to php-fpm and executes as www-data inside the file-upload container, yielding remote code execution in the file-upload component. The flaw (CWE-434, unrestricted file upload) affects Malcolm versions before 26.06.1 and is reachable only when Malcolm runs in RBAC mode, where the upload endpoint is exposed to the upload-only role; unauthenticated users cannot reach it (CVSS:3.1 PR:L, assessed high impact C:H/I:H/A:H). There is no public exploit code identified at time of analysis and EPSS is low (0.30%, 22nd percentile), while the vendor-released fix is Malcolm 26.06.1.
Technical ContextAI
Malcolm's file-upload component bundles a FilePond PHP backend that accepts uploads at POST /server/php/submit.php and persists them under a directory served by the same nginx/php-fpm instance. The intended file-type allow-list in file-upload/php/config.php line 16 is an empty array by default, which makes the type check a no-op so every extension is accepted; the filename sanitizer additionally preserves a trailing .php extension. Uploaded artifacts land in /var/www/upload/server/php/files (config.php line 7), and the component's nginx configuration forwards any URL ending in .php to php-fpm rather than serving it as a static file, so a subsequent authenticated GET /server/php/files/<name>.php executes the attacker's code as the unprivileged www-data account. Reachability is governed by Malcolm's RBAC layer: in RBAC mode, nginx/lua/nginx_auth_helpers.lua line 71 permits the granular ROLE_UPLOAD role (meant only for submitting capture files) to hit the upload endpoint. This is a classic CWE-434 unrestricted upload enabled by two compounding misconfigurations - a disabled extension allow-list and a web-server rule that executes content from the upload directory - with no confirmed cross-container scope change (SC:N/SI:N/SA:N).
RemediationAI
Upgrade Malcolm to version 26.06.1, the vendor-released fix for GHSA-8cvp-m7pg-qrp7 (details in CISA ICSA-26-230-01 at https://www.cisa.gov/news-events/ics-advisories/icsa-26-230-01). Before upgrading, note the vendor's own caveat: release 26.06.1 ships PostgreSQL changes that break compatibility with databases from prior releases (GitHub issue 1038), so the project recommends either backing up and restoring the NetBox database per https://idaholab.github.io/Malcolm/docs/asset-interaction-analysis.html#NetBoxBackup or not using keycloak as the auth method; installations coming from an existing deployment should run ./scripts/status first so Malcolm migrates settings before ./scripts/configure or ./scripts/start. If the upgrade must be deferred, apply compensating controls in this order: revoke or tightly restrict the ROLE_UPLOAD role so that only fully trusted operators can reach POST /server/php/submit.php (this removes the delegated-uploader attack path but breaks legitimate capture-file submission by that role); block or 403 any request to /server/php/files/*.php at the nginx/reverse-proxy layer so nothing in the upload directory can be routed to php-fpm (trade-off: uploaded capture files with a .php extension become inaccessible, which should be rare); and set the allow-list array in file-upload/php/config.php to the specific capture-file extensions actually used instead of the vulnerable empty default (trade-off: mis-scoped allow-lists silently reject legitimate uploads, so validate against real capture workflows). Network-isolating the file-upload container and monitoring for unexpected .php files in /var/www/upload/server/php/files provide additional detection while remediation is pending.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same technique File Upload
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-56948