paint-brush
अपाचे एपीआईएसआईएक्स एपीआई गेटवे के साथ वेब कमजोरियों को कैसे संबोधित करेंद्वारा@nfrankel
302 रीडिंग
302 रीडिंग

अपाचे एपीआईएसआईएक्स एपीआई गेटवे के साथ वेब कमजोरियों को कैसे संबोधित करें

द्वारा Nicolas Fränkel9m2024/02/10
Read on Terminal Reader

बहुत लंबा; पढ़ने के लिए

हम कोराज़ा और कोर रूल्ससेट का उपयोग करके अपाचे APISIX को OWASP टॉप 10 के विरुद्ध मजबूत कर सकते हैं।
featured image - अपाचे एपीआईएसआईएक्स एपीआई गेटवे के साथ वेब कमजोरियों को कैसे संबोधित करें
Nicolas Fränkel HackerNoon profile picture


ओपन वर्ल्डवाइड एप्लिकेशन सिक्योरिटी प्रोजेक्ट एक ऑनलाइन समुदाय है जो IoT, सिस्टम सॉफ्टवेयर और वेब एप्लिकेशन सुरक्षा के क्षेत्र में स्वतंत्र रूप से उपलब्ध लेख, कार्यप्रणाली, दस्तावेज़ीकरण, उपकरण और प्रौद्योगिकियों का उत्पादन करता है। OWASP मुफ़्त और खुले संसाधन प्रदान करता है। इसका नेतृत्व OWASP फाउंडेशन नामक एक गैर-लाभकारी संस्था द्वारा किया जाता है। OWASP टॉप 10 - 2021 40 से अधिक भागीदार संगठनों से संकलित व्यापक डेटा पर आधारित हालिया शोध का प्रकाशित परिणाम है।

- ओडब्ल्यूएएसपी वेबसाइट


OWASP नियमित रूप से शीर्ष 10 भेद्यता रिपोर्ट प्रकाशित करता है। रिपोर्ट वेब अनुप्रयोगों में कमजोरियों को लक्षित करती है।


इस पोस्ट में, मैं अपाचे एपीआईएसआईएक्स एपीआई गेटवे के माध्यम से उनमें से कुछ को ठीक करने का तरीका बताना चाहता हूं।

OWASP टॉप 10 2021

2021 में, रिपोर्ट में उल्लेख किया गया है:


  • A01:2021-टूटा हुआ एक्सेस कंट्रोल
  • ए02:2021-क्रिप्टोग्राफ़िक विफलताएँ
  • ए03:2021-इंजेक्शन
  • ए04:2021-असुरक्षित
  • ए05:2021-सुरक्षा गलत कॉन्फ़िगरेशन
  • ए06:2021-कमजोर और पुराने घटक
  • ए07:2021-पहचान और प्रमाणीकरण विफलताएँ
  • A08:2021-सॉफ़्टवेयर और डेटा इंटीग्रिटी विफलताएँ
  • ए09:2021-सुरक्षा लॉगिंग और निगरानी विफलताएँ
  • ए10:2021-सर्वर-साइड अनुरोध जालसाजी


अधिक जानकारी के लिए कृपया पूरी रिपोर्ट देखें।


किसी भेद्यता को ठीक करना उसकी सटीक प्रकृति पर निर्भर करता है। उदाहरण के लिए, कमजोर और पुराने घटकों को ठीक करना प्रक्रिया-चालित है, जिसके लिए संस्करणों को प्रबंधित करने और पुराने को रिटायर करने में अनुशासन की आवश्यकता होती है। हालाँकि, कुछ तकनीकी हैं और केवल रिवर्स प्रॉक्सी या एपीआई गेटवे में उचित कॉन्फ़िगरेशन की आवश्यकता होती है, उदाहरण के लिए , सर्वर साइड रिक्वेस्ट फोर्जरी

सुरक्षा की किसी को परवाह नहीं है

सुरक्षा एक संवेदनशील विषय है क्योंकि कड़ी सुरक्षा व्यवसाय के लिए कोई मूल्य नहीं लाती है। कैरियर-संचालित प्रबंधक सुरक्षा की परवाह नहीं करेंगे क्योंकि वे यह प्रदर्शित नहीं कर पाएंगे कि उन्होंने अपने अगले वार्षिक मूल्यांकन में कंपनी के लाभ में X% की वृद्धि की है। जब तक बोर्ड सुरक्षा पर गंभीरता से विचार नहीं करेगा, संभावना है कि किसी को परवाह नहीं होगी। इस कारण से, अधिकांश संगठन चेकबॉक्स-आधारित सुरक्षा, उर्फ़ प्रशंसनीय इनकारीकरण लागू करते हैं। यदि आप सुरक्षा को ठीक से लागू करने में रुचि रखते हैं, तो मैंने पिछले ब्लॉग पोस्ट में कुछ विचार लिखे हैं: सुरक्षा को जोखिम मानें


कुल मिलाकर, अनुप्रयोगों को सुरक्षित करने से बहुत अधिक बजट, यदि कोई हो, नहीं मिलेगा। इसलिए, हमें इसके बारे में होशियार रहना चाहिए और मौजूदा घटक की खोज करनी चाहिए। सौभाग्य से, OWASP शीर्ष 10 को संभालने के लिए एक आउट-ऑफ-द-बॉक्स कॉन्फ़िगरेशन प्रदान करता है, जिसे कोर रूल सेट नामक कॉन्फ़िगरेशन के माध्यम से ठीक किया जा सकता है। दुर्भाग्य से, यह ModSecurity को लक्षित करता है:


