Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N
Requires the victim to run a Pulpy-packaged app (UI:R), no auth (PR:N), and the sandbox escape crosses into host files beyond the app (S:C) with full read/write (C:H/I:H) but no availability impact.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
3DescriptionGitHub Advisory
Pulpy is a lightweight, cross-platform desktop application packager for web apps. Prior to 0.1.1, Pulpy injects a pulpy.fs JavaScript API into every packaged web application, giving it access to the host filesystem. A validateFsPath() function is supposed to sandbox this access, but its blocklist is incomplete. Any web app packaged with Pulpy can read and write arbitrary files in the user's home directory - including ~/.ssh/id_rsa, ~/.aws/credentials, and ~/Library/Keychains/. This vulnerability is fixed in 0.1.1.
AnalysisAI
Path traversal sandbox escape in Pulpy (versions prior to 0.1.1), a cross-platform desktop packager for web apps, lets any packaged web application read and write arbitrary files in the user's home directory via the injected pulpy.fs JavaScript API. The validateFsPath() sandbox relies on an incomplete blocklist, so a malicious or compromised packaged app can exfiltrate secrets such as ~/.ssh/id_rsa, ~/.aws/credentials, and macOS keychains. Publicly available exploit code exists (Exploit-DB 52616), though EPSS remains very low at 0.04%.
Technical ContextAI
Pulpy wraps web applications into native desktop apps and exposes a privileged pulpy.fs bridge that grants the embedded web content direct host filesystem access. The intended security boundary is validateFsPath(), a path-validation routine meant to confine reads and writes to a safe sandbox. This is a classic CWE-22 (Improper Limitation of a Pathname to a Restricted Directory / Path Traversal) failure: the function enforces a denylist rather than an allowlist canonicalization, and the denylist omits paths that resolve into the user's home directory. Because sensitive material like SSH private keys, cloud credentials, and OS keychains live at well-known home-directory paths, incomplete blocklisting collapses the trust boundary between untrusted web content and the host. The affected component is identified by CPE cpe:2.3:a:enesgkky:pulpy (vendor/author enesgkky).
RemediationAI
Vendor-released patch: upgrade Pulpy to version 0.1.1 or later, which corrects the validateFsPath() sandbox, and re-package and redistribute any apps built with a vulnerable version so end users receive the fixed runtime. Follow the vendor advisory at https://github.com/enesgkky/Pulpy/security/advisories/GHSA-h9q2-w73v-g7hf. Until upgrading, only package and run web applications from fully trusted sources, since any packaged app can abuse pulpy.fs; treat every Pulpy-packaged app as having full read/write access to the home directory. As compensating controls, avoid running Pulpy-packaged apps under accounts holding sensitive secrets, and relocate or tighten permissions on high-value files (~/.ssh/id_rsa, ~/.aws/credentials, ~/Library/Keychains/) - noting this may break tools that expect those default paths. These are stopgaps only; because the flaw is in the packager's filesystem bridge, upgrading to 0.1.1 is the sole complete fix.
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29801