CVE-2026-27523 Overview
OpenClaw versions prior to 2026.2.24 contain a sandbox bind validation vulnerability that allows attackers to bypass allowed-root and blocked-path checks via symlinked parent directories with non-existent leaf paths. This Path Traversal vulnerability (CWE-22) enables attackers to craft bind source paths that appear within allowed roots during validation but ultimately resolve outside sandbox boundaries once missing leaf components are created, effectively weakening bind-source isolation enforcement.
Critical Impact
Attackers can escape sandbox isolation by exploiting symlink resolution behavior, potentially gaining unauthorized access to files and directories outside the intended sandbox boundaries.
Affected Products
- OpenClaw versions prior to 2026.2.24
- OpenClaw for Node.js (all affected versions)
Discovery Timeline
- 2026-03-18 - CVE-2026-27523 published to NVD
- 2026-03-18 - Last updated in NVD database
Technical Details for CVE-2026-27523
Vulnerability Analysis
This vulnerability exists in OpenClaw's sandbox bind validation logic, specifically in how the system resolves file paths containing symlinked parent directories when the final leaf path component does not yet exist. The flaw allows an attacker to construct a path where the parent directories contain symlinks pointing outside the sandbox, but the non-existent leaf component causes the validation check to pass because the full path cannot be resolved at validation time.
The core issue lies in the original tryRealpathAbsolute() function, which would simply return the input path unchanged if the path did not exist. This behavior meant that symlinks in parent directories were not resolved when validating paths with missing leaf components, creating a time-of-check-to-time-of-use (TOCTOU) vulnerability.
Root Cause
The root cause is insufficient path resolution during bind source validation. When validating a bind source path like /sandbox/allowed/symlink-parent/nonexistent-leaf, the original implementation would check if the full path exists. If the leaf (nonexistent-leaf) doesn't exist, the path validation would skip symlink resolution entirely, using the literal path string for the allowed-root and blocked-path checks.
An attacker could exploit this by:
- Creating a symlink within an allowed directory that points outside the sandbox
- Specifying a bind source path using this symlink as a parent directory with a non-existent leaf
- The validation passes because the literal path appears to be within allowed boundaries
- Once the application creates the leaf component, the actual resolved path escapes the sandbox
Attack Vector
The attack requires local access to the system and the ability to create symlinks within allowed sandbox directories. The attacker crafts a malicious bind configuration that leverages symlinked parent directories combined with non-existent leaf paths to bypass sandbox isolation enforcement.
return null;
}
-function tryRealpathAbsolute(path: string): string {
- if (!path.startsWith("/")) {
- return path;
+function resolvePathViaExistingAncestor(sourcePath: string): string {
+ if (!sourcePath.startsWith("/")) {
+ return sourcePath;
}
- if (!existsSync(path)) {
- return path;
+
+ const normalized = normalizeHostPath(sourcePath);
+ let current = normalized;
+ const missingSegments: string[] = [];
+
+ // Resolve through the deepest existing ancestor so symlink parents are honored
+ // even when the final source leaf does not exist yet.
+ while (current !== "/" && !existsSync(current)) {
+ missingSegments.unshift(posix.basename(current));
+ const parent = posix.dirname(current);
+ if (parent === current) {
+ break;
+ }
+ current = parent;
+ }
+
+ if (!existsSync(current)) {
+ return normalized;
Source: GitHub Commit Update
Detection Methods for CVE-2026-27523
Indicators of Compromise
- Unexpected symlinks within sandbox allowed directories pointing to sensitive system paths
- Bind mount configurations with paths containing symlinked parent components
- File access or modifications occurring outside expected sandbox boundaries
- Log entries showing sandbox bind operations with paths that resolve differently than expected
Detection Strategies
- Monitor filesystem operations for symlink creation within sandbox-controlled directories
- Implement integrity checking on sandbox configuration files and bind mount specifications
- Use file access monitoring to detect reads/writes outside sandbox boundaries
- Audit bind mount configurations for paths containing symbolic links
Monitoring Recommendations
- Enable detailed logging of all sandbox bind validation operations
- Monitor for unusual file system traversal patterns that cross sandbox boundaries
- Implement alerting on symlink creation events within sensitive directories
- Review sandbox configurations periodically for suspicious path specifications
How to Mitigate CVE-2026-27523
Immediate Actions Required
- Upgrade OpenClaw to version 2026.2.24 or later immediately
- Review existing sandbox configurations for potentially malicious bind source paths
- Audit symlinks within allowed sandbox directories for unauthorized targets
- Implement additional monitoring for sandbox escape attempts
Patch Information
The vulnerability has been addressed in OpenClaw version 2026.2.24. The fix replaces the tryRealpathAbsolute() function with a new resolvePathViaExistingAncestor() function that properly resolves symlinks in parent directories even when the final leaf path does not exist. This ensures that all symlinks in the path chain are resolved before validation checks are performed.
The security patch is available at GitHub Commit Update. For additional details, refer to the GitHub Security Advisory.
Workarounds
- Restrict symlink creation permissions within sandbox allowed directories
- Implement additional filesystem-level controls to prevent symlinks pointing outside sandbox boundaries
- Use mandatory access control systems (SELinux, AppArmor) to enforce sandbox boundaries at the kernel level
- Manually audit and remove any suspicious symlinks within sandbox directories
# Configuration example - Remove suspicious symlinks from sandbox directories
# List all symlinks in sandbox allowed directories
find /sandbox/allowed -type l -exec ls -la {} \;
# Check symlink targets to identify any pointing outside sandbox
find /sandbox/allowed -type l -exec readlink -f {} \; | grep -v "^/sandbox/allowed"
# Remove unauthorized symlinks (review before executing)
# find /sandbox/allowed -type l -lname '/path/outside/sandbox/*' -delete
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


