
OpenAPI-आधारित APIs के लिए स्वचालित प्राधिकरण सुरक्षा स्कैनर। विभेदक प्रतिक्रिया विश्लेषण के माध्यम से विशेषाधिकार वृद्धि और टूटे हुए एक्सेस नियंत्रण बग का पता लगाने के लिए एकाधिक क्रेडेंशियल सेट के साथ GET एंडपॉइंट का परीक्षण करता है।
आधुनिक वेब एप्लिकेशन में प्राधिकरण सुरक्षा समस्याओं को सुरक्षा स्कैनर आसानी से नहीं पकड़ पाते। Shopify, LINE, NordVPN से कुछ उदाहरण हैं। इसका एक कारण यह है कि सुरक्षा स्कैनर मुख्य रूप से SQLi, XSS, RCE की तलाश करते हैं, न कि प्राधिकरण सुरक्षा बग की, और स्कैनर को आमतौर पर यह ज्ञान नहीं होता कि वेब एप्लिकेशन को कैसे व्यवहार करना चाहिए। यही कारण है कि अधिकांश प्राधिकरण बग अब मुख्य रूप से मैन्युअल रूप से खोजे जाते हैं। OpenAPI सुरक्षा स्कैनर को स्वचालन और मैन्युअल समीक्षा दोनों के साथ प्राधिकरण सुरक्षा समस्याओं का पता लगाने में मदद करने के लिए बनाया गया है। यह एक बाहरी यूनिट टेस्ट टूल की तरह व्यवहार करता है ताकि यह सुनिश्चित किया जा सके कि सब कुछ वैसा ही व्यवहार कर रहा है जैसा उसे करना चाहिए।
इस वीडियो को देखें या पढ़ते रहें।
इस परियोजना को फोर्क करें या क्लोन करें और शुरू करने के लिए नीचे दिए गए निर्देशों का पालन करें।
इस स्कैनर का उपयोग करने का कार्यप्रवाह कुछ इस प्रकार होगा:
डेवलपर्स के लिए, इस उपकरण का उपयोग करने से यह अतिरिक्त आश्वासन मिलता है कि API आंतरिक और बाहरी दोनों रूप से अपेक्षित व्यवहार कर रहा है। और पाइपलाइन को ट्रिगर करके प्रत्येक कोड डिप्लॉयमेंट पर स्कैनर को ट्रिगर किया जा सकता है: https://docs.gitlab.com/ee/ci/triggers/।
बग बाउंटी हंटर्स के लिए, इस उपकरण का उपयोग करके यह सुनिश्चित किया जा सकता है कि आप हमेशा लक्षित API पर नज़र रख सकते हैं, क्योंकि हम सभी जानते हैं, भले ही कोई विशिष्ट एंडपॉइंट पहले असुरक्षित नहीं था, भविष्य में विभिन्न कारणों से यह असुरक्षित हो सकता है। इसलिए बग हंटिंग के मैन्युअल भाग को इस उपकरण का उपयोग करके स्वचालित करना आसान है।
सुनिश्चित करें कि आपके पास लक्षित API को स्कैन करने की अनुमति है।
आपको वेब एप्लिकेशन की एक OpenAPI yaml फ़ाइल की आवश्यकता होगी और इसे रिपॉजिटरी में api.yaml की सामग्री से बदलें।
api.yaml की सामग्री को लक्ष्य की OpenAPI yaml फ़ाइल से बदलें, और GitLab प्रोजेक्ट के Settings -> CI/CD -> Expand Variables पर जाएं और नीचे दिए गए प्रारूपों में वेरिएबल्स दर्ज करें।
यहां दिए गए क्रेडेंशियल API कॉल में Authorization: Bearer हेडर प्रारूप में पास किए जाएंगे।
कम से कम दो उपयोगकर्ता खातों के लिए अलग-अलग अनुमतियों वाले एक्सेस टोकन तैयार करने की अनुशंसा की जाती है, और आप विभिन्न स्कोप वाले एक्सेस टोकन के लिए सही व्यवहार का परीक्षण करने के लिए प्रति उपयोगकर्ता खाता एक से अधिक एक्सेस टोकन भी बना सकते हैं।
{
"<user_a>":[
{
"scope":"<scope>",
"access_token":"<value>",
"name":"<name_of_access_token>"
},
{
"scope":"<scope>",
"access_token":"<value>",
"name":"<name_of_access_token>"
}
],
"<user_b>":[
{
"scope":"<scope>",
"access_token":"<value>",
"name":"<name_of_access_token>"
}
]
}
यहां दिए गए एंडपॉइंट GET आधारित API कॉल होने चाहिए, और आप JSON बॉडी में क्वेरी भी शामिल कर सकते हैं। नीचे दिए गए उदाहरण में, एंडपॉइंट /org/{orgs}/repos है और इसके लिए क्वेरी type=all है। एंडपॉइंट /repos/{owner}/{repo} के लिए कोई क्वेरी नहीं होगी।
{
"/orgs/{org}/repos":{
"type":"all"
},
"/repos/{owner}/{repo}":{
}
}
पथ वेरिएबल्स यहां प्रदान किए जा सकते हैं, और स्कैनर पथ वेरिएबल्स में मानों से सभी संयोजन उत्पन्न करेगा।
{
"org":[
"test-org"
],
"owner":[
"ngalongc",
"reconless"
],
"repo":[
"public-repo",
"private-repo"
]
}
इस मामले में, निम्नलिखित संयोजन API कॉल उत्पन्न होते हैं, और ये सभी OPENAPI_CREDS में दिए गए क्रेडेंशियल के विभिन्न सेटों द्वारा कॉल किए जाएंगे।
/orgs/test-org/repos?type=all
/repos/ngalongc/public-repo
/repos/ngalongc/private-repo
/repos/reconless/public-repo
/repos/reconless/private-repo
https://gitlab.com/-/profile/personal_access_tokens पर जाएं और एक api एक्सेस टोकन बनाएं और यहां मान बदलें। इस GitLab एक्सेस टोकन का उपयोग GitLab रनर से स्कैन परिणाम डाउनलोड करने के लिए किया जाता है।
<YOU_GITLAB_API_ACCESS_TOKEN>
यह आपके API सर्वर के बेस url का मान होना चाहिए।
https://example.com/api/v3
जब API में परिवर्तन का पता चलता है तो स्लैक नोटिफिकेशन का स्क्रीनशॉट
आर्टिफैक्ट्स में स्कैनिंग परिणाम का स्क्रीनशॉट
नमूना रिपोर्ट: https://ngalog-gitlab.gitlab.io/-/openapi_security_scanner/-/jobs/966841401/artifacts/sample.html
GET आधारित एंडपॉइंट का परीक्षण कर सकता है/users/{user_id}/activities के लिए, प्रतिक्रियाएँ हर बार कॉल करने पर भिन्न होती हैं, इसलिए इस प्रकार के API में परिवर्तन का पता लगाना सार्थक नहीं हैयोगदान ही है जो ओपन सोर्स समुदाय को सीखने, प्रेरित करने और बनाने के लिए एक अद्भुत स्थान बनाता है। आपके द्वारा किए गए किसी भी योगदान की अत्यधिक सराहना की जाती है।
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)MIT लाइसेंस के तहत वितरित। अधिक जानकारी के लिए LICENSE देखें।
Ron Chan - @ngalongc
प्रोजेक्ट लिंक: https://gitlab.com/ngalog-gitlab/openapi_security_scanner