CVE-2026-19008: openclaw-cn: symlink escape bypasses agent sandbox
MEDIUMPoC AVAILABLECISA: TRACK*A flaw in the assertNoSymlinkEscape check inside openclaw-cn's apply_patch tool lets an attacker craft a symlink that the sandbox path validator fails to catch, so file writes meant to stay inside the agent's workspace instead follow the link and land outside it. This matters because apply_patch is the core file-editing primitive of an AI coding agent — a broken boundary here is a direct sandbox escape, not a cosmetic bug, and it's remotely reachable with only low privileges and no user interaction (CVSS 6.3, AV:N/PR:L/UI:N). Real-world exploitation pressure is currently low — EPSS sits at 0.34%, it's not in CISA KEV, and CISA's SSVC decision is TRACK_STAR, the lowest-urgency tier — but the maintainer was notified via GitHub issue and has not responded, so no patched version exists yet. Until a fix ships, treat any repository or workspace content that openclaw-cn processes as untrusted: reject or canonically resolve symlinks before apply_patch touches them, run the agent in a hardened container with no access to sensitive host paths, and alert on sandbox file writes that resolve outside the expected working directory.
What is the risk?
Objectively medium severity (CVSS 6.3) but the exploit mechanics are simple — network-reachable, low complexity, low privileges, no user interaction — which lowers the bar for anyone with basic access to an openclaw-cn deployment. Countervailing factors keep near-term risk moderate rather than critical: EPSS is very low (0.34%, well below typical actively-exploited thresholds), the CVE is absent from CISA KEV, SSVC classifies it as TRACK_STAR (lowest urgency), and there is no confirmed public exploit code or Nuclei template. The unresponsive maintainer is the main risk amplifier: with no patch timeline, exposure persists indefinitely for anyone running this project, and the vulnerability class (symlink/link-following, CWE-59) is a well-understood, easily automatable bug pattern once someone writes a PoC.
How does the attack unfold?
How severe is it?
What is the attack surface?
What should I do?
1 step1) No patch is currently available — the maintainer has not responded to the report, so track https://github.com/mf-yang/openclaw-cn/issues/565 and /566 for updates. 2) Until fixed, do not run openclaw-cn's apply_patch tool against untrusted or externally-supplied repositories/workspaces (e.g., third-party PRs, cloned public repos) without additional isolation. 3) Wrap the agent in defense-in-depth sandboxing independent of the app's own checks: run it in a container/VM with a read-only or minimally-writable host filesystem, no bind-mounts to sensitive paths, and mandatory access controls (AppArmor/SELinux/seccomp) that block following symlinks outside the workspace root. 4) Detection: monitor file-write syscalls or audit logs for the apply_patch process resolving paths outside the expected workspace root, and flag any symlink creation inside directories the agent operates on prior to a patch operation. 5) If forking/patching internally, fix assertNoSymlinkEscape to resolve the real (canonical) path via realpath/fs.realpathSync and verify it remains within the sandbox root before any write, rather than validating the pre-resolution path string.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-19008?
A flaw in the assertNoSymlinkEscape check inside openclaw-cn's apply_patch tool lets an attacker craft a symlink that the sandbox path validator fails to catch, so file writes meant to stay inside the agent's workspace instead follow the link and land outside it. This matters because apply_patch is the core file-editing primitive of an AI coding agent — a broken boundary here is a direct sandbox escape, not a cosmetic bug, and it's remotely reachable with only low privileges and no user interaction (CVSS 6.3, AV:N/PR:L/UI:N). Real-world exploitation pressure is currently low — EPSS sits at 0.34%, it's not in CISA KEV, and CISA's SSVC decision is TRACK_STAR, the lowest-urgency tier — but the maintainer was notified via GitHub issue and has not responded, so no patched version exists yet. Until a fix ships, treat any repository or workspace content that openclaw-cn processes as untrusted: reject or canonically resolve symlinks before apply_patch touches them, run the agent in a hardened container with no access to sensitive host paths, and alert on sandbox file writes that resolve outside the expected working directory.
Is CVE-2026-19008 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2026-19008, increasing the risk of exploitation.
How to fix CVE-2026-19008?
1) No patch is currently available — the maintainer has not responded to the report, so track https://github.com/mf-yang/openclaw-cn/issues/565 and /566 for updates. 2) Until fixed, do not run openclaw-cn's apply_patch tool against untrusted or externally-supplied repositories/workspaces (e.g., third-party PRs, cloned public repos) without additional isolation. 3) Wrap the agent in defense-in-depth sandboxing independent of the app's own checks: run it in a container/VM with a read-only or minimally-writable host filesystem, no bind-mounts to sensitive paths, and mandatory access controls (AppArmor/SELinux/seccomp) that block following symlinks outside the workspace root. 4) Detection: monitor file-write syscalls or audit logs for the apply_patch process resolving paths outside the expected workspace root, and flag any symlink creation inside directories the agent operates on prior to a patch operation. 5) If forking/patching internally, fix assertNoSymlinkEscape to resolve the real (canonical) path via realpath/fs.realpathSync and verify it remains within the sandbox root before any write, rather than validating the pre-resolution path string.
What systems are affected by CVE-2026-19008?
This vulnerability affects the following AI/ML architecture patterns: agent frameworks, sandboxed code execution / AI coding agents, apply_patch / file-editing agent tools.
What is the CVSS score for CVE-2026-19008?
CVE-2026-19008 has a CVSS v3.1 base score of 6.3 (MEDIUM). The EPSS exploitation probability is 0.43%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0053AI Agent Tool InvocationAML.T0101Data Destruction via AI Agent Tool InvocationAML.T0105Escape to HostCompliance Controls Affected
What are the technical details?
Original Advisory
A vulnerability was identified in mf-yang openclaw-cn up to 0.2.1. This issue affects the function assertNoSymlinkEscape of the file src/agents/sandbox-paths.ts of the component apply_patch Tool. Such manipulation leads to link following. It is possible to launch the attack remotely. The exploit is publicly available and might be used. The project was informed of the problem early through an issue report but has not responded yet.
Exploitation Scenario
An attacker with low-privileged access to a system running openclaw-cn (e.g., a collaborator on a shared workspace, or a contributor whose repo content the agent will process) places a symlink inside the workspace directory that points to a sensitive path outside the sandbox — for example, a config file, SSH key, or a script that gets executed later. When the agent is instructed (directly or via a crafted prompt/patch request) to modify a file at that symlinked path using apply_patch, the vulnerable assertNoSymlinkEscape check fails to detect that the target resolves outside the sandbox, and the write follows the link. The attacker's content is written to the real target file outside the intended boundary, achieving sandbox escape and potentially persistence or downstream code execution if the overwritten file is later loaded or run.
Weaknesses (CWE)
CWE-59Improper Link Resolution Before File AccessPrimaryCWE-59Improper Link Resolution Before File AccessCWE-59 — Improper Link Resolution Before File Access: The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.
- [Architecture and Design] Follow the principle of least privilege when assigning access rights to entities in a software system. Denying access to a file can prevent an attacker from replacing that file with a link to a sensitive file. Ensure good compartmentalization in the system to provide protected areas that can be trusted.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:LReferences
Timeline
Related Vulnerabilities
CVE-2025-512010.0smolagents: sandbox escape enables unauthenticated RCE
Same attack type: Code ExecutionCVE-2025-5952810.0Flowise: Unauthenticated RCE via MCP config injection
Same attack type: Code ExecutionCVE-2025-282810.0LangChain RequestsToolkit: SSRF exposes cloud metadata
Same attack type: Auth BypassCVE-2025-5376710.0Azure OpenAI: SSRF EoP, no auth required (CVSS 10)
Same attack type: Auth BypassCVE-2024-291210.0BentoML: RCE via insecure deserialization (CVSS 10)
Same attack type: Code Execution