CVE-2026-33306
Təsvir
bcrypt-ruby, OpenBSD bcrypt() parol həşləmə alqoritmi üçün Ruby bağlanmasıdır (binding). Versiya 3.1.22-dən əvvəl, JRuby üçün Java BCrypt tətbiqindəki tam ədəd daşması (integer overflow) gücləndirmə dövründə sıfır iterasiyaya səbəb ola bilər. Bunun baş verməsi üçün təsirlənmiş tətbiqlərdə cost dəyəri 31 olaraq təyin edilməlidir. bcrypt-ruby-nin JRuby tətbiqi (`BCrypt.java`) açarın gücləndirilməsi raund sayını imzalı 32-bitlik tam ədəd kimi hesablayır. `cost=31` olduqda (gem tərəfindən icazə verilən maksimum dəyər), imzalı tam ədəd daşması raund sayının mənfi olmasına səbəb olur və gücləndirmə dövrü **sıfır iterasiya** ilə icra edilir. Bu, bcrypt-i eksponensial açar gücləndirməsinin 2^31 raundundan effektiv olaraq sabit zamanlı hesablama səviyyəsinə endirir — yalnız ilkin EksBlowfish açar qurulumu və yekun 64x şifrələmə mərhələsi qalır. Nəticədə alınan həş düzgün görünür (`$2a$31$...`) və `checkpw` vasitəsilə düzgün şəkildə təsdiqlənir, bu da zəifliyi tətbiq üçün görünməz edir. Bu problem yalnız cost=31 istifadə edildikdə və ya `$2a$31$` həşi təsdiqlənərkən yaranır. Problem versiya 3.1.22-də aradan qaldırılıb. Müvəqqəti həll yolu kimi cost dəyərini 31-dən kiçik bir rəqəmə təyin edin.
Necə düzəltmək olar
- bcrypt-ruby_project bcrypt-ruby3.1.22 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| bcrypt-ruby_project bcrypt-ruby | v < 3.1.22 | 3.1.22 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.