Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/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
Unauthenticated network upload with no user interaction (AV:N/AC:L/PR:N/UI:N); webshell yields full command execution as the Tomcat user, so C:H/I:H/A:H, scope unchanged as impact stays within the host security authority.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
efw4.X is an Enterprise Framework for Web. Prior to 4.08.010, efw.file.FileManager.unZip writes zip entries to disk using new File(baseDir, zipEntry.getName()) with no canonical-path check. An entry name such as ../../../pwned.jsp escapes the intended extraction directory and lands anywhere the Tomcat process can write - including the servlet context root. Combined with the framework's multipart /uploadServlet and an event that calls file.saveUploadFiles + FileManager.unZip, a remote attacker with no credentials drops a JSP webshell and executes arbitrary commands as the Tomcat user. This vulnerability is fixed in 4.08.010.
AnalysisAI
Arbitrary file write leading to unauthenticated remote code execution affects efw4.X (Enterprise Framework for Web) prior to 4.08.010, where efw.file.FileManager.unZip extracts ZIP entries via new File(baseDir, zipEntry.getName()) with no canonical-path validation - a classic Zip Slip. By combining the framework's public multipart /uploadServlet with an event that chains file.saveUploadFiles and FileManager.unZip, an attacker with no credentials can plant a JSP webshell in the Tomcat servlet context root and execute OS commands as the Tomcat user. Publicly available exploit code exists (SSVC lists proof-of-concept); the flaw is not on CISA KEV and EPSS is low (0.21%, 43rd percentile).
Technical ContextAI
The affected component is efw4.X, a Java Enterprise Framework for Web (vendor efwGrp) deployed as a Tomcat servlet application, per CPE cpe:2.3:a:efwgrp:efw4.x. The root cause is unsafe archive extraction: FileManager.unZip resolves each ZIP entry name relative to a base directory using new File(baseDir, zipEntry.getName()) and never compares the resolved canonical path against the intended extraction root. A malicious entry name containing traversal sequences (e.g. ../../../pwned.jsp) escapes the extraction directory and is written anywhere the Tomcat process can write, including the web-accessible context root. Although NVD tags this CWE-77 (Command Injection) - reflecting the ultimate code-execution impact and the 'Command Injection' tag - the underlying defect is more precisely a path-traversal / Zip-Slip arbitrary file write (CWE-22/CWE-29) leveraged for execution by writing an executable JSP. The 'Tomcat' and 'Canonical' tags confirm the servlet-container context and the missing canonical-path check as the crux of the bug.
RemediationAI
Vendor-released patch: 4.08.010 - upgrade efw4.X to 4.08.010 or later, which adds the canonical-path check to FileManager.unZip and closes the traversal write; follow the vendor advisory at https://github.com/efwGrp/efw4.X/security/advisories/GHSA-q7jx-7x5r-r9f6. If immediate patching is not possible, restrict or authenticate access to the /uploadServlet endpoint at a reverse proxy or WAF so unauthenticated multipart uploads cannot reach the framework (trade-off: breaks any legitimate anonymous upload workflow); disable or remove any event flow that chains saveUploadFiles into FileManager.unZip so untrusted archives are never auto-extracted (cost: loses that upload/unzip feature); and tighten filesystem permissions so the Tomcat process user cannot write to the servlet context root or other web-executable directories (prevents webshell drop but may break features that legitimately write into the webapp). As a detection aid, monitor the context root for newly created .jsp files, and after patching audit for any already-planted JSP files, since a prior compromise persists across the upgrade.
When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT
When using the Apache JServ Protocol (AJP), care must be taken when trusting incoming connections to Apache Tomcat. Rate
In SysAid On-Premise before 23.3.36, a path traversal vulnerability leads to code execution after an attacker writes a f
Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8
When running Apache Tomcat 7.0.0 to 7.0.79 on Windows with HTTP PUTs enabled (e.g. Rated high severity (CVSS 8.1), this
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
MultipartStream.java in Apache Commons FileUpload before 1.3.1, as used in Apache Tomcat, JBoss Web, and other products,
The payload length in a WebSocket frame was not correctly validated in Apache Tomcat 10.0.0-M1 to 10.0.0-M6, 9.0.0.M1 to
When using a VirtualDirContext with Apache Tomcat 7.0.0 to 7.0.80 it was possible to bypass security constraints and/or
When using Apache Tomcat versions 10.0.0-M1 to 10.0.0-M4, 9.0.0.M1 to 9.0.34, 8.5.0 to 8.5.54 and 7.0.0 to 7.0.103 if a)
java/org/apache/coyote/http11/filters/ChunkedInputFilter.java in Apache Tomcat 6.x before 6.0.42, 7.x before 7.0.55, and
Missing encryption of cluster replication traffic in Apache Tomcat 11.0.20, 10.1.53, and 9.0.116 exposes sensitive sessi
Same weakness CWE-77 – Command Injection
View allSame technique Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29842