{"id":"GHSA-rchv-x836-w7xp","aliases":[],"status":"published","title":"OpenClaw's dashboard leaked gateway auth material via browser URL/query and localStorage","description":"OpenClaw's macOS Dashboard flow exposed Gateway authentication material to browser-controlled surfaces.\n\nBefore the fix, the macOS app appended the shared Gateway `token` and `password` to the Dashboard URL query string when opening the Control UI in the browser. The Control UI then imported the token and persisted it into browser `localStorage` under `openclaw.control.settings.v1`.\n\nThis expanded exposure of reusable Gateway admin credentials into browser address-bar/query surfaces and persistent script-readable storage.\n\n## Affected Packages / Versions\n\n- Package: `openclaw` (npm)\n- Latest published version verified vulnerable: `2026.3.2`\n- Affected range: `\u003c= 2026.3.2`\n- Patched version: `\u003e= 2026.3.7`\n\n## Impact\n\nAn attacker with access to browser-controlled surfaces or persistent browser storage could recover a valid Gateway admin token and reuse it against the OpenClaw management interface.\n\nThe exposure chain was:\n\n1. macOS `Open Dashboard` constructed a URL with auth material.\n2. The browser received that credential-bearing URL.\n3. The Control UI imported the token from the URL.\n4. The Control UI persisted the token in `localStorage`.\n\n## Fix\n\nThe fix aligns the macOS Dashboard flow with the safer existing CLI/bootstrap pattern and removes persistent browser token storage:\n\n- macOS Dashboard now passes the Gateway token via URL fragment instead of query parameters.\n- macOS Dashboard no longer propagates the shared Gateway password into browser URLs.\n- Control UI keeps Gateway tokens in memory only for the current tab.\n- Control UI scrubs legacy persisted tokens from `openclaw.control.settings.v1` on load.\n- Regression tests cover fragment transport, password omission, and token-scrubbing behavior.\n\n## Fix Commit(s)\n\n- `10d0e3f3ca92326df0ca071fabffe463742f263c` (March 7, 2026)\n\n## Release Process Note\n\nnpm `2026.3.7` was published on March 8, 2026. This advisory is fixed in the released package.\n\nThanks @whiter6666 for reporting.","severity":{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N","level":"high","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-200"],"published":"2026-03-09T19:52:29Z","modified":"2026-03-09T20:02:22Z","fixes":[{"ecosystem":"npm","package":"openclaw","fixed_in":["2026.3.7"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"openclaw","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2026.3.2"},{"fixed":"2026.3.7"}]}]},{"source":"osv","ecosystem":"npm","package":"openclaw","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2026.3.7"}]}]}],"references":[{"url":"https://github.com/openclaw/openclaw/security/advisories/GHSA-rchv-x836-w7xp","tags":["web"]},{"url":"https://github.com/openclaw/openclaw/commit/10d0e3f3ca92326df0ca071fabffe463742f263c","tags":["web"]},{"url":"https://github.com/openclaw/openclaw/releases/tag/v2026.3.7","tags":["web"]},{"url":"https://github.com/advisories/GHSA-rchv-x836-w7xp"},{"url":"https://github.com/openclaw/openclaw","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-rchv-x836-w7xp","title":"OpenClaw's dashboard leaked gateway auth material via browser URL/query and localStorage","description":"OpenClaw's macOS Dashboard flow exposed Gateway authentication material to browser-controlled surfaces.\n\nBefore the fix, the macOS app appended the shared Gateway `token` and `password` to the Dashboard URL query string when opening the Control UI in the browser. The Control UI then imported the token and persisted it into browser `localStorage` under `openclaw.control.settings.v1`.\n\nThis expanded exposure of reusable Gateway admin credentials into browser address-bar/query surfaces and persistent script-readable storage.\n\n## Affected Packages / Versions\n\n- Package: `openclaw` (npm)\n- Latest published version verified vulnerable: `2026.3.2`\n- Affected range: `\u003c= 2026.3.2`\n- Patched version: `\u003e= 2026.3.7`\n\n## Impact\n\nAn attacker with access to browser-controlled surfaces or persistent browser storage could recover a valid Gateway admin token and reuse it against the OpenClaw management interface.\n\nThe exposure chain was:\n\n1. macOS `Open Dashboard` constructed a URL with auth material.\n2. The browser received that credential-bearing URL.\n3. The Control UI imported the token from the URL.\n4. The Control UI persisted the token in `localStorage`.\n\n## Fix\n\nThe fix aligns the macOS Dashboard flow with the safer existing CLI/bootstrap pattern and removes persistent browser token storage:\n\n- macOS Dashboard now passes the Gateway token via URL fragment instead of query parameters.\n- macOS Dashboard no longer propagates the shared Gateway password into browser URLs.\n- Control UI keeps Gateway tokens in memory only for the current tab.\n- Control UI scrubs legacy persisted tokens from `openclaw.control.settings.v1` on load.\n- Regression tests cover fragment transport, password omission, and token-scrubbing behavior.\n\n## Fix Commit(s)\n\n- `10d0e3f3ca92326df0ca071fabffe463742f263c` (March 7, 2026)\n\n## Release Process Note\n\nnpm `2026.3.7` was published on March 8, 2026. This advisory is fixed in the released package.\n\nThanks @whiter6666 for reporting.","status":"published","published":"2026-03-09T19:52:29Z","modified":"2026-03-09T19:52:33Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N","level":"high"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T14:39:33.538417Z"}],"osv":[{"id":"GHSA-rchv-x836-w7xp","title":"OpenClaw's dashboard leaked gateway auth material via browser URL/query and localStorage","description":"OpenClaw's macOS Dashboard flow exposed Gateway authentication material to browser-controlled surfaces.\n\nBefore the fix, the macOS app appended the shared Gateway `token` and `password` to the Dashboard URL query string when opening the Control UI in the browser. The Control UI then imported the token and persisted it into browser `localStorage` under `openclaw.control.settings.v1`.\n\nThis expanded exposure of reusable Gateway admin credentials into browser address-bar/query surfaces and persistent script-readable storage.\n\n## Affected Packages / Versions\n\n- Package: `openclaw` (npm)\n- Latest published version verified vulnerable: `2026.3.2`\n- Affected range: `\u003c= 2026.3.2`\n- Patched version: `\u003e= 2026.3.7`\n\n## Impact\n\nAn attacker with access to browser-controlled surfaces or persistent browser storage could recover a valid Gateway admin token and reuse it against the OpenClaw management interface.\n\nThe exposure chain was:\n\n1. macOS `Open Dashboard` constructed a URL with auth material.\n2. The browser received that credential-bearing URL.\n3. The Control UI imported the token from the URL.\n4. The Control UI persisted the token in `localStorage`.\n\n## Fix\n\nThe fix aligns the macOS Dashboard flow with the safer existing CLI/bootstrap pattern and removes persistent browser token storage:\n\n- macOS Dashboard now passes the Gateway token via URL fragment instead of query parameters.\n- macOS Dashboard no longer propagates the shared Gateway password into browser URLs.\n- Control UI keeps Gateway tokens in memory only for the current tab.\n- Control UI scrubs legacy persisted tokens from `openclaw.control.settings.v1` on load.\n- Regression tests cover fragment transport, password omission, and token-scrubbing behavior.\n\n## Fix Commit(s)\n\n- `10d0e3f3ca92326df0ca071fabffe463742f263c` (March 7, 2026)\n\n## Release Process Note\n\nnpm `2026.3.7` was published on March 8, 2026. This advisory is fixed in the released package.\n\nThanks @whiter6666 for reporting.","status":"published","published":"2026-03-09T19:52:29Z","modified":"2026-03-09T20:02:22.249462Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N","level":"high"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T15:46:55.877614Z"}]}}
