Cursor Desktop sandbox escape via symlink and failed path canonicalization
Summary
Cursor runs agent terminal commands in a sandbox by default. Before a Write, the agent canonicalizes the target path to confirm it stays inside the workspace, but when canonicalization fails it falls back to the original path and writes without approval. A malicious agent can create an in-workspace symlink that points outside the workspace and force canonicalization to fail — either because the target does not exist or because read permission is removed from the path — so the agent writes through the symlink to an arbitrary location without approval.
Impact
A malicious agent could write arbitrary files outside the workspace under the user's privileges. This enables non-sandboxed Remote Code Execution — for example by overwriting the cursorsandbox helper so later commands run unsandboxed — with no user interaction beyond a benign prompt.
Remediation
Update Cursor to version 3.0. Canonicalization failures are now treated as untrusted: when a target path cannot be resolved — including when read permission is removed to defeat resolution — the write is blocked instead of falling back to the original in-workspace path.
Credit
Cato AI Labs
Maor Dokhanian (maordok)
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| cursor Product | < 3.0 | 3.0 |
Details and references
- Severity from
- GitHub (reviewed advisory)