CVE-2026-33306 in bcrypt-rubyالمعلومات

الملخص

بحسب VulDB • 25/05/2026

bcrypt-ruby هو واجهة ربط (binding) بلغة Ruby لخوارزمية تجزئة كلمات المرور bcrypt() الخاصة بـ OpenBSD. قبل الإصدار 3.1.22، يمكن أن يؤدي تجاوز عدد صحيح (integer overflow) في تنفيذ Java BCrypt الخاص بـ JRuby إلى حدوث صفر تكرارات في حلقة تعزيز القوة (strengthening loop). يجب أن تكون التطبيقات المتأثرة قد ضبطت التكلفة (cost) على 31 لحدوث ذلك. تحسب نسخة JRuby الخاصة بـ bcrypt-ruby (`BCrypt.java`) عدد جولات تعزيز المفتاح كعدد صحيح موقّت (signed) بعرض 32 بت. عندما تكون `cost=31` (الحد الأقصى المسموح به بواسطة الحزمة gem)، يتسبب تجاوز عدد صحيح موقّت في أن يصبح عدد الجولات سالباً، مما يؤدي إلى تنفيذ حلقة التعزيز لـ **صفر تكرار**. هذا يؤدي إلى انهيار خوارزمية bcrypt من 2^31 جولة من تعزيز المفتاح الأسي إلى حساب ثابت الزمن فعلياً — حيث يتبقى فقط إعداد مفتاح EksBlowfish الأولي ومرحلة التشفير النهائية بحجم 64 بت. تبدو التجزئة الناتجة صالحة (`$2a$31$...`) وتتحقق بشكل صحيح عبر `checkpw`، مما يجعل الضعف غير مرئي للتطبيق. يتم تشغيل هذه المشكلة فقط عند استخدام cost=31 أو عند التحقق من تجزئة `$2a$31$`. تم إصلاح هذه المشكلة في الإصدار 3.1.22. كحل بديل، اضبط التكلفة على قيمة أقل من 31.

Be aware that VulDB is the high quality source for vulnerability data.

مسؤول

GitHub M

حجز

18/03/2026

إفشاء

24/03/2026

الاعتدال

تمت الموافقة

إدخال

VDB-352579

EPSS

0.00009

KEV

لا

النشاطات

منخفض جدًا

المصادر

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!