Serverless.com Security
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
एक Organization Serverless Framework पारिस्थितिकी तंत्र के भीतर उच्चतम स्तर की इकाई है। यह एक सामूहिक समूह का प्रतिनिधित्व करता है, जैसे कि एक कंपनी, विभाग, या कोई भी बड़ा संगठन, जो कई परियोजनाओं, टीमों और अनुप्रयोगों को समाहित करता है।
Team वे उपयोगकर्ता हैं जिनके पास संगठन के भीतर पहुंच है। टीमें सदस्यों को भूमिकाओं के आधार पर व्यवस्थित करने में मदद करती हैं। Collaborators
मौजूदा ऐप्स को देख और तैनात कर सकते हैं, जबकि Admins
नए ऐप्स बना सकते हैं और संगठन की सेटिंग्स प्रबंधित कर सकते हैं।
एक App एक संगठन के भीतर संबंधित सेवाओं का तार्किक समूह है। यह कई सर्वरलेस सेवाओं से मिलकर बना एक पूर्ण अनुप्रयोग का प्रतिनिधित्व करता है जो एक साथ मिलकर एक समग्र कार्यक्षमता प्रदान करते हैं।
एक Service एक सर्वरलेस अनुप्रयोग का मुख्य घटक है। यह आपके पूरे सर्वरलेस प्रोजेक्ट का प्रतिनिधित्व करता है, जिसमें सभी कार्य, कॉन्फ़िगरेशन और आवश्यक संसाधन शामिल होते हैं। यह आमतौर पर serverless.yml
फ़ाइल में परिभाषित होता है, एक सेवा में सेवा का नाम, प्रदाता कॉन्फ़िगरेशन, कार्य, घटनाएँ, संसाधन, प्लगइन्स, और कस्टम वेरिएबल्स जैसी मेटाडेटा शामिल होती है।
यह आधिकारिक ट्यूटोरियल का सारांश है from the docs:
एक AWS खाता बनाएं (Serverless.com AWS अवसंरचना में शुरू होता है)
serverless.com में एक खाता बनाएं
एक ऐप बनाएं:
यह एक app बनाना चाहिए था जिसका नाम tutorialapp
है जिसे आप serverless.com में देख सकते हैं और एक फ़ोल्डर बनाना चाहिए था जिसका नाम Tutorial
है जिसमें फ़ाइल handler.js
है जिसमें कुछ JS कोड है जिसमें helloworld
कोड है और फ़ाइल serverless.yml
है जो उस फ़ंक्शन की घोषणा करती है:
एक AWS प्रदाता बनाएं, डैशबोर्ड में जाकर https://app.serverless.com/<org name>/settings/providers?providerId=new&provider=aws
।
serverless.com
को AWS तक पहुंच देने के लिए यह एक क्लाउडफॉर्मेशन स्टैक चलाने के लिए कहेगा, इस कॉन्फ़िग फ़ाइल का उपयोग करते हुए (इस लेख के समय): https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml
यह टेम्पलेट SFRole-<ID>
नामक एक भूमिका उत्पन्न करता है जिसमें arn:aws:iam::aws:policy/AdministratorAccess
उस खाते पर है जिसमें एक ट्रस्ट आइडेंटिटी है जो Serverless.com
AWS खाते को भूमिका तक पहुंचने की अनुमति देती है।
ट्यूटोरियल createCustomer.js
फ़ाइल बनाने के लिए कहता है, जो मूल रूप से एक नया API एंडपॉइंट बनाएगा जिसे नए JS फ़ाइल द्वारा संभाला जाएगा और serverless.yml
फ़ाइल को संशोधित करने के लिए कहता है ताकि यह एक नया DynamoDB तालिका उत्पन्न करे, एक पर्यावरण चर परिभाषित करे, उस भूमिका को जो उत्पन्न लैंब्डा का उपयोग करेगी।
इसे चलाते हुए डिप्लॉय करें serverless deploy
डिप्लॉयमेंट एक CloudFormation Stack के माध्यम से किया जाएगा
ध्यान दें कि lambdas API गेटवे के माध्यम से एक्सपोज़ होते हैं और सीधे URLs के माध्यम से नहीं
इसे टेस्ट करें
पिछले चरण में URLs प्रिंट की जाएंगी जहां आपके API एंडपॉइंट्स lambda फ़ंक्शंस को डिप्लॉय किया गया है
अत्यधिक अनुमति वाले IAM रोल क्लाउड संसाधनों तक अनधिकृत पहुंच प्रदान कर सकते हैं, जिससे डेटा उल्लंघन या संसाधन हेरफेर हो सकता है।
कम से कम विशेषाधिकार का सिद्धांत: प्रत्येक फ़ंक्शन को केवल आवश्यक अनुमतियाँ सौंपें।
अलग-अलग रोल का उपयोग करें: फ़ंक्शन आवश्यकताओं के आधार पर रोल को अलग करें।
संवेदनशील जानकारी (जैसे, API कुंजी, डेटाबेस क्रेडेंशियल) को सीधे serverless.yml
या कोड में स्टोर करने से एक्सपोज़र हो सकता है यदि रिपॉजिटरी से समझौता किया गया हो या यदि AWS तक पहुंच से समझौता किया गया हो क्योंकि ये lambdas कॉन्फ़िगरेशन से पढ़े जा सकते हैं।
पर्यावरण चर: रनटाइम पर रहस्यों को इंजेक्ट करें बिना हार्डकोडिंग के।
Secrets Manager एकीकरण: AWS Secrets Manager, Azure Key Vault, या HashiCorp Vault जैसी सेवाओं का उपयोग करें।
एन्क्रिप्टेड वेरिएबल्स: संवेदनशील डेटा के लिए Serverless Framework की एन्क्रिप्शन सुविधाओं का लाभ उठाएं।
एक्सेस नियंत्रण: भूमिकाओं के आधार पर रहस्यों तक पहुंच को प्रतिबंधित करें।
रहस्यों को लॉग करने से बचें: सुनिश्चित करें कि रहस्य लॉग या त्रुटि संदेशों में एक्सपोज़ नहीं होते हैं।
पुरानी या असुरक्षित निर्भरताएँ कमजोरियों को पेश कर सकती हैं, जबकि गलत इनपुट हैंडलिंग कोड इंजेक्शन हमलों का कारण बन सकती है।
निर्भरता प्रबंधन: नियमित रूप से निर्भरताओं को अपडेट करें और कमजोरियों के लिए स्कैन करें।
इनपुट मान्यता: सभी इनपुट की सख्त मान्यता और सफाई लागू करें।
कोड समीक्षाएँ: सुरक्षा दोषों की पहचान के लिए गहन समीक्षाएँ करें।
स्थैतिक विश्लेषण: कोडबेस में कमजोरियों का पता लगाने के लिए उपकरणों का उपयोग करें।
सही लॉगिंग और निगरानी के बिना, दुर्भावनापूर्ण गतिविधियाँ अनदेखी रह सकती हैं, जिससे घटना प्रतिक्रिया में देरी हो सकती है।
केंद्रीकृत लॉगिंग: AWS CloudWatch या Datadog जैसी सेवाओं का उपयोग करके लॉग को एकत्रित करें।
विस्तृत लॉगिंग सक्षम करें: संवेदनशील डेटा को एक्सपोज़ किए बिना आवश्यक जानकारी कैप्चर करें।
अलर्ट सेट करें: संदिग्ध गतिविधियों या विसंगतियों के लिए अलर्ट कॉन्फ़िगर करें।
नियमित निगरानी: संभावित सुरक्षा घटनाओं के लिए लॉग और मैट्रिक्स की निरंतर निगरानी करें।
खुले या गलत तरीके से सुरक्षित APIs का उपयोग अनधिकृत पहुंच, सेवा से इनकार (DoS) हमलों, या क्रॉस-साइट हमलों के लिए किया जा सकता है।
प्रमाणीकरण और प्राधिकरण: OAuth, API कुंजी, या JWT जैसे मजबूत तंत्र लागू करें।
रेट लिमिटिंग और थ्रॉटलिंग: अनुरोध दरों को सीमित करके दुरुपयोग को रोकें।
सुरक्षित CORS कॉन्फ़िगरेशन: अनुमत मूल, विधियों, और हेडर को प्रतिबंधित करें।
वेब एप्लिकेशन फ़ायरवॉल (WAF) का उपयोग करें: दुर्भावनापूर्ण पैटर्न के लिए HTTP अनुरोधों को फ़िल्टर और मॉनिटर करें।
साझा संसाधन और अपर्याप्त अलगाव विशेषाधिकार वृद्धि या फ़ंक्शनों के बीच अनपेक्षित इंटरैक्शन का कारण बन सकते हैं।
फ़ंक्शनों को अलग करें: स्वतंत्र संचालन सुनिश्चित करने के लिए विशिष्ट संसाधन और IAM रोल सौंपें।
संसाधन विभाजन: विभिन्न फ़ंक्शनों के लिए अलग डेटाबेस या स्टोरेज बकेट का उपयोग करें।
VPCs का उपयोग करें: नेटवर्क अलगाव को बढ़ाने के लिए वर्चुअल प्राइवेट क्लाउड के भीतर फ़ंक्शनों को तैनात करें।
फ़ंक्शन अनुमतियों को सीमित करें: सुनिश्चित करें कि फ़ंक्शन एक-दूसरे के संसाधनों तक पहुंच या हस्तक्षेप नहीं कर सकते जब तक कि स्पष्ट रूप से आवश्यक न हो।
आराम या ट्रांजिट में बिना एन्क्रिप्टेड डेटा को एक्सपोज़ किया जा सकता है, जिससे डेटा उल्लंघन या छेड़छाड़ हो सकती है।
आराम में डेटा एन्क्रिप्ट करें: क्लाउड सेवा एन्क्रिप्शन सुविधाओं का उपयोग करें।
ट्रांजिट में डेटा एन्क्रिप्ट करें: सभी डेटा ट्रांसमिशन के लिए HTTPS/TLS का उपयोग करें।
API संचार को सुरक्षित करें: एन्क्रिप्शन प्रोटोकॉल लागू करें और प्रमाणपत्रों को मान्य करें।
एन्क्रिप्शन कुंजियों का सुरक्षित प्रबंधन करें: प्रबंधित कुंजी सेवाओं का उपयोग करें और नियमित रूप से कुंजियों को घुमाएँ।
विस्तृत त्रुटि संदेश बुनियादी ढांचे या कोडबेस के बारे में संवेदनशील जानकारी को लीक कर सकते हैं, जबकि अनहैंडल्ड अपवाद एप्लिकेशन क्रैश का कारण बन सकते हैं।
सामान्य त्रुटि संदेश: त्रुटि प्रतिक्रियाओं में आंतरिक विवरण को उजागर करने से बचें।
केंद्रीकृत त्रुटि हैंडलिंग: सभी फ़ंक्शनों में त्रुटियों को प्रबंधित और साफ़ करें।
त्रुटियों की निगरानी और लॉगिंग करें: अंत-उपयोगकर्ताओं को विवरण उजागर किए बिना त्रुटियों को ट्रैक और विश्लेषण करें।
एक्सपोज़्ड डिप्लॉयमेंट कॉन्फ़िगरेशन या CI/CD पाइपलाइनों तक अनधिकृत पहुंच दुर्भावनापूर्ण कोड डिप्लॉयमेंट या गलत कॉन्फ़िगरेशन का कारण बन सकती है।
सुरक्षित CI/CD पाइपलाइन्स: सख्त एक्सेस नियंत्रण, मल्टी-फैक्टर प्रमाणीकरण (MFA), और नियमित ऑडिट लागू करें।
कॉन्फ़िगरेशन को सुरक्षित रूप से स्टोर करें: डिप्लॉयमेंट फ़ाइलों को हार्डकोडेड रहस्यों और संवेदनशील डेटा से मुक्त रखें।
इन्फ्रास्ट्रक्चर कोड (IaC) सुरक्षा उपकरणों का उपयोग करें: सुरक्षा नीतियों को लागू करने के लिए Checkov या Terraform Sentinel जैसे उपकरणों का उपयोग करें।
अपरिवर्तनीय डिप्लॉयमेंट: अपरिवर्तनीय इन्फ्रास्ट्रक्चर प्रथाओं को अपनाकर डिप्लॉयमेंट के बाद अनधिकृत परिवर्तनों को रोकें।
अनवetted या दुर्भावनापूर्ण तृतीय-पक्ष प्लगइन्स का उपयोग आपके सर्वरलेस अनुप्रयोगों में कमजोरियाँ पेश कर सकता है।
प्लगइन्स की अच्छी तरह से जांच करें: एकीकरण से पहले प्लगइन्स की सुरक्षा का आकलन करें, प्रतिष्ठित स्रोतों से उन पर प्राथमिकता दें।
प्लगइन उपयोग को सीमित करें: हमले की सतह को कम करने के लिए केवल आवश्यक प्लगइन्स का उपयोग करें।
प्लगइन अपडेट की निगरानी करें: सुरक्षा पैच का लाभ उठाने के लिए प्लगइन्स को अपडेट रखें।
प्लगइन वातावरण को अलग करें: संभावित समझौतों को सीमित करने के लिए प्लगइन्स को अलग वातावरण में चलाएँ।
सार्वजनिक रूप से सुलभ फ़ंक्शंस या अनियंत्रित APIs का उपयोग अनधिकृत संचालन के लिए किया जा सकता है।
फ़ंक्शन एक्सेस को प्रतिबंधित करें: विश्वसनीय स्रोतों तक पहुंच को सीमित करने के लिए VPCs, सुरक्षा समूहों, और फ़ायरवॉल नियमों का उपयोग करें।
मजबूत प्रमाणीकरण लागू करें: सुनिश्चित करें कि सभी एक्सपोज़ किए गए एंडपॉइंट्स को उचित प्रमाणीकरण और प्राधिकरण की आवश्यकता है।
API गेटवे का सुरक्षित उपयोग करें: सुरक्षा नीतियों को लागू करने के लिए API गेटवे को कॉन्फ़िगर करें, जिसमें इनपुट मान्यता और रेट लिमिटिंग शामिल हैं।
अप्रयुक्त एंडपॉइंट्स को बंद करें: नियमित रूप से समीक्षा करें और किसी भी एंडपॉइंट को बंद करें जो अब उपयोग में नहीं है।
टीम के सदस्यों और बाहरी सहयोगियों को अत्यधिक अनुमतियाँ देना अनधिकृत पहुंच, डेटा उल्लंघन, और संसाधनों के दुरुपयोग का कारण बन सकता है। यह जोखिम उन वातावरणों में बढ़ जाता है जहां कई व्यक्तियों के पास विभिन्न स्तरों की पहुंच होती है, जिससे हमले की सतह और अंदरूनी खतरों की संभावना बढ़ जाती है।
कम से कम विशेषाधिकार का सिद्धांत: सुनिश्चित करें कि टीम के सदस्यों और सहयोगियों के पास केवल उन कार्यों को करने के लिए आवश्यक अनुमतियाँ हों।
एक्सेस कुंजी और लाइसेंस कुंजी महत्वपूर्ण क्रेडेंशियल हैं जो Serverless Framework CLI के साथ इंटरैक्शन को प्रमाणित और अधिकृत करने के लिए उपयोग की जाती हैं।
लाइसेंस कुंजी: ये अद्वितीय पहचानकर्ता हैं जो Serverless Framework संस्करण 4 तक पहुंच को प्रमाणित करने के लिए आवश्यक हैं, जो CLI के माध्यम से लॉगिन की अनुमति देता है।
एक्सेस कुंजी: क्रेडेंशियल जो Serverless Framework CLI को Serverless Framework डैशबोर्ड के साथ प्रमाणित करने की अनुमति देती हैं। जब serverless
cli के साथ लॉगिन किया जाता है, तो एक एक्सेस कुंजी जनरेट और लैपटॉप में स्टोर की जाएगी। आप इसे SERVERLESS_ACCESS_KEY
नामक पर्यावरण चर के रूप में भी सेट कर सकते हैं।
कोड रिपॉजिटरी के माध्यम से एक्सपोज़र:
एक्सेस कुंजी और लाइसेंस कुंजी को हार्डकोडिंग या गलती से संस्करण नियंत्रण प्रणालियों में कमिट करने से अनधिकृत पहुंच हो सकती है।
असुरक्षित भंडारण:
पर्यावरण चर या कॉन्फ़िगरेशन फ़ाइलों में बिना उचित एन्क्रिप्शन के कुंजी को प्लेनटेक्स्ट में स्टोर करने से लीक होने की संभावना बढ़ जाती है।
गलत वितरण:
असुरक्षित चैनलों (जैसे, ईमेल, चैट) के माध्यम से कुंजी साझा करने से दुर्भावनापूर्ण तत्वों द्वारा इंटरसेप्शन हो सकता है।
घुमाव की कमी:
कुंजी को नियमित रूप से घुमाने में विफलता यदि कुंजी से समझौता किया गया हो तो एक्सपोज़र अवधि को बढ़ा देती है।
अत्यधिक अनुमतियाँ:
व्यापक अनुमतियों वाली कुंजी का उपयोग कई संसाधनों में अनधिकृत क्रियाएँ करने के लिए किया जा सकता है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)