ModSecurity, जिसे कभी-कभी Modsec भी कहा जाता है, एक ओपन-सोर्स वेब एप्लिकेशन फ़ायरवॉल (WAF) है। मूल रूप से Apache HTTP सर्वर के लिए एक मॉड्यूल के रूप में डिज़ाइन किया गया, यह Apache HTTP सर्वर, Microsoft IIS और Nginx सहित कई अलग-अलग प्लेटफार्मों पर अन्य सुरक्षा सुविधाओं के साथ-साथ हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल अनुरोध और प्रतिक्रिया फ़िल्टरिंग क्षमताओं की एक श्रृंखला प्रदान करने के लिए विकसित हुआ है। यह अपाचे लाइसेंस 2.0 के तहत जारी किया गया मुफ्त सॉफ्टवेयर है।

--विकिपीडिया पर मॉडसिक्योरिटी


हालाँकि Apache APISIX कॉन्फ़िगरेशन के माध्यम से Nnginx को कॉन्फ़िगर करना सैद्धांतिक रूप से संभव है, एक और अधिक सरल तरीका है।

OWASP कोर रूल्ससेट और कोराज़ा

कोर रूल्ससेट का विवरण हमारी आवश्यकताओं के लिए काफी प्रासंगिक है:


OWASP® ModSecurity कोर नियम सेट (CRS) ModSecurity या संगत वेब एप्लिकेशन फ़ायरवॉल के साथ उपयोग के लिए सामान्य हमले का पता लगाने के नियमों का एक सेट है। सीआरएस का लक्ष्य वेब अनुप्रयोगों को न्यूनतम गलत अलर्ट के साथ ओडब्ल्यूएएसपी टॉप टेन सहित कई प्रकार के हमलों से बचाना है। सीआरएस कई सामान्य आक्रमण श्रेणियों के विरुद्ध सुरक्षा प्रदान करता है, जिनमें शामिल हैं:

  • एसक्यूएल इंजेक्शन (एसक्यूएलआई)
  • क्रॉस साइट स्क्रिप्टिंग (XSS)
  • स्थानीय फ़ाइल समावेशन (एलएफआई)
  • रिमोट फ़ाइल समावेशन (आरएफआई)
  • PHP कोड इंजेक्शन
  • जावा कोड इंजेक्शन
  • एचटीटीपीऑक्सी
  • मनोविकृति
  • यूनिक्स/विंडोज शैल इंजेक्शन
  • सत्र निर्धारण
  • स्क्रिप्टिंग/स्कैनर/बॉट डिटेक्शन
  • मेटाडेटा/त्रुटि रिसाव

-- OWASP® मॉडसिक्योरिटी कोर रूल सेट वेबसाइट


OWASP कोराज़ा भी प्रदान करता है, जो गो लाइब्रेरी के रूप में उपलब्ध ModSecurity का एक पोर्ट है। कोराज़ा प्रॉक्सी वासम कोराज़ा के शीर्ष पर बनाया गया है और प्रॉक्सी-वासम एबीआई लागू करता है, जो प्रॉक्सी के लिए वासम इंटरफेस का एक सेट निर्दिष्ट करता है। अंत में, Apache APISIX प्रॉक्सी-वासम एकीकरण प्रदान करता है।

यह सब एक साथ डालें

आइए संक्षेप करें:


  1. OWASP शीर्ष 10 वेब सुरक्षा कमजोरियों की एक सूची प्रदान करता है
  2. यह उन्हें कोर रूल्ससेट के माध्यम से मॉडसिक्योरिटी के लिए लागू करता है
  3. कोराज़ा मॉडसिक्योरिटी का एक पोर्ट है, जो प्रॉक्सी-वासम कार्यान्वयन के रूप में उपलब्ध है


हम 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
  1. बेहतर रख-रखाव के लिए चर परिभाषित करें
  2. कोराज़ा वासम रिलीज़ प्राप्त करें
  3. हाल के APISIX संस्करणों में, उपयोगकर्ता सुरक्षा को सख्त करने के लिए apisix है। चूँकि हमें पैकेज स्थापित करने की आवश्यकता है, हमें root पर स्विच करना होगा।
  4. unzip इंस्टॉल करें क्योंकि यह इंस्टॉल नहीं है, डाउनलोड किए गए संग्रह को अनज़िप करें, संग्रह को हटाएं, unzip अनइंस्टॉल करें, और निकाले गए फ़ोल्डर के मालिक को बदलें
  5. उपयोगकर्ता apisix पर वापस जाएँ


अगला चरण Coraza Wasm प्लगइन का उपयोग करने के लिए APISIX को स्वयं कॉन्फ़िगर करना है।


 wasm: plugins: - name: coraza-filter #1 priority: 7999 #2 file: /usr/local/apisix/proxywasm/coraza-proxy-wasm.wasm #3
  1. फ़िल्टर का नाम वासम कोड में सेट किया गया है
  2. सर्वोच्च प्राथमिकता निर्धारित करें ताकि यह किसी अन्य प्लगइन से पहले चले
  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
  1. अब उपलब्ध होने पर coraza-filter प्लगइन कॉन्फ़िगर करें
  2. कॉन्फ़िगरेशन को परिभाषित करें. यहां, हम एक को परिभाषित करते हैं, default , लेकिन हम कई को परिभाषित कर सकते हैं और विभिन्न मार्गों में अलग-अलग का उपयोग कर सकते हैं
  3. लॉग में क्या होता है यह देखने के लिए लॉग स्तर बढ़ाएँ
  4. इंजन चालू करें
  5. कोराज़ा सेटअप का उपयोग करें
  6. सभी नियमों का प्रयोग करें. हम अधिक सुक्ष्म नियंत्रण के लिए उनमें से चुन सकते हैं जिन्हें हम चाहते हैं
  7. ऊपर परिभाषित 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 को ए जावा गीक में प्रकाशित