{"id":"GHSA-chcr-x7hc-8fp8","summary":"Devise-Two-Factor vulnerable to brute force attacks","details":"### Advisory withdrawn\nThe backing CVE has been rejected\n\nDevise-Two-Factor does not throttle or otherwise restrict login attempts at the server by default. When combined with the Time-based One Time Password algorithm's (TOTP) inherent entropy limitations, it's possible for an attacker to bypass the 2FA mechanism through brute-force attacks.\n\n### Impact\n\nIf a user's username and password have already been compromised an attacker would be able to try possible TOTP codes and see if they can hit a lucky collision to log in as that user. The user under attack would not necessarily know that their account has been compromised.\n\n### Patches\n\nDevise-Two-Factor has not released any fixes for this vulnerability. This library is open-ended by design and cannot solve this for all applications natively. It's recommended that any application leveraging Devise-Two-Factor implement controls at the application level to mitigate this threat. A non-exhaustive list of possible mitigations can be found below.\n\n#### Mitigations\n\n1. Use the `lockable` strategy from Devise to lock a user after a certain number of failed login attempts. See https://www.rubydoc.info/github/heartcombo/devise/main/Devise/Models/Lockable for more information.\n2. Configure a rate limit for your application, especially on the endpoints used to log in. One such library to accomplish this is [rack-attack](https://rubygems.org/gems/rack-attack).\n3. When displaying authentication errors hide whether validating a username/password combination failed or a two-factor code failed behind a more generic error message.\n\n### Acknowledgements\n\nChristian Reitter ([Radically Open Security](https://www.radicallyopensecurity.com/)) and Chris MacNaughton ([Centauri Solutions](https://centauri.solutions))","aliases":["CVE-2024-0227"],"modified":"2026-09-10T03:50:09.440796159Z","published":"2024-01-12T15:13:05Z","withdrawn":"2024-03-19T22:33:55Z","database_specific":{"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2024-01-12T15:13:05Z","nvd_published_at":"2024-01-11T20:15:44Z","cwe_ids":["CWE-307"]},"references":[{"type":"WEB","url":"https://github.com/devise-two-factor/devise-two-factor/security/advisories/GHSA-chcr-x7hc-8fp8"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-0227"},{"type":"PACKAGE","url":"https://github.com/devise-two-factor/devise-two-factor"},{"type":"WEB","url":"https://github.com/rubysec/ruby-advisory-db/blob/master/gems/devise-two-factor/CVE-2024-0227.yml"}],"affected":[{"package":{"name":"devise-two-factor","ecosystem":"RubyGems","purl":"pkg:gem/devise-two-factor"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"last_affected":"5.0.0"}]}],"versions":["1.0.0","1.0.1","1.0.2","1.1.0","2.0.0","2.0.1","2.1.0","2.2.0","2.2.1","3.0.0","3.0.1","3.0.2","3.0.3","3.1.0","4.0.0","4.0.1","4.0.2","4.1.0","4.1.1","5.0.0"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2024/01/GHSA-chcr-x7hc-8fp8/GHSA-chcr-x7hc-8fp8.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L"}]}