AWS - Abusing Lambda Extensions
लैम्बडा एक्सटेंशन्स
लैम्बडा एक्सटेंशन्स मॉनिटरिंग, विश्लेषण, सुरक्षा, और गवर्नेंस उपकरणों के साथ एकीकरण करके फ़ंक्शन को बेहतर बनाते हैं। ये एक्सटेंशन्स, .zip अभिलेखों का उपयोग करके लैम्बडा लेयर्स का उपयोग करके जोड़े जाते हैं या कंटेनर इमेज डिप्लॉयमेंट में शामिल किए जाते हैं, दो मोड में काम करते हैं: आंतरिक और बाह्य।
आंतरिक एक्सटेंशन्स रनटाइम प्रक्रिया के साथ मिलकर काम करते हैं, भाषा-विशेष पर्यावरण चरणों और रैपर स्क्रिप्ट का उपयोग करके इसकी स्टार्टअप को संशोधित करते हैं। यह सायंत्रिक रनटाइम्स, जैसे कि Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1 के लिए लागू होता है।
बाह्य एक्सटेंशन्स अलग प्रक्रियाएँ के रूप में चलते हैं, लैम्बडा फ़ंक्शन के जीवनकाल के साथ संचालन संरेखित रहते हैं। ये Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1, और कस्टम रनटाइम्स के साथ संगत हैं।
अधिक जानकारी के लिए लैम्बडा एक्सटेंशन्स काम कैसे करते हैं दस्तावेज़ देखें।
परिस्थिति, अनुरोध चोरी और अनुरोधों का संशोधन करने के लिए बाह्य एक्सटेंशन
यह उपयोगिता उपयोगिता का सारांश है जो इस पोस्ट में प्रस्तावित किया गया है: https://www.clearvector.com/blog/lambda-spy/
पाया गया कि लैम्बडा रनटाइम परिवेश में डिफ़ॉल्ट लिनक्स कर्नेल "process_vm_readv" और "process_vm_writev" सिस्टम कॉल्स के साथ कंपाइल किया गया है। और सभी प्रक्रियाएँ एक ही उपयोगकर्ता आईडी के साथ चलती हैं, यहां तक कि बाह्य एक्सटेंशन के लिए नई प्रक्रिया बनाई गई। इसका मतलब है कि बाह्य एक्सटेंशन को रैपिड की हीप मेमोरी का पूरा रीड और राइट एक्सेस होता है, डिज़ाइन के अनुसार।
इसके अतिरिक्त, जबकि लैम्बडा एक्सटेंशन्स को इनवोकेशन इवेंट्स की सदस्यता करने की क्षमता होती है, AWS इन एक्सटेंशन्स को कच्चे डेटा को नहीं दिखाता। यह सुनिश्चित करता है कि एक्सटेंशन्स HTTP अनुरोध के माध्यम से भेजी गई संएजनीय जानकारी तक पहुंच नहीं पाते।
इनिट (रैपिड) प्रक्रिया http://127.0.0.1:9001 पर सभी API अनुरोधों का मॉनिटर करती है जबकि लैम्बडा एक्सटेंशन्स को प्रारंभ किया जाता है और किसी भी रनटाइम कोड के निष्पादन से पहले चलाया जाता है, लेकिन रैपिड के बाद।
चर AWS_LAMBDA_RUNTIME_API
बच्चे रनटाइम प्रक्रियाओं और अतिरिक्त एक्सटेंशन्स को रैपिड API के IP पते और पोर्ट संख्या को दर्शाता है।
AWS_LAMBDA_RUNTIME_API
पर्यावरण चर को एक पोर्ट
जिसका आपके पास पहुंच है, बदलकर, लैम्बडा रनटाइम के भीतर सभी क्रियाएँ अंतर्दृष्टि से करना संभव है (मैन-इन-द-मिडल। यह संभव है क्योंकि एक्सटेंशन रैपिड इनिट के साथ ही उन्नतियों के साथ चलता है, और सिस्टम कर्नेल प्रक्रिया मेमोरी का संशोधन करने की अनुमति देता है, पोर्ट नंबर का संशोधन करने की संभावना देता है।
क्योंकि एक्सटेंशन्स किसी भी रनटाइम कोड से पहले चलते हैं, पर्यावरण चर को संशोधित करने से रनटाइम प्रक्रिया (जैसे, Python, Java, Node, Ruby) प्रभावित होगी। इसके अतिरिक्त, हमारे बाद लोड किए गए एक्सटेंशन्स, जो इस चर पर आधारित हैं, भी हमारे एक्सटेंशन के माध्यम से मार्गदर्शन करेंगे। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशन्स को सीधे रनटाइम परिवेश में छलने की संभावना देता है।
उपकरण lambda-spy बनाया गया था ताकि लैम्बडा अनुरोधों से मेमोरी राइट करें और लैम्बडा अनुरोधों से संवेदनशील जानकारी चुरा लें, अन्य एक्सटेंशन्स के अनुरोधों को भी संशोधित करें।
संदर्भ
Last updated