CVE-2026-33306 in bcrypt-ruby
요약
\~에 의해 VulDB • 2026. 05. 14.
bcrypt-ruby는 OpenBSD bcrypt() 암호 해싱 알고리즘을 위한 Ruby 바인딩입니다. 버전 3.1.22 이전의 JRuby용 Java BCrypt 구현에서는 정수 오버플로우로 인해 강화 루프(iteration)가 0회 실행될 수 있습니다. 이 문제가 발생하려면 영향받는 애플리케이션에서 비용(cost)을 31로 설정해야 합니다. bcrypt-ruby의 JRuby 구현(`BCrypt.java`)은 키 강화 라운드 수를 부호 있는 32비트 정수로 계산합니다. `cost=31`(gem에서 허용되는 최대값)일 때 부호 있는 정수 오버플로우로 인해 라운드 수가 음수가 되고, 강화 루프가 **0회** 실행됩니다. 이로 인해 bcrypt는 지수 함수적 키 강화인 2^31 라운드에서 사실상 상수 시간 계산으로 약화됩니다. 초기 EksBlowfish 키 설정과 최종 64x 암호화 페이즈만 남게 됩니다. 생성된 해시는 유효해 보이며(`$2a$31$...`), `checkpw`를 통해 올바르게 검증되므로 애플리케이션에서는 이 취약점이 보이지 않습니다. 이 문제는 `cost=31`이 사용되거나 `$2a$31$` 해시를 검증할 때만 트리거됩니다. 이 문제는 버전 3.1.22에서 수정되었습니다. 우회 방법으로 비용을 31 미만으로 설정하십시오.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.