ओपन वर्ल्डवाइड एप्लिकेशन सिक्योरिटी प्रोजेक्ट एक ऑनलाइन समुदाय है जो IoT, सिस्टम सॉफ्टवेयर और वेब एप्लिकेशन सुरक्षा के क्षेत्र में स्वतंत्र रूप से उपलब्ध लेख, कार्यप्रणाली, दस्तावेज़ीकरण, उपकरण और प्रौद्योगिकियों का उत्पादन करता है। OWASP मुफ़्त और खुले संसाधन प्रदान करता है। इसका नेतृत्व OWASP फाउंडेशन नामक एक गैर-लाभकारी संस्था द्वारा किया जाता है। OWASP टॉप 10 - 2021 40 से अधिक भागीदार संगठनों से संकलित व्यापक डेटा पर आधारित हालिया शोध का प्रकाशित परिणाम है।
OWASP नियमित रूप से शीर्ष 10 भेद्यता रिपोर्ट प्रकाशित करता है। रिपोर्ट वेब अनुप्रयोगों में कमजोरियों को लक्षित करती है।
इस पोस्ट में, मैं अपाचे एपीआईएसआईएक्स एपीआई गेटवे के माध्यम से उनमें से कुछ को ठीक करने का तरीका बताना चाहता हूं।
2021 में, रिपोर्ट में उल्लेख किया गया है:
अधिक जानकारी के लिए कृपया पूरी रिपोर्ट देखें।
किसी भेद्यता को ठीक करना उसकी सटीक प्रकृति पर निर्भर करता है। उदाहरण के लिए, कमजोर और पुराने घटकों को ठीक करना प्रक्रिया-चालित है, जिसके लिए संस्करणों को प्रबंधित करने और पुराने को रिटायर करने में अनुशासन की आवश्यकता होती है। हालाँकि, कुछ तकनीकी हैं और केवल रिवर्स प्रॉक्सी या एपीआई गेटवे में उचित कॉन्फ़िगरेशन की आवश्यकता होती है, उदाहरण के लिए , सर्वर साइड रिक्वेस्ट फोर्जरी ।
सुरक्षा एक संवेदनशील विषय है क्योंकि कड़ी सुरक्षा व्यवसाय के लिए कोई मूल्य नहीं लाती है। कैरियर-संचालित प्रबंधक सुरक्षा की परवाह नहीं करेंगे क्योंकि वे यह प्रदर्शित नहीं कर पाएंगे कि उन्होंने अपने अगले वार्षिक मूल्यांकन में कंपनी के लाभ में X% की वृद्धि की है। जब तक बोर्ड सुरक्षा पर गंभीरता से विचार नहीं करेगा, संभावना है कि किसी को परवाह नहीं होगी। इस कारण से, अधिकांश संगठन चेकबॉक्स-आधारित सुरक्षा, उर्फ़ प्रशंसनीय इनकारीकरण लागू करते हैं। यदि आप सुरक्षा को ठीक से लागू करने में रुचि रखते हैं, तो मैंने पिछले ब्लॉग पोस्ट में कुछ विचार लिखे हैं: सुरक्षा को जोखिम मानें ।
कुल मिलाकर, अनुप्रयोगों को सुरक्षित करने से बहुत अधिक बजट, यदि कोई हो, नहीं मिलेगा। इसलिए, हमें इसके बारे में होशियार रहना चाहिए और मौजूदा घटक की खोज करनी चाहिए। सौभाग्य से, OWASP शीर्ष 10 को संभालने के लिए एक आउट-ऑफ-द-बॉक्स कॉन्फ़िगरेशन प्रदान करता है, जिसे कोर रूल सेट नामक कॉन्फ़िगरेशन के माध्यम से ठीक किया जा सकता है। दुर्भाग्य से, यह ModSecurity को लक्षित करता है:
ModSecurity, जिसे कभी-कभी Modsec भी कहा जाता है, एक ओपन-सोर्स वेब एप्लिकेशन फ़ायरवॉल (WAF) है। मूल रूप से Apache HTTP सर्वर के लिए एक मॉड्यूल के रूप में डिज़ाइन किया गया, यह Apache HTTP सर्वर, Microsoft IIS और Nginx सहित कई अलग-अलग प्लेटफार्मों पर अन्य सुरक्षा सुविधाओं के साथ-साथ हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल अनुरोध और प्रतिक्रिया फ़िल्टरिंग क्षमताओं की एक श्रृंखला प्रदान करने के लिए विकसित हुआ है। यह अपाचे लाइसेंस 2.0 के तहत जारी किया गया मुफ्त सॉफ्टवेयर है।
हालाँकि Apache APISIX कॉन्फ़िगरेशन के माध्यम से Nnginx को कॉन्फ़िगर करना सैद्धांतिक रूप से संभव है, एक और अधिक सरल तरीका है।
कोर रूल्ससेट का विवरण हमारी आवश्यकताओं के लिए काफी प्रासंगिक है:
OWASP® ModSecurity कोर नियम सेट (CRS) ModSecurity या संगत वेब एप्लिकेशन फ़ायरवॉल के साथ उपयोग के लिए सामान्य हमले का पता लगाने के नियमों का एक सेट है। सीआरएस का लक्ष्य वेब अनुप्रयोगों को न्यूनतम गलत अलर्ट के साथ ओडब्ल्यूएएसपी टॉप टेन सहित कई प्रकार के हमलों से बचाना है। सीआरएस कई सामान्य आक्रमण श्रेणियों के विरुद्ध सुरक्षा प्रदान करता है, जिनमें शामिल हैं:
- एसक्यूएल इंजेक्शन (एसक्यूएलआई)
- क्रॉस साइट स्क्रिप्टिंग (XSS)
- स्थानीय फ़ाइल समावेशन (एलएफआई)
- रिमोट फ़ाइल समावेशन (आरएफआई)
- PHP कोड इंजेक्शन
- जावा कोड इंजेक्शन
- एचटीटीपीऑक्सी
- मनोविकृति
- यूनिक्स/विंडोज शैल इंजेक्शन
- सत्र निर्धारण
- स्क्रिप्टिंग/स्कैनर/बॉट डिटेक्शन
- मेटाडेटा/त्रुटि रिसाव
OWASP कोराज़ा भी प्रदान करता है, जो गो लाइब्रेरी के रूप में उपलब्ध ModSecurity का एक पोर्ट है। कोराज़ा प्रॉक्सी वासम कोराज़ा के शीर्ष पर बनाया गया है और प्रॉक्सी-वासम एबीआई लागू करता है, जो प्रॉक्सी के लिए वासम इंटरफेस का एक सेट निर्दिष्ट करता है। अंत में, Apache APISIX प्रॉक्सी-वासम एकीकरण प्रदान करता है।
आइए संक्षेप करें:
हम Apache APISIX को इस तरह से सुरक्षित और सुरक्षित डिफ़ॉल्ट के साथ कॉन्फ़िगर कर सकते हैं। चलो यह करते हैं।
सबसे पहली बात: कोराज़ा अपाचे APISIX वितरण का हिस्सा नहीं है। फिर भी, इसे डॉकर के साथ यहां जोड़ना सीधा है:
FROM apache/apisix:3.8.0-debian ENV VERSION 0.5.0 #1 ENV CORAZA_FILENAME coraza-proxy-wasm-${VERSION}.zip #1 ADD https://github.com/corazawaf/coraza-proxy-wasm/releases/download/$VERSION/$CORAZA_FILENAME . #2 USER root #3 RUN <<EOF apt-get install zip -y #4 unzip $CORAZA_FILENAME -d /usr/local/apisix/proxywasm rm $CORAZA_FILENAME apt-get remove zip -y chown -R apisix:apisix /usr/local/apisix/proxywasm EOF USER apisix #5
apisix
है। चूँकि हमें पैकेज स्थापित करने की आवश्यकता है, हमें root
पर स्विच करना होगा।unzip
इंस्टॉल करें क्योंकि यह इंस्टॉल नहीं है, डाउनलोड किए गए संग्रह को अनज़िप करें, संग्रह को हटाएं, unzip
अनइंस्टॉल करें, और निकाले गए फ़ोल्डर के मालिक को बदलेंapisix
पर वापस जाएँ
अगला चरण Coraza Wasm प्लगइन का उपयोग करने के लिए APISIX को स्वयं कॉन्फ़िगर करना है।
wasm: plugins: - name: coraza-filter #1 priority: 7999 #2 file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm #3
Dockerfile
देखें
अंत में, हम प्लगइन को मार्गों पर असाइन कर सकते हैं या इसे हर मार्ग पर लागू करने के लिए एक वैश्विक नियम के रूप में सेट कर सकते हैं। मैं स्थिर कॉन्फ़िगरेशन का उपयोग कर रहा हूँ:
global_rules: - id: 1 plugins: coraza-filter: #1 conf: directives_map: #2 default: - SecDebugLogLevel 9 #3 - SecRuleEngine On #4 - Include @crs-setup-conf #5 - Include @owasp_crs/*.conf #6 default_directives: default #7
coraza-filter
प्लगइन कॉन्फ़िगर करेंdefault
, लेकिन हम कई को परिभाषित कर सकते हैं और विभिन्न मार्गों में अलग-अलग का उपयोग कर सकते हैंdefault
कॉन्फ़िगरेशन का उपयोग करें
हम अपने सेटअप का परीक्षण करने के लिए https://httpbin.org/ पर मार्गों को परिभाषित करने के लिए आगे बढ़ते हैं। आइए /get
के रूट को कॉल करें:
curl localhost:9080?user=foobar
प्रतिक्रिया अपेक्षा के अनुरूप है:
{ "args": { "user": "foobar" }, "headers": { "Accept": "*/*", "Host": "localhost", "User-Agent": "curl/8.4.0", "X-Amzn-Trace-Id": "Root=1-65b9fa13-75900dc029e156ec764ae204", "X-Forwarded-Host": "localhost" }, "origin": "192.168.65.1, 176.153.7.175", "url": "http://localhost/get?user=foobar" }
अब, आइए क्वेरी स्ट्रिंग में जावास्क्रिप्ट भेजने का प्रयास करें। ऐसा कोई तरीका नहीं है जिससे यह अनुरोध सर्वर-साइड अपेक्षित हो, इसलिए हमारे बुनियादी ढांचे को हमें इससे बचाना चाहिए।
curl 'localhost:9080?user=<script>alert(1)</script>'
प्रतिक्रिया एक 403 HTTP स्थिति कोड है। यदि हम लॉग को देखें, तो हम निम्नलिखित संकेत देख सकते हैं:
Coraza: Warning. XSS Attack Detected via libinjection [file "@owasp_crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf"] Coraza: Warning. NoScript XSS InjectionChecker: HTML Injection Coraza: Warning. Javascript method detected Coraza: Access denied (phase 1). Inbound Anomaly Score Exceeded in phase 1
कोराज़ा ने काम किया!
अधिकांश संगठन सुरक्षा के लिए प्रोत्साहन नहीं देते। इसलिए, हमें इसके बारे में होशियार रहने और जितना संभव हो सके मौजूदा घटकों का उपयोग करने की आवश्यकता है।
हम कोराज़ा और कोर रूल्ससेट का उपयोग करके अपाचे APISIX को OWASP टॉप 10 के विरुद्ध मजबूत कर सकते हैं।
आगे जाने के लिए:
इस पोस्ट का संपूर्ण स्रोत कोड GitHub पर पाया जा सकता है।
मूल रूप से 4 फरवरी, 2024 को ए जावा गीक में प्रकाशित