GHSA-8fxq-53rx-ph5f: Coder: Login endpoint user enumeration via timing-defense placeholder in password comparison
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.
Note: Practical exploitation is limited because the timing side channel is noisy and only reveals whether an account exists.
References
- github.com/advisories/GHSA-8fxq-53rx-ph5f
- github.com/coder/coder/commit/35a7dc8ab9c7f15ce05d963947823ee31224512f
- github.com/coder/coder/pull/26205
- github.com/coder/coder/releases/tag/v2.29.17
- github.com/coder/coder/releases/tag/v2.32.7
- github.com/coder/coder/releases/tag/v2.33.8
- github.com/coder/coder/releases/tag/v2.34.2
- github.com/coder/coder/security/advisories/GHSA-8fxq-53rx-ph5f
Code Behaviors & Features
Detect and mitigate GHSA-8fxq-53rx-ph5f with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →