
यह प्रोजेक्ट CVE-2022-21449 भेद्यता का प्रदर्शन करता है, जो Java की ECDSA हस्ताक्षर सत्यापन को प्रभावित करती है। यह भेद्यता एक दुर्भावनापूर्ण अभिनेता को शून्य मानों (r=0 और s=0) वाले हस्ताक्षर का उपयोग करके हस्ताक्षर सत्यापन को बायपास करने की अनुमति देती है। यह प्रोजेक्ट EC हस्ताक्षरों के साथ वास्तविक और नकली JWT टोकन का उपयोग करके Java 17 पर इस मुद्दे को दिखाता है, जिसमें सुरक्षा पैच नहीं लगा है।
r=0, s=0) वाला एक JWT टोकन।JwtGenerator: वास्तविक और नकली JWT टोकन उत्पन्न करता है।JwtUtils: सार्वजनिक EC कुंजी का उपयोग करके JWT टोकन सत्यापित करता है।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 लाइसेंस के तहत लाइसेंस प्राप्त है।