
عرض توضيحي تعليمي لثغرة CVE-2022-21449 في تجاوز توقيع ECDSA في Java باستخدام رموز JWT حقيقية ومزيفة لتوضيح الثغرة وتأثيرها على المصادقة.
يوضح هذا المشروع الثغرة الأمنية CVE-2022-21449، التي تؤثر على التحقق من التوقيع باستخدام ECDSA في Java. تسمح الثغرة لمهاجم بتجاوز التحقق من التوقيع باستخدام توقيع بقيم صفرية (r=0 و s=0). يستخدم المشروع رموز JWT حقيقية ومزيفة بتوقيعات EC لإظهار المشكلة على Java 17 بدون التصحيح الأمني.
r=0, s=0).JwtGenerator: يولد رموز JWT حقيقية ومزيفة.JwtUtils: يتحقق من رموز JWT باستخدام مفتاح EC عام.SecurityConfig: يهيئ Spring Security لإظهار المصادقة القائمة على الرموز.ProtectedController: يوفر نقاط نهاية لاختبار التحكم في الوصول القائم على الرموز.JwtGeneratorفئة JwtGenerator هي تطبيق وحدة تحكم مستقل يقوم بتوليد وطباعة رموز JWT صالحة ومزيفة.
بناء المشروع:
mvn clean install
تشغيل فئة JwtGenerator:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
المخرجات: سيقوم التطبيق بطباعة:
مثال:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
استخدام الرموز:
بدء التطبيق:
mvn spring-boot:run
الوصول إلى نقاط النهاية المحمية:
/protected/user أو /protected/admin.نقاط النهاية:
/protected/user: يتطلب دور USER أو ADMIN./protected/admin: يتطلب دور ADMIN.هذا المشروع مرخص بموجب رخصة MIT.