{"id":"GHSA-8fxq-53rx-ph5f","summary":"Coder: Login endpoint user enumeration via timing-defense placeholder in password comparison","details":"### Summary\n\n`userpassword.Compare()` substituted a placeholder hash derived from the well-known string `\"hunter2\"` when the stored hash was empty. Submitting `\"hunter2\"` therefore matched accounts with no password hash (nonexistent users and SSO-only users) and a subsequent login-type check returned an HTTP 403 that disclosed the account's login type, versus 401 for password users.\n\n\u003e **Note:** Practical exploitation is limited because the timing side channel is noisy and only reveals whether an account exists.\n\n### Impact\n\nAn unauthenticated attacker could enumerate valid accounts and their authentication provider by submitting logins with the password `\"hunter2\"`, distinguishing nonexistent users, SSO users (provider revealed) and password users from the response. This aids credential-stuffing and targeted phishing. No authentication bypass or data access resulted.\n\n### Patches\n\nThe fix derives the timing-defense placeholder from a secure random value that no supplied password can match.\n\nThe fix was backported to all supported release lines:\n\n| Release line | Patched version |\n|---|---|\n| 2.34 | [v2.34.2](https://github.com/coder/coder/releases/tag/v2.34.2) |\n| 2.33 | [v2.33.8](https://github.com/coder/coder/releases/tag/v2.33.8) |\n| 2.32 | [v2.32.7](https://github.com/coder/coder/releases/tag/v2.32.7) |\n| 2.29 (ESR) | [v2.29.17](https://github.com/coder/coder/releases/tag/v2.29.17) |\n\n### Workarounds\n\nNone.\n\n### References\n\n- Fix: #26205\n\n### Credits\n\nWe'd like to thank Anthropic's Security Team (ANT-2026-22433) for independently disclosing this issue!","aliases":["GO-2026-6265"],"modified":"2026-09-10T03:51:13.416224479Z","published":"2026-08-20T18:34:21Z","database_specific":{"cwe_ids":["CWE-203","CWE-204"],"severity":"LOW","github_reviewed":true,"github_reviewed_at":"2026-08-20T18:34:21Z","nvd_published_at":null},"references":[{"type":"WEB","url":"https://github.com/coder/coder/security/advisories/GHSA-8fxq-53rx-ph5f"},{"type":"WEB","url":"https://github.com/coder/coder/pull/26205"},{"type":"WEB","url":"https://github.com/coder/coder/commit/35a7dc8ab9c7f15ce05d963947823ee31224512f"},{"type":"PACKAGE","url":"https://github.com/coder/coder"},{"type":"WEB","url":"https://github.com/coder/coder/releases/tag/v2.29.17"},{"type":"WEB","url":"https://github.com/coder/coder/releases/tag/v2.32.7"},{"type":"WEB","url":"https://github.com/coder/coder/releases/tag/v2.33.8"},{"type":"WEB","url":"https://github.com/coder/coder/releases/tag/v2.34.2"}],"affected":[{"package":{"name":"github.com/coder/coder/v2","ecosystem":"Go","purl":"pkg:golang/github.com/coder/coder/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.34.0"},{"fixed":"2.34.2"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-8fxq-53rx-ph5f/GHSA-8fxq-53rx-ph5f.json"}},{"package":{"name":"github.com/coder/coder/v2","ecosystem":"Go","purl":"pkg:golang/github.com/coder/coder/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.33.0"},{"fixed":"2.33.8"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-8fxq-53rx-ph5f/GHSA-8fxq-53rx-ph5f.json"}},{"package":{"name":"github.com/coder/coder/v2","ecosystem":"Go","purl":"pkg:golang/github.com/coder/coder/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"2.30.0"},{"fixed":"2.32.7"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-8fxq-53rx-ph5f/GHSA-8fxq-53rx-ph5f.json"}},{"package":{"name":"github.com/coder/coder/v2","ecosystem":"Go","purl":"pkg:golang/github.com/coder/coder/v2"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"2.29.17"}]}],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/08/GHSA-8fxq-53rx-ph5f/GHSA-8fxq-53rx-ph5f.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N"}]}