Severity by source
AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H
Local malicious-file vector with required victim interaction (AV:L/UI:R), high complexity from the non-default launch-directory condition and two-run sequence (AC:H), and full code execution (C:H/I:H/A:H).
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
4DescriptionCVE.org
jadx is a Dex to Java decompiler. From 1.5.2 to 1.5.5, a malicious .xapk file can cause jadx to write attacker-controlled archive entry contents outside the intended XAPK plugin temporary unpack directory because XApkLoader resolves each entry name directly with tmpDir.resolve(fileName) after a CWD-based ZIP security check. When jadx is launched from a directory that is an ancestor of the config directory, the arbitrary write can plant a JAR in plugins/dropins, and the next jadx run loads the JAR with URLClassLoader and ServiceLoader, executing attacker-controlled plugin code. This issue is fixed in version 1.5.6.
Articles & Coverage 1
AnalysisAI
Arbitrary file write leading to code execution in jadx 1.5.2 through 1.5.5 allows a malicious .xapk sample to escape the XAPK plugin unpack directory and plant a JAR under plugins/dropins, which the next jadx launch loads and executes via URLClassLoader/ServiceLoader. The flaw stems from XApkLoader calling tmpDir.resolve(fileName) after a flawed CWD-based ZIP name check, giving an analyst opening a crafted file a path traversal that escalates to attacker-controlled plugin code. Publicly available exploit code exists (SSVC exploitation: poc) but it is not in CISA KEV, and EPSS is very low at 0.13% (3rd percentile), consistent with a local, user-interaction-gated, high-complexity issue rather than mass exploitation.
Technical ContextAI
jadx is a widely used open-source Dex-to-Java decompiler for Android reverse engineering. XAPK is a ZIP-based Android package bundle; jadx's XApkLoader unpacks entries into a temporary directory before processing. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / path traversal): JadxZipSecurity validated entry names against the current working directory using CWD.resolve(entryName).normalize(), but XApkLoader then independently called tmpDir.resolve(fileName) with the raw, attacker-controlled entry name. Because the security check was anchored to CWD rather than the actual extraction target, traversal sequences that pass the check still resolve outside tmpDir. The commit fix (a74bb07) hardens JadxZipSecurity to normalize the entry, reject entries that are absolute or already start with CWD, and only then resolve - closing the mismatch that let a validated name escape the unpack directory. The write becomes code execution because jadx auto-loads plugin JARs from plugins/dropins on startup using URLClassLoader and ServiceLoader.
RemediationAI
Vendor-released patch: 1.5.6 - upgrade jadx to 1.5.6 or later, which is the primary and complete fix (release https://github.com/skylot/jadx/releases/tag/v1.5.6, fix commit https://github.com/skylot/jadx/commit/a74bb07d6eebaf4da5c2b2cbc4d3c0c3cb7517cb, advisory https://github.com/skylot/jadx/security/advisories/GHSA-gpvc-ccw7-744v). If you cannot upgrade immediately, reduce exposure by only opening .xapk files from untrusted sources inside a sandbox or disposable VM, and launch jadx from a working directory that is NOT an ancestor of the jadx config directory (e.g. run it from an isolated, unrelated folder) to break the traversal-to-plugin-write path; note this depends on knowing your config directory location and is fragile. As an additional control, audit and clear the plugins/dropins directory before each run and restrict write permissions on the jadx config/plugins directories so a planted JAR cannot be loaded, accepting that this may interfere with legitimate plugin use. These workarounds only narrow the window - patching to 1.5.6 is the durable remediation.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44536