CVE-2026-54684

Source
https://cve.org/CVERecord?id=CVE-2026-54684
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54684.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-54684
Aliases
  • GHSA-gpvc-ccw7-744v
Published
2026-07-14T21:46:29.373Z
Modified
2026-08-12T16:41:16.561753Z
Severity
  • 7.0 (High) CVSS_V3 - CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H CVSS Calculator
Summary
jadx: XAPK archive entries with absolute paths can plant drop-in plugins and achieve code execution on the next jadx run
Details

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.

Database specific
{
    "cwe_ids": [
        "CWE-22"
    ],
    "cna_assigner": "GitHub_M",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/54xxx/CVE-2026-54684.json"
}
References

Affected packages

Git / github.com/skylot/jadx

Affected ranges

Type
GIT
Repo
https://github.com/skylot/jadx
Events
Database specific
Show details
{
    "source": [
        "AFFECTED_FIELD",
        "REFERENCES"
    ],
    "extracted_events": [
        {
            "introduced": "1.5.2"
        },
        {
            "fixed": "1.5.6"
        }
    ]
}

Affected versions

v1.*
v1.5.2
v1.5.3
v1.5.4

Database specific

vanir_signatures_modified
"2026-08-12T16:41:16Z"
source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-54684.json"
vanir_signatures
[
    {
        "deprecated": false,
        "signature_type": "Line",
        "signature_version": "v1",
        "digest": {
            "line_hashes": [
                "118014642406769659103776073437968672592",
                "265775248268315719426659794105053302902",
                "172973484744477447613924586852770070408",
                "26135232408086617525104654092153467177"
            ],
            "threshold": 0.9
        },
        "id": "CVE-2026-54684-7f5b5235",
        "source": "https://github.com/skylot/jadx/commit/a74bb07d6eebaf4da5c2b2cbc4d3c0c3cb7517cb",
        "target": {
            "file": "jadx-commons/jadx-zip/src/main/java/jadx/zip/security/JadxZipSecurity.java"
        }
    },
    {
        "deprecated": false,
        "signature_type": "Function",
        "signature_version": "v1",
        "digest": {
            "length": 603.0,
            "function_hash": "58550663106364603330380777435195939371"
        },
        "id": "CVE-2026-54684-da5fee61",
        "source": "https://github.com/skylot/jadx/commit/a74bb07d6eebaf4da5c2b2cbc4d3c0c3cb7517cb",
        "target": {
            "function": "isValidEntryName",
            "file": "jadx-commons/jadx-zip/src/main/java/jadx/zip/security/JadxZipSecurity.java"
        }
    }
]