{"id":"GHSA-4cqv-h74h-93j4","aliases":[],"status":"published","title":"OpenClaw has a Discord `allowFrom` slug-collision authorization bypass","description":"OpenClaw supports Discord allowlists using either user IDs or names/tags. Name/tag matching depends on slug normalization, so different user tags can collide to the same slug and unintentionally satisfy a name-based allowlist entry.\n\n## Affected Packages / Versions\n- Package: `openclaw` (npm)\n- Affected versions: `\u003c= 2026.2.21-2`\n- Patched versions: \u003e= 2026.2.22\n\n## What Changed\n- `openclaw security audit` now warns on Discord name/tag allowlist entries (DM allowlists, guild/channel `users`, and pairing-store entries).\n- Runtime authorization now prefers resolved user IDs when a configured name/tag can be resolved, without rewriting config files on disk.\n- Name-based entries remain supported for compatibility.\n\n## Recommendations\n- Prefer stable Discord user IDs for security-sensitive allowlists.\n- Run `openclaw security audit` and address warnings where practical.\n\n## Fix Commit(s)\n- f97c45c5b5e0698b6667bb5f6badc0cac7dabd12\n- 747bb581b3f2264495e1fec5a0727d9f2ca1b6f1\n\nOpenClaw thanks @tdjackey for reporting.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","level":"medium","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-287"],"published":"2026-03-03T21:49:41Z","modified":"2026-03-04T15:11:37Z","fixes":[{"ecosystem":"npm","package":"openclaw","fixed_in":["2026.2.22"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"npm","package":"openclaw","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"2026.2.21-2"},{"fixed":"2026.2.22"}]}]},{"source":"osv","ecosystem":"npm","package":"openclaw","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2026.2.22"}]}]}],"references":[{"url":"https://github.com/openclaw/openclaw/security/advisories/GHSA-4cqv-h74h-93j4","tags":["web"]},{"url":"https://github.com/openclaw/openclaw/commit/747bb581b3f2264495e1fec5a0727d9f2ca1b6f1","tags":["web"]},{"url":"https://github.com/openclaw/openclaw/commit/f97c45c5b5e0698b6667bb5f6badc0cac7dabd12","tags":["web"]},{"url":"https://github.com/advisories/GHSA-4cqv-h74h-93j4"},{"url":"https://github.com/openclaw/openclaw","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-4cqv-h74h-93j4","title":"OpenClaw has a Discord `allowFrom` slug-collision authorization bypass","description":"OpenClaw supports Discord allowlists using either user IDs or names/tags. Name/tag matching depends on slug normalization, so different user tags can collide to the same slug and unintentionally satisfy a name-based allowlist entry.\n\n## Affected Packages / Versions\n- Package: `openclaw` (npm)\n- Affected versions: `\u003c= 2026.2.21-2`\n- Patched versions: \u003e= 2026.2.22\n\n## What Changed\n- `openclaw security audit` now warns on Discord name/tag allowlist entries (DM allowlists, guild/channel `users`, and pairing-store entries).\n- Runtime authorization now prefers resolved user IDs when a configured name/tag can be resolved, without rewriting config files on disk.\n- Name-based entries remain supported for compatibility.\n\n## Recommendations\n- Prefer stable Discord user IDs for security-sensitive allowlists.\n- Run `openclaw security audit` and address warnings where practical.\n\n## Fix Commit(s)\n- f97c45c5b5e0698b6667bb5f6badc0cac7dabd12\n- 747bb581b3f2264495e1fec5a0727d9f2ca1b6f1\n\nOpenClaw thanks @tdjackey for reporting.","status":"published","published":"2026-03-03T21:49:41Z","modified":"2026-03-03T21:49:41Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T14:39:30.031684Z"}],"osv":[{"id":"GHSA-4cqv-h74h-93j4","title":"OpenClaw has a Discord `allowFrom` slug-collision authorization bypass","description":"OpenClaw supports Discord allowlists using either user IDs or names/tags. Name/tag matching depends on slug normalization, so different user tags can collide to the same slug and unintentionally satisfy a name-based allowlist entry.\n\n## Affected Packages / Versions\n- Package: `openclaw` (npm)\n- Affected versions: `\u003c= 2026.2.21-2`\n- Patched versions: \u003e= 2026.2.22\n\n## What Changed\n- `openclaw security audit` now warns on Discord name/tag allowlist entries (DM allowlists, guild/channel `users`, and pairing-store entries).\n- Runtime authorization now prefers resolved user IDs when a configured name/tag can be resolved, without rewriting config files on disk.\n- Name-based entries remain supported for compatibility.\n\n## Recommendations\n- Prefer stable Discord user IDs for security-sensitive allowlists.\n- Run `openclaw security audit` and address warnings where practical.\n\n## Fix Commit(s)\n- f97c45c5b5e0698b6667bb5f6badc0cac7dabd12\n- 747bb581b3f2264495e1fec5a0727d9f2ca1b6f1\n\nOpenClaw thanks @tdjackey for reporting.","status":"published","published":"2026-03-03T21:49:41Z","modified":"2026-03-04T15:11:37.656802Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N","level":"medium"}],"cwes":["CWE-287"],"updated_at":"2026-11-02T15:46:36.782754Z"}]}}
