CVE-2019-5421
devise Time-of-check Time-of-use Race Condition vulnerability
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
9.8
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
CVE-2019-5421- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 2.0
- 7.5 High
AV:N/AC:L/Au:N/C:P/I:P/A:P - Weakness
- CWE-367, CWE-307
- Updated
- 2026-11-02
CVE List No score
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
CVE-2019-5421- Weakness
- CWE-367
- Updated
- 2026-11-02
EUVDEUVD-2019-0372 No score
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
EUVD-2019-0372- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-73rf-6mrf-759q No score
devise Time-of-check Time-of-use Race Condition vulnerability
Devise ruby gem before 4.6.0 when the lockable module is used is vulnerable to a time-of-check time-of-use (TOCTOU) race condition due to increment_failed_attempts within the Devise::Models::Lockable class not being concurrency safe.
- Record
GHSA-73rf-6mrf-759q- Weakness
- CWE-367
- Updated
- 2026-11-02
OSV
9.8
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
CVE-2019-5421- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVDEBIAN-CVE-2019-5421
9.8
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
DEBIAN-CVE-2019-5421- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2019-5421
9.8
Plataformatec Devise version 4.5.0 and earlier, using the lockable module contains a CWE-367 vulnerability in The Devise::Models::Lockable class, more specifically at the #increment_failed_attempts method. File location: lib/devise/models/lockable.rb that can result in Multiple concurrent requests can prevent an attacker from being blocked on brute force attacks. This attack appear to be exploitable via Network connectivity - brute force attacks. This vulnerability appears to have been fixed in 4.6.0 and later.
- Record
UBUNTU-CVE-2019-5421- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-73rf-6mrf-759q No score
devise Time-of-check Time-of-use Race Condition vulnerability
Devise ruby gem before 4.6.0 when the lockable module is used is vulnerable to a time-of-check time-of-use (TOCTOU) race condition due to increment_failed_attempts within the Devise::Models::Lockable class not being concurrency safe.
- Record
GHSA-73rf-6mrf-759q- Weakness
- CWE-367
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
deviseRubyGems |
before 4.6.0 | 4.6.0 |
ruby-deviseDebian:12 |
before 4.5.0-3 | 4.5.0-3 |
deviseRubyGems |
before 4.6.0, plus listed versions 0.1.00.1.10.2.00.2.10.2.2 Show 45 moreShow less0.2.30.3.00.4.00.4.10.4.20.4.30.5.00.5.10.5.20.5.30.5.40.5.50.5.60.6.00.6.10.6.20.6.30.7.00.7.10.7.20.7.30.7.40.7.50.8.00.8.10.8.20.9.00.9.10.9.21.0.01.0.11.0.101.0.111.0.21.0.31.0.41.0.51.0.61.0.71.0.81.0.91.1.01.1.11.1.21.1.3 |
4.6.0 |
gitlabUbuntu:16.04:LTS |
All versions, plus listed versions 8.4.3+dfsg-98.4.3+dfsg-128.5.8+dfsg-5 |
None known |
ruby-deviseUbuntu:18.04:LTS |
All versions, plus listed versions 4.2.0-14.3.0-14.4.3-1 |
None known |
ruby-deviseUbuntu:20.04:LTS |
before 4.5.0-3 | 4.5.0-3 |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2019-5421 is a critical vulnerability (CVSS 9.8) in Plataformatec Devise, published March 19, 2019. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.56%, the 75th percentile. Fixed in devise 4.6.0.
References
github.com/plataformatec/devise/issues/4981
github.com/plataformatec/devise/pull/4996
nvd.nist.gov/vuln/detail/CVE-2019-5421
github.com/advisories/GHSA-73rf-6mrf-759q
security-tracker.debian.org/tracker/CVE-2019-5421
github.com/plataformatec/devise
ubuntu.com/security/CVE-2019-5421
cve.org/CVERecord?id=CVE-2019-5421
Left out here: 103 versions. The JSON record has them.