Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver crafted ZIP to Appium extraction
-
DeliveryArchive includes out-of-bounds symlink entry
-
ExploitExtraction follows symlink past lexical check
-
ExecutionWrite regular file to arbitrary path
-
PersistOverwrite executable, startup script, or config
-
ImpactAchieve code execution as Appium process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
|
| Exploitation Conditions | Requires the Appium process (via @appium/support prior to 7.2.6) to extract an attacker-controlled ZIP archive - e.g., a malicious app package, dependency, or bundle processed in a test/CI workflow. The archive must contain a symbolic-link entry resolving outside the extraction directory followed by a regular-file entry whose name resolves through that link; the pre-fix lexical containment check validated only entry names, not symlink targets or real destinations. Limiting factors: UI:R means an operator or automated pipeline must actually trigger extraction of the hostile archive (no fully passive remote trigger), the write is constrained to locations writable by the Appium process, and escalation to code execution additionally requires a sensitive writable target (executable, startup script, or config). Platforms using symlinks (Unix-like) are affected; the vendor regression test skips on Windows. |
| Impact | This is a moderate-risk, defense-in-depth style vulnerability rather than a mass-exploitation emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N = 6.5) tells the real story: although the attack vector is network and requires no privileges, it is gated by UI:R - the Appium process must be induced to extract an attacker-controlled ZIP archive. The impact is scoped narrowly to integrity (C:N/I:H/A:N) because the primitive is an arbitrary file write via symlink-following during extraction (CWE-59), which the advisory notes can escalate to code execution if a writable executable, startup script, or config is overwritten. The 'RCE' tag reflects this downstream potential, not a direct one-shot remote code execution. No EPSS score, no CISA KEV listing, and no public POC were supplied, so exploitation status is: no public exploit identified at time of analysis. The signals are internally consistent - there is no CVSS-vs-reality conflict here - but note the input provides no EPSS probability, so widespread-exploitation likelihood cannot be quantified. This is a 'patch in normal cycle' issue for most, but higher priority for anyone running Appium in shared/CI contexts where it processes externally sourced archives. |
| Exploit ScenarioDerived | An attacker supplies a malicious application package or dependency archive that Appium extracts via @appium/support (for example in a shared test farm or CI pipeline that unzips externally provided app bundles). The archive contains a symlink entry pointing outside the extraction directory followed by a regular file whose name legitimately resolves through that symlink, causing the file to be written to an attacker-chosen location writable by the Appium process. No public exploit was identified at time of analysis, though the fix commit includes a regression test demonstrating the bypass. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Arbitrary file write in @appium/support (Appium) prior to 7.2.6 lets a crafted ZIP archive escape the intended extraction directory by first planting a symbolic-link entry that points outside that directory and then adding a regular-file entry whose legitimate name resolves through the link; because the pre-fix containment check validated only entry names lexically, neither '..' segments nor absolute paths are required. Per the CVSS vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N), the attack is network-deliverable and unauthenticated but requires an operator or automated pipeline to actually trigger extraction of the hostile archive, and the write is confined to locations writable by the Appium process - overwriting configuration, startup scripts, or executables can escalate to code execution depending on that writable target. Vendor-released patch: @appium/support 7.2.6; no public exploit code and no CISA KEV entry are associated with this CVE at time of analysis.
RemediationAI
Upgrade @appium/support to 7.2.6 or later (vendor-released patch: @appium/support 7.2.6, see the release tag https://github.com/appium/appium/releases/tag/@appium/support@7.2.6 and advisory https://github.com/appium/appium/security/advisories/GHSA-qfxx-c367-67f8; the code fix is in commit d9eb36f413153e28b04b92d8ce4447da270371c0 / PR 22436). If immediate upgrading is not possible, compensate by ensuring Appium never extracts untrusted archives: run extraction only under a dedicated low-privilege service account or inside a container/VM whose filesystem contains no sensitive targets writable by that account, since the impact is bounded by what the Appium process can write - the trade-off is operational overhead and possible breakage of tests that expect write access outside the workspace. Where practical, reject archives containing symlink entries or entries whose resolved paths leave the extraction root before handing them to @appium/support, accepting that this may block legitimate bundles. Additional hardening includes disabling or restricting write permissions on configuration, startup-script, and executable directories adjacent to extraction roots, and preferring hosts or CI runners where the extraction account cannot modify system paths; note the vendor regression test skips Windows, so Windows deployments are believed less exposed but should still be patched rather than relied upon.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is a link-following arbitrary file write (CWE-59) in the ZIP extraction code of Appium's shared support package, implemented in packages/support/lib/zip.ts on top of the yauzl ZIP reader and the W3C WebDriver-based Appium automation framework. On Unix-like systems, a ZIP entry can carry a symbolic-link mode (0o120777 in the vendor's regression test); pre-7.2.6 code joined entry names to the destination directory and applied a purely lexical containment check (isSubPath) that never resolved the link target or the real destination path. An archive therefore needed only two entries: a symlink named e.g. 'pwn' pointing to an external directory, followed by a regular file 'pwn/owned.txt' whose name is fully legitimate and contains no traversal syntax, yet whose write lands outside the extraction root through the link. This is explicitly distinct from the earlier parent-directory entry-name traversal (Zip Slip) fixed in 7.0.6. The fix replaces the lexical check with isContainedPath (path.relative-based, requiring absolute inputs), resolves the real path of each directory segment via lstat plus realpath in ensureDirWithinRoot, validates resolved symlink targets, and verifies the final file destination with assertFileDestinationWithinRoot before writing. The accompanying regression test asserts the extraction rejects such archives with an 'Out of bound' error and is skipped on Windows, indicating the primary exposure is on platforms that support symlinks.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N
Network-delivered malicious archive with no privileges but requiring a victim-triggered extraction (UI:R); impact is arbitrary file write, so I:H with C:N/A:N and no scope change.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
Appium is a cross-platform automation framework for all kinds of apps, built on top of the W3C WebDriver protocol. Prior to 7.2.6, @appium/support ZIP extraction accepts an archive entry that creates a symbolic link to a location outside the extraction directory and then accepts a later regular-file entry whose legitimate name resolves through that link. The lexical containment check examines entry names without validating the symlink target or the real destination, so an attacker-controlled archive can write files to arbitrary locations writable by the Appium process. This is distinct from the earlier parent-directory entry-name traversal fixed in 7.0.6 because the bypass uses no parent-directory or absolute entry name. Depending on the writable destination, the arbitrary file write can overwrite configuration, startup scripts, or executables and lead to code execution. This issue is fixed in version 7.2.6.
Blast Radius
ecosystem impact- 17 npm packages depend on @appium/support (9 direct, 9 indirect)
Ecosystem-wide dependent count for version 7.2.6.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
EUVD-2026-101529
GHSA-qfxx-c367-67f8
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB