AWS - Lambda एक्सटेंशनों का दुरुपयोग

Reading time: 5 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Lambda एक्सटेंशन्स

Lambda एक्सटेंशन्स कार्यों को विभिन्न निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों के साथ एकीकृत करके बढ़ाती हैं। ये एक्सटेंशन्स .zip आर्काइव के माध्यम से Lambda लेयर्स के जरिए जोड़ी जाती हैं या कंटेनर इमेज डिप्लॉयमेंट्स में शामिल की जाती हैं, और ये दो मोड में कार्य करती हैं: आंतरिक और बाहरी

  • आंतरिक एक्सटेंशन्स रनटाइम प्रक्रिया के साथ मिलकर काम करती हैं, इसके स्टार्टअप को भाषा-विशिष्ट पर्यावरण चर और रैपर स्क्रिप्ट का उपयोग करके संशोधित करती हैं। यह अनुकूलन विभिन्न रनटाइम्स पर लागू होता है, जिसमें Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1 शामिल हैं।
  • बाहरी एक्सटेंशन्स अलग प्रक्रियाओं के रूप में चलती हैं, Lambda कार्य के जीवन चक्र के साथ संचालन संरेखण बनाए रखती हैं। ये विभिन्न रनटाइम्स के साथ संगत हैं जैसे Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1, और कस्टम रनटाइम्स

कैसे Lambda एक्सटेंशन्स काम करती हैं, इसके बारे में अधिक जानकारी के लिए दस्तावेज़ देखें

स्थिरता, अनुरोध चुराने और अनुरोधों को संशोधित करने के लिए बाहरी एक्सटेंशन

यह इस पोस्ट में प्रस्तावित तकनीक का सारांश है: https://www.clearvector.com/blog/lambda-spy/

यह पाया गया कि Lambda रनटाइम वातावरण में डिफ़ॉल्ट Linux कर्नेल “process_vm_readv” और “process_vm_writev” सिस्टम कॉल के साथ संकलित है। और सभी प्रक्रियाएँ एक ही उपयोगकर्ता आईडी के साथ चलती हैं, यहां तक कि बाहरी एक्सटेंशन के लिए बनाई गई नई प्रक्रिया भी। इसका मतलब है कि एक बाहरी एक्सटेंशन को Rapid की हीप मेमोरी तक पूर्ण पढ़ने और लिखने की पहुंच है, डिजाइन के अनुसार।

इसके अलावा, जबकि Lambda एक्सटेंशन्स आह्वान घटनाओं की सदस्यता लेने की क्षमता रखती हैं, AWS इन एक्सटेंशन्स को कच्चा डेटा नहीं दिखाता। यह सुनिश्चित करता है कि एक्सटेंशन्स संवेदनशील जानकारी तक पहुंच नहीं प्राप्त कर सकतीं जो HTTP अनुरोध के माध्यम से भेजी जाती है।

Init (Rapid) प्रक्रिया सभी API अनुरोधों की निगरानी करती है http://127.0.0.1:9001 जबकि Lambda एक्सटेंशन्स को प्रारंभ किया जाता है और किसी भी रनटाइम कोड के निष्पादन से पहले चलाया जाता है, लेकिन Rapid के बाद।

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

चर AWS_LAMBDA_RUNTIME_API Rapid API के IP पते और पोर्ट नंबर को बच्चे रनटाइम प्रक्रियाओं और अतिरिक्त एक्सटेंशन्स को इंगित करता है।

warning

AWS_LAMBDA_RUNTIME_API पर्यावरण चर को एक पोर्ट में बदलकर, जिसके पास हम पहुंच रखते हैं, Lambda रनटाइम के भीतर सभी क्रियाओं को इंटरसेप्ट करना संभव है (मैन-इन-द-मिडल)। यह संभव है क्योंकि एक्सटेंशन Rapid Init के समान विशेषाधिकारों के साथ चलता है, और सिस्टम का कर्नेल प्रक्रिया मेमोरी में संशोधन की अनुमति देता है, जिससे पोर्ट नंबर को बदलना संभव होता है।

क्योंकि एक्सटेंशन्स किसी भी रनटाइम कोड से पहले चलती हैं, पर्यावरण चर को संशोधित करने से रनटाइम प्रक्रिया (जैसे, Python, Java, Node, Ruby) पर प्रभाव पड़ेगा जब यह शुरू होती है। इसके अलावा, हमारे बाद लोड की गई एक्सटेंशन्स, जो इस चर पर निर्भर करती हैं, भी हमारे एक्सटेंशन के माध्यम से रूट होंगी। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशन्स को पूरी तरह से बायपास करने की अनुमति दे सकता है जो सीधे रनटाइम वातावरण के भीतर हैं।

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

उपकरण lambda-spy को मेमोरी लिखने और Lambda अनुरोधों से संवेदनशील जानकारी चुराने, अन्य एक्सटेंशन्स अनुरोधों और यहां तक कि उन्हें संशोधित करने के लिए बनाया गया था।

संदर्भ

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें