Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2022-22976-bcrypt-skips-salt | Kitploit
أدوات/GitHubGitHub/spring-io/cve-2022-22976-bcrypt-skips-salt
كسر كلمات المرورأدوات التشفير/فك التشفيرتحليل الثغرات الأمنيةالمصادقةسوء التكوينأمن قواعد البيانات
GitHubspring-io/cve-2022-22976-bcrypt-skips-salt

cve-2022-22976-bcrypt-skips-salt

عرض المستودع

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
1منذ 4 سنواتلم تتم المراجعة بعد

فحص تجزئة BCrypt

للمساعدة في خطوات التخفيف الخاصة بـ CVE-2022-xxxx، يمكنك استخدام هذه الأداة للتحقق من قاعدة بياناتك بحثًا عن التجزئات التي تحتاج إلى تحديث.

بعد دمج التطبيق مع قاعدة بياناتك، تعمل الأداة على خطوتين.

لتوضيح ذلك، يتم استخدام تطبيق عينة في الذاكرة. في هذا التطبيق العينة، يمكنك تشغيل خطوة check، على النحو التالي:

root@kitploit:~
./mvnw spring-boot:run@check

سيؤدي هذا إلى فحص قاعدة بيانات العينة بحثًا عن أي تجزئات BCrypt التي تحتاج إلى تحديث.

بعد ذلك، يمكنك تشغيل خطوة update، على النحو التالي:

root@kitploit:~
./mvnw spring-boot:run@update

سيحاول هذا تحديث أي تجزئات ضعيفة يكتشفها في قاعدة بيانات العينة.

يستخدم تطبيق العينة فئة VulnerabilityCheck الموفرة للتحقق من كل تجزئة كلمة مرور وتحديثها.

الإعداد لقاعدة البيانات الخاصة بك

تحذير: لا تتابع هذه الخطوات إلا بعد تحديث تطبيقك لاستخدام عدد جولات أقل من 31. توصي OWASP حاليًا بقيمة 10، على الرغم من استخدام قيم تصل إلى 16 على بعض الأنظمة عالية الأداء.

تأتي الأداة مع عينة في الذاكرة لأغراض الاختبار. ستحتاج إلى استبدالها بفئات خاصة بك تتكامل مع بياناتك.

للقيام بذلك، قم أولاً باستنساخ هذا المستودع.

بعد ذلك، استبدل الكود الموجود في حزمة sample بكود يمكنه الوصول إلى بيانات كلمات المرور في تطبيقك. قد ترغب في كتابة كود يتحقق من كلمات المرور الحالية لمعرفة ما إذا كانت ضعيفة. ستحتاج إلى كتابة كود يقوم بتحديث أي تجزئات متأثرة. في كلتا الحالتين، يمكنك استخدام VulnerabilityCheck للتحقق من أي تجزئة معينة وتحديثها.

نصيحة: عند كتابة الكود أعلاه، ضع في اعتبارك عدد كلمات المرور التي يتعين عليك تحديثها. تذكر أن تأخذ في الاعتبار أن اتصال قاعدة البيانات قد يفشل، وقد تتعطل أجهزة الكمبيوتر، وقد تنفد الذاكرة، وما إلى ذلك. ليس من المستحسن، على سبيل المثال، جلب ملايين السجلات دفعة واحدة إلى الذاكرة.

بعد تحديث تجزئات كلمات المرور، يمكنك الآن التحديث إلى أحدث إصدار من Spring Security. إذا كنت تستخدم ميزة تحديث كلمة المرور في Spring Security، فعندما يسجل المستخدمون الدخول، ستُعاد تجزئة كلمة المرور الخاصة بهم تلقائيًا إلى قيمة الجولات التي قمت بتكوينها حديثًا.

الأسئلة الشائعة

س: كيف أعرف ما إذا كانت التجزئات الخاصة بي ضعيفة؟

ج: تكون ضعيفة إذا تمت تجزئتها باستخدام فئة BCrypt الخاصة بـ Spring Security مع عامل عمل بقيمة 31. يمكنك تأكيد ذلك عن طريق فحص تجزئات كلمات المرور في نظامك التي يديرها Spring Security. إذا كانت تبدأ بـ '{bcrypt}$2a$31' أو '{bcrypt}$2b$31' أو '{bcrypt}$2y$31' أو '{bcrypt}$2$31' أو '$2a$31' أو '$2b$31' أو '$2y$31' أو '$2$31'، فإن كلمة المرور هذه ضعيفة وتحتاج إلى تحديث.

س: كيف يجب أن أغير تطبيقي؟

ج: توصي OWASP بعامل عمل قدره 10 لـ BCrypt. بعض الأنظمة عالية الأداء ستستخدم قيمة تصل إلى 16. كل نظام مختلف، وتم تصميم BCrypt ليكون قادرًا على زيادة عامل العمل بمرور الوقت حسب الحاجة.

س: أين أغيّر في تطبيقي؟

ج: من المحتمل أنك تقوم بتعيين عامل العمل عن طريق إنشاء BCryptPasswordEncoder على النحو التالي:

root@kitploit:~
new BCryptPasswordEncoder(31)

قد يظهر في تعريف bean على النحو التالي:

root@kitploit:~
@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder(31);
}

يمكنك البحث عن هذا النص وتحديثه. لاحظ أن عامل العمل قد يكون مُدارًا في تطبيقك عبر خاصية خارجية، مما يعني أنك سترغب في تغييره في التكوين الخارجي بدلاً من ذلك.

س: لقد قمت للتو بتحديث Spring Security والآن بعض أو كل عمليات تسجيل الدخول وتسجيل المستخدمين تعلق. ماذا حدث؟

ج: اعتبارًا من Spring Security 5.5.7+ و5.6.4+ و5.7.0+، فإن تجزئات كلمات المرور التي تشير إلى عامل عمل قدره 31 -- على سبيل المثال، تلك التي تبدأ بـ '{bcrypt}$2a$31' أو '{bcrypt}$2b$31' أو '{bcrypt}$2y$31' أو '{bcrypt}$2$31' أو '$2a$31' أو '$2b$31' أو '$2y$31' أو '$2$31' -- ستستغرق من 2 إلى 3 أيام لإكمال كل عملية حساب تجزئة. للتخفيف من هذا، ستحتاج إلى تغيير Spring Security لاستخدام عدد أقل من الجولات. بعد ذلك، استخدم هذه الأداة لتحديث تجزئات كلمات المرور الضعيفة.

س: لقد أكملت جميع الخطوات الثلاث الموصى بها (تغيير إعداد BCryptPasswordEncoder، وتحديث تجزئات كلمات المرور، وتحديث Spring Security). تجزئات كلمات المرور المعدلة لا يتم تحديثها إلى عامل العمل الذي قمت بتكوينه حديثًا. ماذا يجب أن أفعل؟

تأكد من نشر bean من النوع UserDetailsPasswordService. هذا الـ bean هو ما يُستخدم لتحديث كلمات المرور إلى عدد جولات BCrypt الجديد.

س: لماذا لا يستطيع Spring Security ببساطة تحديث كلمات المرور الضعيفة في وقت الترقية دون الحاجة إلى هذه الأداة؟

أولاً، لأنه مع أحدث إصدار من Spring Security، يتم حساب تجزئات كلمات المرور ذات عامل العمل 31 بشكل صحيح وبالتالي تستغرق من 2 إلى 3 أيام لإكمال كل واحدة. إنه توقع غير عملي أن نفترض أن هذه تكلفة معقولة يمكن أن تتحملها التطبيقات.

ثانيًا، يدعم Spring Security فقط زيادة عامل العمل (مثلًا من 10 إلى 12)، وليس إنقاصه (مثلًا من 31 إلى 10).

تنزيل الأداة