CVE-2026-33306 json
bcrypt-ruby has an Integer Overflow that Causes Zero Key-Strengthening Iterations at Cost=31 on JRuby
published 2026-03-19 7 mo ago modified 2026-06-17 4 mo ago also GHSA-f27w-vcwj-c954 , EUVD-2026-14670
- cvss
- 7.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 14%
- public exploits
- 0
- none known
Summary
bcrypt-ruby is a Ruby binding for the OpenBSD bcrypt() password hashing algorithm. Prior to version 3.1.22, an integer overflow in the Java BCrypt implementation for JRuby can cause zero iterations in the strengthening loop. Impacted applications must be setting the cost to 31 to see this happen. The JRuby implementation of bcrypt-ruby (`BCrypt.java`) computes the key-strengthening round count as a signed 32-bit integer. When `cost=31` (the maximum allowed by the gem), signed integer overflow causes the round count to become negative, and the strengthening loop executes **zero iterations**. This collapses bcrypt from 2^31 rounds of exponential key-strengthening to effectively constant-time computation — only the initial EksBlowfish key setup and final 64x encryption phase remain. The resulting hash looks valid (`$2a$31$...`) and verifies correctly via `checkpw`, making the weakness invisible to the application. This issue is triggered only when cost=31 is used or when verifying a `$2a$31$` hash. This problem has been fixed in version 3.1.22. As a workaround, set the cost to something less than 31.
Patch / fix
- rubygems bcrypt 3.1.22
- bcrypt-ruby_project bcrypt-ruby 3.1.22
- ruby-bcrypt Debian 14 3.1.22-1
debian advisories DEBIAN-CVE-2026-33306
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2026-33306 updated cvss 6.7
github.com/bcrypt-ruby/bcrypt-ruby: bcrypt-ruby (JRuby): Weakened password hashing due to integer overflow
-
Red Hat Satellite 6 rubygem-bcryptnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 14% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 4.5 | CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U |
| CNA | 4.0 | 4.5 | CVSS:4.0/AV:L/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:U/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | bcrypt | <3.1.22 |
3.1.22 |
Affected products
- bcrypt-ruby bcrypt-ruby
Classification
- Weakness
-
- CWE-190 Integer Overflow or Wraparound
References
-
github.com
/bcrypt-ruby/bcrypt-ruby/commit/831ce64cb0a9502130fa93a28bfd9527a5fa45c4
web, patch
-
github.com
/bcrypt-ruby/bcrypt-ruby/security/advisories/GHSA-f27w-vcwj-c954
web, mitigation, vendor-advisory
-
github.com
/bcrypt-ruby/bcrypt-ruby/releases/tag/v3.1.22
web, product, release-notes
-
nvd.nist.gov
/vuln/detail/CVE-2026-33306
advisory
-
github.com
/bcrypt-ruby/bcrypt-ruby
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/bcrypt/CVE-2026-33306.yml
web
Sources
- CVE List CVE-2026-33306
- GitHub Advisory GHSA-f27w-vcwj-c954
- NVD CVE-2026-33306
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.