हमलावर का प्रभाव
अनुचित JWT सत्यापन हमलावरों को नकली दावे या समाप्त हो चुके टोकन [S1] का पुन: उपयोग करके प्रमाणीकरण तंत्र को बायपास करने की अनुमति देता है। यदि कोई सर्वर वैध हस्ताक्षर के बिना टोकन स्वीकार करता है, तो एक हमलावर विशेषाधिकार बढ़ाने के लिए पेलोड को संशोधित कर सकता है या किसी उपयोगकर्ता [S1] का प्रतिरूपण कर सकता है। इसके अलावा, समाप्ति (exp) दावे को लागू करने में विफल रहने से एक हमलावर को अनिश्चित काल तक समझौता किए गए टोकन [S1] का उपयोग करने की अनुमति मिलती है।
मूल कारण
JSON वेब टोकन (JWT) एक JSON-आधारित संरचना है जिसका उपयोग उन दावों का प्रतिनिधित्व करने के लिए किया जाता है जो डिजिटल रूप से हस्ताक्षरित या अखंडता संरक्षित [S1] हैं। सुरक्षा विफलताएँ आम तौर पर दो प्राथमिक कार्यान्वयन अंतरालों से उत्पन्न होती हैं:
- असुरक्षित JWTs की स्वीकृति: यदि कोई सेवा हस्ताक्षर सत्यापन को सख्ती से लागू नहीं करती है, तो यह "असुरक्षित JWTs" को संसाधित कर सकती है जहां हस्ताक्षर अनुपस्थित है और एल्गोरिदम "कोई नहीं" [S1] पर सेट है। इस परिदृश्य में, सर्वर पेलोड में दावों पर उनकी अखंडता [S1] की पुष्टि किए बिना भरोसा करता है।
- लापता दावा सत्यापन:
exp(समाप्ति समय) दावा उस समय की पहचान करता है जिस पर या उसके बाद ZXCVFIXVIBTOKEN5ZXCV को ZXCVFIXVIBTOKEN2ZXCV प्रसंस्करण के लिए स्वीकार नहीं किया जाना चाहिए।aud(दर्शक) दावा टोकन [S1] के इच्छित प्राप्तकर्ताओं की पहचान करता है। यदि इनकी जाँच नहीं की जाती है, तो सर्वर उन टोकन को स्वीकार कर सकता है जो समाप्त हो चुके हैं या किसी भिन्न एप्लिकेशन [S1] के लिए थे।
ठोस सुधार
- क्रिप्टोग्राफ़िक हस्ताक्षर लागू करें: किसी भी JWT को अस्वीकार करने के लिए एप्लिकेशन को कॉन्फ़िगर करें जो पूर्व-अनुमोदित, मजबूत हस्ताक्षर एल्गोरिथ्म (जैसे RS256) का उपयोग नहीं करता है।
- समाप्ति मान्य करें: यह सुनिश्चित करने के लिए एक अनिवार्य जांच लागू करें कि वर्तमान दिनांक और समय
expदावे ZXCVFIXVIBTOKEN1ZXCV में निर्दिष्ट समय से पहले हैं। - दर्शकों को सत्यापित करें: सुनिश्चित करें कि
audदावे में स्थानीय सेवा की पहचान करने वाला मूल्य शामिल है; यदि सेवाaudदावे में पहचानी नहीं गई है, तो टोकन [S1] को अस्वीकार कर दिया जाना चाहिए। - रीप्ले रोकें: प्रत्येक टोकन के लिए एक अद्वितीय पहचानकर्ता निर्दिष्ट करने के लिए ZXCVFIXVIBTOKEN0ZXCV (ZXCVFIXVIBTOKEN2ZXCV आईडी) दावे का उपयोग करें, जिससे सर्वर पुन: उपयोग किए गए टोकन ZXCVFIXVIBTOKEN1ZXCV को ट्रैक और अस्वीकार कर सके।
पता लगाने की रणनीति
JWT हैंडलिंग में कमजोरियों को टोकन संरचना और सर्वर प्रतिक्रिया व्यवहार का विश्लेषण करके पहचाना जा सकता है:
- हेडर निरीक्षण: यह सुनिश्चित करने के लिए
alg(एल्गोरिदम) हेडर की जाँच करना कि यह "कुछ नहीं" पर सेट नहीं है और अपेक्षित क्रिप्टोग्राफ़िक मानकों ZXCVFIXVIBTOKEN1ZXCV का उपयोग करता है। - दावा सत्यापन: JSON पेलोड ZXCVFIXVIBTOKEN2ZXCV के भीतर ZXCVFIXVIBTOKEN0ZXCV (समाप्ति) और ZXCVFIXVIBTOKEN1ZXCV (दर्शक) दावों की उपस्थिति और वैधता की पुष्टि करना।
- सत्यापन परीक्षण: यह परीक्षण करना कि क्या सर्वर उन टोकन को सही ढंग से अस्वीकार करता है जो ZXCVFIXVIBTOKEN0ZXCV दावे के अनुसार समाप्त हो गए हैं या ZXCVFIXVIBTOKEN1ZXCV दावे ZXCVFIXVIBTOKEN2ZXCV द्वारा परिभाषित एक अलग दर्शकों के लिए हैं।
