{"id":"GHSA-659f-22xc-98f2","aliases":[],"url":"https://o3.security/vulnerability/GHSA-659f-22xc-98f2","summary":"OpenClaw hook transform path containment missed symlink-resolved escapes","details":"## Vulnerability\n\nWebhook transform modules were validated with lexical path checks only. A symlink under the allowed hooks transform tree could resolve outside the intended directory and be dynamically imported.\n\n## Affected Packages / Versions\n\n- Package: `openclaw` (npm)\n- Affected versions: `<= 2026.2.21-2`\n- Patched version (planned next release): `2026.2.22`\n\n## Impact\n\nWhen an attacker can cause a transform module path to reference a symlinked entry that resolves outside the trusted transform directory, the gateway may import and execute unintended JavaScript with gateway-process privileges.\n\n## Attack Preconditions\n\n- Hook transforms are enabled and reachable.\n- Attacker can influence transform path resolution (for example via privileged config access and/or writable filesystem path in the transform tree).\n- A symlink escape exists to attacker-controlled code.\n\n## Remediation\n\n- Enforce realpath-aware containment for existing path ancestors before dynamic import.\n- Keep lexical containment checks for traversal and absolute-path escapes.\n- Add regression coverage for:\n  - transform module symlink escape rejection,\n  - `hooks.transformsDir` symlink escape rejection,\n  - in-root symlink allow-case.\n\n## Fix Commit(s)\n\n- `f4dd0577b055f77af783105bd65eae32f3d5e6a1`\n\nOpenClaw thanks @aether-ai-agent for reporting.","published":"2026-03-03T23:00:53Z","modified":"2026-03-04T15:13:19.961962Z","cvss":null,"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"npm","name":"openclaw","fixedVersion":"2026.2.22"}],"fix":{"url":"https://github.com/openclaw/openclaw/commit/f4dd0577b055f77af783105bd65eae32f3d5e6a1","label":"openclaw/openclaw@f4dd057"},"references":[{"type":"WEB","url":"https://github.com/openclaw/openclaw/security/advisories/GHSA-659f-22xc-98f2"},{"type":"WEB","url":"https://github.com/openclaw/openclaw/commit/f4dd0577b055f77af783105bd65eae32f3d5e6a1"},{"type":"PACKAGE","url":"https://github.com/openclaw/openclaw"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-03-04T15:13:19.961962Z"}}