Severity by source
AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Local access required to plant the symlink (AV:L); timing/positioning dependency justifies AC:H; unprivileged users can create symlinks in writable directories so PR:N stands; C/I/A all high due to privileged arbitrary file write.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
2DescriptionCVE.org
pwnlift before d7a9544, in a privileged deployment, contains a symlink following vulnerability in the upload handler in Components/Pages/Home.razor.
AnalysisAI
Symlink following in pwnlift's Blazor upload handler permits arbitrary file write with elevated system privileges when the application is deployed in a privileged (root or high-privilege) context. All pwnlift releases before commit d7a95449d9ee1ea09ec1529286685f6187afbbed are affected through the upload component in Components/Pages/Home.razor. No public exploit has been identified at time of analysis; an upstream fix is available via the referenced GitHub commit.
Technical ContextAI
pwnlift is a .NET Blazor Server application (rasta-mouse/pwnlift) used for file upload operations, commonly in red team or operator contexts. The vulnerable component is Components/Pages/Home.razor, which implements a file upload handler. The root cause is CWE-61 (Improper Resolution of Path Before File Access - Symlink Following): the handler constructed the destination path using Directory.GetCurrentDirectory() without canonicalizing it via Path.GetFullPath() before checking for symlinks or path traversal. As confirmed by the commit diff, the pre-patch code checked for an existing symlink on the Uploads directory but did not re-validate the canonical path after resolution, nor did it canonicalize individual file paths before writing. The fix introduces Path.GetFullPath(destination) for canonical destination resolution, adds Path.GetRelativePath() to validate that each uploaded file's resolved path remains within the Uploads directory, and rejects uploads if the Uploads directory itself is a symlink. CPE cpe:2.3:a:rasta-mouse:pwnlift:*:*:*:*:*:*:*:* covers all versions without a fixed upper bound.
RemediationAI
The primary remediation is to update pwnlift to or beyond commit d7a95449d9ee1ea09ec1529286685f6187afbbed, available at https://github.com/rasta-mouse/pwnlift/commit/d7a95449d9ee1ea09ec1529286685f6187afbbed; note that this is a source-level fix commit, not a tagged release, so operators must build from this commit or later. As an immediate compensating control, run pwnlift as a dedicated unprivileged service account rather than as root or SYSTEM - this eliminates privilege escalation impact and is the most effective non-patch mitigation, at the cost of potentially limiting pwnlift's ability to access restricted directories as intended. Additionally, restrict filesystem permissions on the directory containing the Uploads folder so that only the pwnlift service account can create files or symlinks there, removing the attacker's ability to position the symlink. If privileged operation is operationally required and patching is not yet possible, consider deploying pwnlift inside a container with a read-only root filesystem and a mounted, isolated Uploads volume, which would limit symlink traversal impact to the container boundary.
Same weakness CWE-61 – UNIX Symbolic Link (Symlink) Following
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-38454
GHSA-9x6c-xp5w-ch33