Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable upload requiring a low-privilege authenticated account (PR:L, AC:L); arbitrary write drives high integrity, with lesser confidentiality/availability from read/delete; no scope change.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
4DescriptionCVE.org
Heym before 0.0.21 contains a path traversal vulnerability in the file upload endpoint that allows authenticated users to write attacker-controlled files to arbitrary locations by supplying a crafted filename with traversal sequences. Attackers can exploit the unvalidated filename parameter in the upload_file() handler to bypass path restrictions and write, read, or delete files outside the intended storage directory.
AnalysisAI
Arbitrary file write (and read/delete) in Heym before 0.0.21 lets an authenticated user escape the intended upload storage directory by embedding directory-traversal sequences in the filename parameter of the upload_file() handler. Because the filename is never validated, an attacker with valid credentials can plant, overwrite, or remove files anywhere the service account can reach, potentially leading to code execution or data tampering. Publicly available exploit code exists per SSVC (POC), but EPSS is very low (0.04%, 11th percentile) and it is not on CISA KEV, indicating no confirmed widespread exploitation.
Technical ContextAI
Heym (vendor heymrun, CPE cpe:2.3:a:heymrun:heym) is an application exposing a file-upload endpoint. The flaw is a classic CWE-22 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'): the upload_file() handler concatenates a client-supplied filename onto the server-side storage path without canonicalizing or stripping '../' sequences, so the effective write destination resolves outside the intended directory. The upstream fix (PR #92, commit 835843e6d2bf7d018cbb8e50f28f0426eaa20c84, titled 'fix(files): contain stored upload paths') constrains resolved upload paths, which confirms the root cause was unbounded path resolution rather than a content or MIME issue.
RemediationAI
Vendor-released patch: upgrade to Heym 0.0.21 or later, which contains the 'contain stored upload paths' fix (PR #92, commit 835843e6d2bf7d018cbb8e50f28f0426eaa20c84) - see the release at https://github.com/heymrun/heym/releases/tag/v0.0.21. If immediate upgrade is not possible, reduce exposure by restricting who holds accounts able to reach the upload endpoint (since exploitation requires authentication), and place a reverse-proxy or WAF rule to reject upload requests whose filename parameter contains traversal sequences such as '../', '..\', encoded variants (%2e%2e), or absolute paths; note this filtering can break legitimate filenames and encoded uploads and is only a stopgap. Where feasible, run the Heym service under a low-privilege account with a chroot/jailed or read-only filesystem outside the upload directory to limit the blast radius of an arbitrary write, accepting that this may complicate legitimate file storage. Reference the VulnCheck advisory (https://www.vulncheck.com/advisories/heym-path-traversal-file-upload-via-upload-file) for details.
Sandbox escape in Heym's custom Python tool executor (versions before 0.0.21) allows authenticated workflow authors to b
Authorization bypass in Heym's workflow execution engine (versions before 0.0.21) allows any authenticated user to run w
Authenticated SSRF in the Heym workflow engine before v0.0.98 allows any workflow author to reach internal network servi
Same weakness CWE-22 – Path Traversal
View allSame technique Path Traversal
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-29850
GHSA-pxhc-h7q5-6qrg