Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Network-reachable upload with open self-registration and fail-open role middleware means no real privilege barrier (PR:N), low complexity, and arbitrary code execution yields full C/I/A loss.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3DescriptionCVE.org
WebErpMesv2 is a Resource Management and Manufacturing execution system Web for industry. Versions 1.19 and prior allow any self-registered user to upload arbitrary PHP files through the HR Expense scan_file parameter, leading to Remote Code Execution. Combined with open registration (no invite required) and broken role middleware (CheckUserRole silently swallows RouteNotFoundException), this chain is effectively unauthenticated RCE against any default installation. The issue is patched in commit 5c54862fa044b363fd2be03d586750e81afd6818.
Articles & Coverage 1
AnalysisAI
Remote code execution in WebErpMesv2 (SMEWebify) versions 1.19 and prior lets a self-registered user upload an arbitrary PHP file through the HR Expense 'scan_file' parameter, which the vulnerable HumanResourcesController wrote directly into the web-served public/file/Expense directory with no extension or MIME validation. Because registration is open (no invite) and the CheckUserRole middleware silently swallows RouteNotFoundException, the privilege barrier collapses into effectively unauthenticated RCE against a default install. There is no public exploit identified at time of analysis, but the GitHub Security Advisory (GHSA-chhq-7p67-2ff9) and fixing commit confirm the flaw and its exploitability.
Technical ContextAI
WebErpMesv2 is a PHP/Laravel-based Resource Management and Manufacturing Execution System for industrial SMEs. The root cause maps to CWE-20 (Improper Input Validation): the expense upload handler accepted any uploaded file, built a filename as time().'_'.getClientOriginalName(), and moved it via move(public_path('file/Expense'), ...) - an attacker-controlled name and extension landing inside the document root, so an uploaded .php file is directly executable by the web server. The fix rewrites this to store files on Laravel's local disk outside the web root using a UUID filename plus guessed extension (Storage::disk('local')->putFileAs('expenses', ...)), serves them through a controlled route restricted to image/PDF extensions, and adds strict validation (mimes/mimetypes jpeg,png,gif,pdf, max:10240) in StoreUserExpenseRequest. A parallel authorization defect in CheckUserRole (unhandled RouteNotFoundException when setup.index was absent) is corrected to abort(403) so users with no assigned role can no longer slip through.
RemediationAI
Upstream fix available (PR/commit); released patched version not independently confirmed - apply the changes from commit 5c54862fa044b363fd2be03d586750e81afd6818 (or upgrade to any release built after it, once tagged) which stores uploads outside the web root with UUID names, enforces mimes/mimetypes validation limited to jpeg/jpg/png/gif/pdf at max 10 MB, and fixes the CheckUserRole middleware to abort(403) instead of swallowing the routing exception; see https://github.com/SMEWebify/WebErpMesv2/security/advisories/GHSA-chhq-7p67-2ff9. If you cannot patch immediately, disable open self-registration so accounts require an invite/admin approval (removes the unauthenticated pre-condition but blocks legitimate self-onboarding), and configure the web server to deny PHP execution under the public/file/Expense upload directory (e.g. remove handler mapping / add a location rule) which stops code execution but not file storage, and restrict or remove access to the HR Expense upload endpoint for untrusted users.
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 weakness CWE-20 – Improper Input Validation
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-57830