API सिक्योरिटी टेस्टिंग टूल्स: चार श्रेणियाँ
स्कैनर
ज्ञात वल्नरेबिलिटी क्लासेज़ और ग़लत कॉन्फ़िगरेशन की टोह लेते हैं।
दायरा अच्छा, पर आपके बिज़नेस रूल्स की कोई समझ नहीं।
प्रॉक्सी और इंटरसेप्टर
किसी व्यक्ति को ट्रैफ़िक देखने और उसमें छेड़छाड़ करने देते हैं।
ताक़तवर, और पूरी तरह चलाने वाले व्यक्ति पर निर्भर।
फ़ज़र
क्रैश ढूँढ़ने के लिए एंडपॉइंट्स पर ख़राब इनपुट फेंकते हैं।
रोबस्टनेस की दिक़्क़तें पकड़ते हैं, और ऐसा शोर पैदा करते हैं जिसकी छँटाई करनी पड़ती है।
चौथी श्रेणी है बिहेवियरल वेरिफ़िकेशन: क्या API उसे मना करती है जिसे मना करना चाहिए। बिना ऑथेंटिकेशन वाले कॉल, दूसरे अकाउंट का ऐक्सेस, रोल की सीमाएँ, एक्सपायर हो चुके टोकन। कोई स्कैनर इन्हें जाँच नहीं सकता, क्योंकि ये इस बात पर निर्भर हैं कि आपके प्रोडक्ट में परमिशन का मतलब क्या है।
ज़्यादातर टीमों में जो कमी रहती है
आमतौर पर टीमों की पाइपलाइन में एक स्कैनर होता है और साल में एक बार पेनिट्रेशन टेस्ट। दोनों उपयोगी हैं। लेकिन इनमें से कोई यह नहीं जाँचता कि पिछले मंगलवार को रिलीज़ हुआ एंडपॉइंट ऑब्जेक्ट-लेवल ऑथराइज़ेशन लागू करता है या नहीं — और असली APIs में यही वह ख़ामी है जिसका सबसे ज़्यादा फ़ायदा उठाया जाता है।
यह अनदेखी क्यों रह जाती है, इसकी वजह तकनीकी नहीं बल्कि संगठनात्मक है। यह सिक्योरिटी का मामला लगता है, इसलिए सिक्योरिटी प्रक्रिया का इंतज़ार करता है, जो तिमाही में एक बार चलती है। असल में यह एक बिहेवियरल जाँच है, जिसकी जगह उस टेस्ट सुइट में है जो हर बदलाव पर चलता है।
कैसे पहचानें कि आपकी कमी कौन-सी है
क्या आप बता सकते हैं कि पिछली बार कब किसी ने जाँचा था कि यूज़र A, यूज़र B का डेटा नहीं पढ़ सकता? अगर जवाब सालाना पेनिट्रेशन टेस्ट है, तो आपकी सबसे संभावित ख़ामी पर बारह महीने की खिड़की खुली पड़ी है।
क्या किसी नए एंडपॉइंट की परमिशन जाँच अपने आप हो जाती है? अगर यह लिखने वाले के याद रखने पर टिका है, तो छूटेगा ज़रूर।
स्कैनर की फ़ाइंडिंग्स की छँटाई होती है या वे बस जमा होती रहती हैं? ऐसा स्कैनर जिसकी फ़ाइंडिंग्स कोई नहीं पढ़ता, स्कैनर न होने से भी बुरा है, क्योंकि वह कवरेज होने का भ्रम देता है।
बिहेवियरल कमी को भरना
तैयार किए गए API प्लान में ऑथराइज़ेशन और बाउंड्री श्रेणियाँ शामिल होती हैं, इसलिए परमिशन जाँच फ़ंक्शनल कवरेज के साथ-साथ चलती है, किसी अलग कवायद के तौर पर नहीं। इससे वे हर बदलाव की रफ़्तार पर आ जाती हैं, और यही एकमात्र रफ़्तार है जो नए एंडपॉइंट्स के साथ क़दम मिला पाती है।
टर्मिनल
npm install -g @testsprite/testsprite-cli
testsprite setup
अगर आप लोकल मशीन पर कुछ इंस्टॉल नहीं करना चाहते, तो यही सेटअप TestSprite डैशबोर्ड में भी मौजूद है। बाक़ी CLI सरफ़ेस का पूरा ब्यौरा यहाँ मिलेगा — CLI रिपॉज़िटरी।
काम कैसे होता है, यह पूरी कार्यप्रणाली यहाँ दी गई है — API टेस्टिंग डॉक्यूमेंटेशन।
छँटाई, या स्कैनर की अहमियत ख़त्म क्यों हो गई
स्कैनर एक ख़ास और बेहद आम तरीक़े से नाकाम होते हैं: वे काम करते रहते हैं और लोग उन्हें पढ़ना बंद कर देते हैं। इसे समझना ज़रूरी है, क्योंकि यह टूलिंग की समस्या नहीं है।
पहली बार चलाने पर एक लंबी सूची बनती है, जिसका बड़ा हिस्सा लागू ही नहीं होता। उसे पूरा खंगालने का वक़्त किसी के पास नहीं होता, तो बस सरसरी नज़र डाल दी जाती है। अगली बार वही सूची आती है और उसमें दो नई चीज़ें जुड़ी होती हैं, जो पहले से मौजूद शोर में दिखाई ही नहीं देतीं। एक तिमाही के भीतर रिपोर्ट महज़ एक ऐसी चीज़ बन जाती है जो बनती है और फ़ाइल हो जाती है, और कोई असली फ़ाइंडिंग साल भर उसी में पड़ी रह सकती है।
इसका इलाज बहुत साधारण है: पहली सूची की एक बार, ढंग से छँटाई कीजिए और जो लागू नहीं होता उसे लिखित वजह के साथ दबा दीजिए। इसके बाद रिपोर्ट सिर्फ़ वही दिखाएगी जो बदला है, और ऐसी रिपोर्ट लोग सचमुच पढ़ते हैं। बिना छँटाई वाला स्कैनर न होने से भी बुरा है, क्योंकि वह कवरेज होने का आभास खड़ा कर देता है।
क्या कहाँ चलाएँ
बिहेवियरल जाँचें हर पुल रिक्वेस्ट पर। स्कैनर तय शेड्यूल पर। प्रॉक्सी और फ़ज़र उस व्यक्ति के हाथ में जो किसी एक चीज़ पर केंद्रित काम कर रहा हो। और पेनिट्रेशन टेस्ट तब, जब थ्रेट मॉडल बदले — न कि तब, जब कैलेंडर कहे।
अगर पाइपलाइन किसी दूसरी टीम की है, तो GitHub App सबसे आसान रास्ता है: यह एक वेबहुक है, आपकी रिपॉज़िटरी में कुछ नहीं बदलता, और तब चलता है जब आपका बिल्ड नया वर्शन लाइव होने की सूचना देता है। अगर आप चाहते हैं कि यह जाँच रिपो के भीतर ही दिखे, तो GitHub Actions स्टेप यह काम कर देता है।
चौथी श्रेणी में TestSprite क्या देता है
बिहेवियरल वेरिफ़िकेशन: क्या API उसे मना करती है जिसे मना करना चाहिए। तैयार किए गए प्लान में ऑथराइज़ेशन और बाउंड्री श्रेणियाँ शामिल होती हैं, इसलिए हर एंडपॉइंट की जाँच हर बदलाव पर होती है — बिना ऑथेंटिकेशन के ऐक्सेस, दूसरे अकाउंट का डेटा पढ़ना, रोल की सीमाएँ और एक्सपायर हो चुके क्रेडेंशियल्स के लिए।
यह चल रही सर्विस पर उसके इंटरफ़ेस के ज़रिए काम करता है, और क्या-क्या मौजूद है यह जानने के लिए एक डिस्कवरी पास तथा आपके स्पेसिफ़िकेशन का इस्तेमाल करता है। Auto-Authentication पूरे रन के दौरान सेशन ज़िंदा रखता है, Dynamic Variables एक कॉल से दूसरे कॉल तक वैल्यू ले जाते हैं, Dependency Chains हर केस की ज़रूरत और उसके नतीजे से एक्ज़ीक्यूशन का क्रम तय करते हैं, और Auto-Cleanup ठीक वही हटाता है जो उस रन ने बनाया था।
फ़ायदा यह है कि ऑब्जेक्ट-लेवल ऑथराइज़ेशन किसी के याद रखने पर टिकना बंद कर देता है। आपका स्कैनर डिपेंडेंसी और इंजेक्शन क्लासेज़ देखता रहता है, आपका पेनिट्रेशन टेस्ट रचनात्मक दुरुपयोग खोजता रहता है, और इन दोनों के बीच की श्रेणी किसी की ज़िम्मेदारी न होना बंद हो जाती है।
क्या TestSprite एक API सिक्योरिटी टेस्टिंग टूल है?
यह बिहेवियरल श्रेणी को कवर करता है: ऑथराइज़ेशन, रोल की सीमाएँ, बाउंड्री वैल्यू और एरर हैंडलिंग की सफ़ाई। यह स्कैनर नहीं है और वल्नरेबिलिटी क्लासेज़ नहीं खोजता।
क्या हमें फिर भी स्कैनर की ज़रूरत है?
हाँ। डिपेंडेंसी वल्नरेबिलिटीज़ और इंजेक्शन क्लासेज़ असली ख़तरे हैं और उनके लिए स्कैनर ही सही औज़ार है। ये श्रेणियाँ एक-दूसरे की पूरक हैं।
ऑब्जेक्ट-लेवल ऑथराइज़ेशन क्या है?
यह कि क्या एक यूज़र सिर्फ़ कोई आइडेंटिफ़ायर बदलकर दूसरे यूज़र का रिकॉर्ड ऐक्सेस कर सकता है। यह APIs की सबसे आम गंभीर ख़ामी है और जाँचने में सबसे आसान ख़ामियों में से एक।
स्कैनर का शोर कैसे रोकें?
तय शेड्यूल पर छँटाई कीजिए और जो दबाना हो, उसके साथ वजह लिख दीजिए। बिना छँटाई वाला बैकलॉग और स्कैनर का न होना, दोनों में कोई फ़र्क़ नहीं।
क्या बिहेवियरल जाँचें प्रोडक्शन पर चलाई जा सकती हैं?
आमतौर पर सही जवाब है — किसी प्रतिनिधि एनवायरनमेंट पर। परमिशन जाँचने के लिए प्रोडक्शन में रिकॉर्ड बनाना और मिटाना अपने साथ अलग ख़तरा लाता है।
जो श्रेणी सबसे सस्ती है, आमतौर पर वही ग़ायब रहती है।
API सिक्योरिटी टेस्टिंग टूल्स स्कैनर, प्रॉक्सी, फ़ज़र और बिहेवियरल वेरिफ़िकेशन में बँटते हैं। ज़्यादातर टीमों के पास पहला है और आख़िरी नहीं — और ऑब्जेक्ट-लेवल ऑथराइज़ेशन इसी आख़िरी श्रेणी में आता है। उसे हर बदलाव की रफ़्तार पर ले आइए और स्कैनर को तय शेड्यूल पर चलने दीजिए।