FixVibe
Covered by FixVibehigh

JWT सुरक्षा: असुरक्षित टोकन आणि गहाळ दावा प्रमाणीकरणाचा धोका

JSON वेब टोकन (JWTs) दावे हस्तांतरित करण्यासाठी एक मानक प्रदान करतात, परंतु सुरक्षा कठोर प्रमाणीकरणावर अवलंबून असते. स्वाक्षऱ्या, कालबाह्यता वेळ किंवा अभिप्रेत प्रेक्षकांची पडताळणी करण्यात अयशस्वी झाल्यास आक्रमणकर्त्यांना प्रमाणीकरण बायपास करण्याची किंवा टोकन पुन्हा प्ले करण्याची अनुमती मिळते.

CWE-347CWE-287CWE-613

हल्लेखोर प्रभाव

अयोग्य JWT प्रमाणीकरण आक्रमणकर्त्यांना खोटे दावे करून किंवा कालबाह्य झालेले टोकन [S1] पुन्हा वापरून प्रमाणीकरण यंत्रणा बायपास करण्यास अनुमती देते. जर एखाद्या सर्व्हरने वैध स्वाक्षरीशिवाय टोकन स्वीकारले, तर आक्रमणकर्ता विशेषाधिकार वाढवण्यासाठी पेलोडमध्ये बदल करू शकतो किंवा [S1] वापरकर्त्याची तोतयागिरी करू शकतो. शिवाय, कालबाह्यता (exp) दाव्याची अंमलबजावणी करण्यात अयशस्वी झाल्यास आक्रमणकर्त्याला तडजोड केलेले टोकन अनिश्चित काळासाठी [S1] वापरण्याची परवानगी मिळते.

मूळ कारण

JSON वेब टोकन (JWT) एक JSON-आधारित रचना आहे जी डिजिटली स्वाक्षरी केलेले किंवा अखंडतेने संरक्षित [S1] दाव्यांच्या प्रतिनिधित्वासाठी वापरली जाते. सुरक्षा अपयश सामान्यत: दोन प्राथमिक अंमलबजावणी अंतरांमुळे उद्भवतात:

  • असुरक्षित JWTs ची स्वीकृती: जर एखादी सेवा स्वाक्षरी पडताळणीची काटेकोरपणे अंमलबजावणी करत नसेल, तर ती "असुरक्षित JWTs" वर प्रक्रिया करू शकते जिथे स्वाक्षरी अनुपस्थित आहे आणि अल्गोरिदम "काहीही नाही" [S1] वर सेट आहे. या परिस्थितीत, सर्व्हर पेलोडमधील दाव्यांची अखंडता [S1] सत्यापित न करता विश्वास ठेवतो.
  • गहाळ दावा वैधता: exp (कालबाह्यता वेळ) दावा [S1] प्रक्रिया करण्यासाठी JWT स्वीकारला जाऊ नये किंवा त्यानंतरची वेळ ओळखतो. aud (प्रेक्षक) दावा [S1] टोकनचे इच्छित प्राप्तकर्ते ओळखतो. हे तपासले नसल्यास, सर्व्हर कालबाह्य झालेले टोकन स्वीकारू शकतो किंवा जे भिन्न ऍप्लिकेशन [S1] साठी होते.

ठोस निराकरणे

  • क्रिप्टोग्राफिक स्वाक्षरी लागू करा: पूर्व-मंजूर, मजबूत स्वाक्षरी अल्गोरिदम (जसे की RS256) वापरत नसलेले कोणतेही JWT नाकारण्यासाठी अनुप्रयोग कॉन्फिगर करा.
  • कालबाह्यता सत्यापित करा: exp दाव्या [S1] मध्ये निर्दिष्ट केलेल्या वेळेपूर्वी वर्तमान तारीख आणि वेळ असल्याची खात्री करण्यासाठी अनिवार्य तपासणी करा.
  • प्रेक्षकांची पडताळणी करा: aud दाव्यामध्ये स्थानिक सेवा ओळखणारे मूल्य असल्याची खात्री करा; aud दाव्यामध्ये सेवा ओळखली नसल्यास, टोकन [S1] नाकारले जाणे आवश्यक आहे.
  • रीप्लेला प्रतिबंधित करा: प्रत्येक टोकनला एक युनिक आयडेंटिफायर नियुक्त करण्यासाठी jti (JWT ID) दावा वापरा, सर्व्हरला [S1] पुन्हा वापरलेल्या टोकन्सचा मागोवा घेण्यास आणि नाकारण्याची परवानगी द्या.

शोध धोरण

JWT हाताळणीतील भेद्यता टोकन संरचना आणि सर्व्हर प्रतिसाद वर्तनाचे विश्लेषण करून ओळखल्या जाऊ शकतात:

  • शीर्षलेख तपासणी: alg (अल्गोरिदम) शीर्षलेख हे "काहीही नाही" वर सेट केलेले नाही याची खात्री करण्यासाठी तपासत आहे आणि अपेक्षित क्रिप्टोग्राफिक मानके [S1] वापरतात.
  • दाव्याची पडताळणी: JSON पेलोड [S1] मध्ये exp (कालबाह्यता) आणि aud (प्रेक्षक) दाव्यांची उपस्थिती आणि वैधता याची पुष्टी करणे.
  • प्रमाणीकरण चाचणी: exp दाव्यानुसार कालबाह्य झालेली टोकन्स सर्व्हरने योग्यरित्या नाकारली किंवा aud दाव्याने aud दाव्यानुसार परिभाषित केल्यानुसार भिन्न प्रेक्षकांसाठी हेतू असल्यास चाचणी.