AWS - Abusing Lambda Extensions

Support HackTricks

Lambda Extensions

Lambda extensions कार्यों को विभिन्न निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों के साथ एकीकृत करके बढ़ाते हैं। ये एक्सटेंशन .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 के बाद।

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

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

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

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

संदर्भ

Support HackTricks

Last updated