Vulnerabilidad en bcrypt-ruby (CVE-2026-33306)
Gravedad CVSS v4.0:
MEDIA
Tipo:
CWE-190
Desbordamiento o ajuste de enteros
Fecha de publicación:
24/03/2026
Última modificación:
24/03/2026
Descripción
bcrypt-ruby es un enlace Ruby para el algoritmo de hash de contraseñas bcrypt() de OpenBSD. Antes de la versión 3.1.22, un desbordamiento de entero en la implementación Java de BCrypt para JRuby puede causar cero iteraciones en el bucle de fortalecimiento. Las aplicaciones afectadas deben estar configurando el costo en 31 para que esto ocurra. La implementación de JRuby de bcrypt-ruby ('BCrypt.java') calcula el recuento de rondas de fortalecimiento de clave como un entero con signo de 32 bits. Cuando 'cost=31' (el máximo permitido por la gema), el desbordamiento de entero con signo hace que el recuento de rondas se vuelva negativo, y el bucle de fortalecimiento ejecuta cero iteraciones. Esto colapsa bcrypt de 2^31 rondas de fortalecimiento exponencial de clave a una computación en tiempo efectivamente constante — solo quedan la configuración inicial de clave EksBlowfish y la fase final de cifrado 64x. El hash resultante parece válido ('$2a$31$...') y se verifica correctamente a través de 'checkpw', haciendo que la debilidad sea invisible para la aplicación. Este problema se activa solo cuando se usa cost=31 o al verificar un hash '$2a$31$'. Este problema ha sido solucionado en la versión 3.1.22. Como solución alternativa, configure el costo en algo menor que 31.
Impacto
Puntuación base 4.0
4.50
Gravedad 4.0
MEDIA



