{"id":"GHSA-5ghc-98wh-gwwf","summary":"OpenClaw's Control UI Static File Handler Follows Symlinks and Allows Out-of-Root File Read","details":"### Summary\nThe Control UI static file handler previously validated asset paths lexically and then served files with APIs that follow symbolic links. A symlink placed under the Control UI root could cause out-of-root file reads.\n\n### Affected Packages / Versions\n- Package: `openclaw` (npm)\n- Latest published version observed: `2026.2.21-2`\n- Affected versions: `\u003c=2026.2.21-2`\n- Planned fixed release version: `2026.2.22`\n\n### Technical Details\nThe vulnerable flow was in `src/gateway/control-ui.ts`, where `path.join(...)` + string-prefix checks were followed by file reads that resolved symlinks. This allowed directory-confinement bypasses when symlinks existed inside the Control UI root.\n\nThe fix now enforces realpath containment and verifies file identity before serving Control UI assets and SPA fallback `index.html`.\n\n### Impact\n- Vulnerability type: path traversal / external file exposure via symlink following.\n- Primary impact: confidentiality (out-of-root file read).\n- Severity guidance: low in supported trusted-operator deployments; can be higher in unsupported shared-writable setups.\n\n### Fix Commit(s)\n- `7c500ff6236fa087ec1ec88696ca9f6881e90dc5`\n\n### Release Process Note\n`patched_versions` is pre-set to the planned next release (`2026.2.22`). After npm release is available, publish the advisory.\n\nOpenClaw thanks @tdjackey for reporting.","aliases":["CVE-2026-32020"],"modified":"2026-03-19T22:41:21.870173Z","published":"2026-03-02T22:19:03Z","database_specific":{"nvd_published_at":null,"cwe_ids":["CWE-22"],"severity":"LOW","github_reviewed":true,"github_reviewed_at":"2026-03-02T22:19:03Z"},"references":[{"type":"WEB","url":"https://github.com/openclaw/openclaw/security/advisories/GHSA-5ghc-98wh-gwwf"},{"type":"WEB","url":"https://github.com/openclaw/openclaw/commit/7c500ff6236fa087ec1ec88696ca9f6881e90dc5"},{"type":"PACKAGE","url":"https://github.com/openclaw/openclaw"}],"affected":[{"package":{"name":"openclaw","ecosystem":"npm","purl":"pkg:npm/openclaw"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2026.2.22"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-5ghc-98wh-gwwf/GHSA-5ghc-98wh-gwwf.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N"}]}