Log4Shell, एक इन्टरनेट जोखिम, हालै लाखौं मेसिनहरू प्रभावित। Log4j, सफ्टवेयरको एक अस्पष्ट तर लगभग सर्वव्यापी टुक्रा, यसको कारण हो।
Log4j लाई विभिन्न कम्प्युटर प्रणालीहरूमा पर्दा पछाडि हुने सबै कार्यहरू लग गर्न प्रयोग गरिन्छ।
यो खुला स्रोत लगिङ पुस्तकालयमा आधारित छ जुन धेरैजसो अनुप्रयोगहरूमा व्यवसायहरू र सरकारी संस्थाहरूद्वारा प्रयोग गरिन्छ।
सबैभन्दा खराब साइबर सुरक्षा प्वालहरू मध्ये एक भएको कारणले गर्दा, तपाइँको प्रणालीहरूलाई यस जोखिमबाट जोगाउन यो महत्त्वपूर्ण छ। तर कसरी?
विस्तारमा Log4j जोखिम र यसको लागि सबै सम्भावित समाधानहरू अन्वेषण गरौं।
Log4j के हो?
Log4j एक हो खुला-स्रोत लगिङ ढाँचा जसले सफ्टवेयर विकासकर्ताहरूलाई तिनीहरूको अनुप्रयोगहरू भित्र विभिन्न डेटा रेकर्ड गर्न सक्षम बनाउँछ। यो Apache Logging Services प्रोजेक्ट को एक कम्पोनेन्ट हो, जुन द्वारा संचालित छ Apache Software Foundation.
सयौं वेबसाइटहरू र एपहरूले Log4j प्रयोग गर्दछ महत्वपूर्ण कार्यहरू प्रदर्शन गर्न जस्तै डिबगिङ र अन्य प्रयोगहरूको लागि लगिङ डेटा।
जब तपाइँ इनपुट वा खराब अनलाइन लिङ्कमा क्लिक गर्नुहुन्छ र 404 त्रुटि सूचना प्राप्त गर्नुहुन्छ, यो काममा Log4j को एक बारम्बार उदाहरण हो। तपाईंले पहुँच गर्न खोजेको वेब लिङ्कको डोमेन चलाउने वेब सर्भरले तपाईंलाई यस्तो कुनै वेबपेज अवस्थित छैन भनी सूचित गर्दछ। यसले सर्भरको प्रणाली प्रशासकहरूको लागि Log4j मा घटना लग गर्दछ।
सफ्टवेयर प्रोग्रामहरूमा, समान निदान संकेतहरू कार्यरत छन्। अनलाइन खेल Minecraft मा, उदाहरण को लागी, सर्भरले Log4j को गतिविधि लग गर्न को लागी प्रयोग गर्दछ जस्तै कुल RAM र कन्सोलमा पठाइएको प्रयोगकर्ता निर्देशनहरू।
जोखिम कसरी उत्पन्न हुन्छ?
लुकअपहरू Log4j 2.0 मा प्रस्तुत गरिएको नयाँ सुविधा हो, जसले लग प्रविष्टिहरूमा थप जानकारी समावेश गर्न मद्दत गर्छ। यी लुकअपहरू मध्ये एक JNDI (जाभा नामकरण र डाइरेक्टरी इन्टरफेस) लुकअप हो, जुन डाइरेक्टरी सेवासँग सञ्चार गर्नको लागि Java API हो।
यो दृष्टिकोण प्रयोग गरेर, आन्तरिक प्रयोगकर्ता आईडीहरू वास्तविक प्रयोगकर्ता नामहरूमा म्याप गर्न सकिन्छ। यो क्वेरीले भर्खरै पत्ता लगाएको RCE जोखिमलाई उजागर गर्दछ, किनकि LDAP सर्भरले उपलब्ध गराएको डेटा प्रकारहरू मध्ये एउटा Java क्लासलाई संकेत गर्ने URI हो, जुन त्यसपछि मेमोरीमा लोड हुन्छ र Log4j उदाहरणद्वारा चलाइन्छ।
Log4j पुस्तकालयको इनपुट प्रमाणीकरणमा कमजोरीको कारणले, यो अविश्वसनीय स्रोतबाट मनमानी LDAP सर्भर इन्जेक्सन गर्न सम्भव छ। किनकी विकासकर्ताहरूले लगहरूमा पठाइएका डेटालाई सादा पाठको रूपमा ह्यान्डल गरिनेछ भनी मान्छन्, कुनै अतिरिक्त इनपुट प्रमाणीकरण गरिएको छैन, र खतरनाक प्रयोगकर्ता इनपुटहरू लगहरूमा प्रवेश गर्दछ।
लग कथन यस्तो देखिन सक्छ:
दुर्भावनापूर्ण प्रयोगकर्ताले अब URL प्यारामिटरमा दुष्ट LDAP सर्भरलाई सन्दर्भ गर्दै JNDI लुकअप घुसाउनेछ। JNDI लुकअप निम्नानुसार हुनेछ:
Log4j पुस्तकालयले त्यसपछि जाभा फ्याक्ट्री र जाभा कोडबेसका लागि मानहरू सहित डाइरेक्टरी जानकारी प्राप्त गर्न attacker.com मा यो LDAP सर्भरसँग कुरा गर्छ।
यी दुई मानहरूले आक्रमणकर्ताको Java वर्ग समावेश गर्दछ, जुन त्यसपछि मेमोरीमा लोड हुन्छ र Log4j उदाहरणद्वारा कार्यान्वयन गरिन्छ, कोड कार्यान्वयन पूरा गर्दै।
जोखिममा को छ?
Log4j जोखिम अविश्वसनीय रूपमा फराकिलो छ, जसले व्यापार अनुप्रयोगहरू, इम्बेडेड उपकरणहरू, र तिनीहरूको उपप्रणालीहरूलाई असर गर्छ। प्रभावित एपहरूमा Cisco Webex, Minecraft, र FileZilla FTP समावेश छन्।
यद्यपि, यो कुनै पनि हिसाबले सम्पूर्ण सूची होइन। यो त्रुटिले Ingenuity Mars 2020 हेलिकप्टर मिसनलाई पनि असर गर्छ, जसले घटना रेकर्डिङका लागि Apache Log4j प्रयोग गर्छ।
सुरक्षा समुदायले कम्पाइल गरेको छ कमजोर प्रणालीहरूको सूची। यो नोट गर्न महत्त्वपूर्ण छ कि यी सूचीहरू लगातार अपडेट भइरहेका छन्, त्यसैले यदि कुनै निश्चित कार्यक्रम वा प्रणाली विशेष गरीएको छैन भने, यो प्रभावित छैन भनी मान्नुहोस्।
यस जोखिमको लागि एक्सपोजर धेरै सम्भावना छ, र एक विशिष्ट भए पनि टेक स्ट्याक Java लागू गर्दैन, सुरक्षा अधिकारीहरूले महत्वपूर्ण आपूर्तिकर्ता प्रणालीहरू, SaaS आपूर्तिकर्ताहरू, क्लाउड होस्टिङ प्रदायकहरू, र वेब सर्भर प्रदायकहरू त्यसो गर्ने अपेक्षा गर्नुपर्छ।
Log4j जोखिमको लागि कसरी जाँच गर्ने?
पहिलो चरण भनेको आक्रमण भइसकेको छ कि छैन भनेर निर्धारण गर्नु हो। तपाईंले RCE पेलोड टुक्राहरूको लागि प्रणाली लगहरू जाँच गरेर त्यसो गर्न सक्नुहुन्छ।
यदि "jndi", "ldap", वा "$::" जस्ता शब्दहरूको खोजीले कुनै लगहरू प्राप्त गर्छ भने, सुरक्षा अनुसन्धानकर्ताहरूले यो वैध आक्रमण वा फिंगरप्रिन्टिङ मात्र थियो कि भनेर थप अन्वेषण गर्नुपर्छ।
जंगलमा धेरै आक्रमणहरू पत्ता लगाइयो जसले कुनै हानिकारक पेलोडहरू प्रदान गर्दैन। जे होस्, कतिवटा एपहरू यस आक्रमणको चपेटामा परेका छन् भनी निर्धारण गर्न सुरक्षा विज्ञहरूद्वारा तिनीहरूको परीक्षण गरिएको थियो।
अर्को चरण सबै परियोजनाहरू पहिचान गर्न Log4j पुस्तकालय प्रयोग गर्नु हो। यदि 2.0-beta9 र 2.14.1 बीचको संस्करणहरू प्रयोग गरिन्छ भने, परियोजना अतिसंवेदनशील हुन सक्छ।
यो जोखिम कहाँ अवस्थित छ भनेर निर्धारण गर्न कठिनाईलाई ध्यानमा राख्दै, यो परियोजना अतिसंवेदनशील छ भनेर अनुमान गर्न उपयुक्त हुन सक्छ र पुस्तकालय अद्यावधिक गर्नु भनेको कोड कार्यान्वयनको खतरा हटाउनको लागि उत्तम कार्य हो।
यदि प्रयोग गरिएको संस्करण 2.0-beta 9 भन्दा कम छ भने परियोजना कमजोर हुँदैन, यद्यपि Log4j पुस्तकालय अझै पनि अपग्रेड गरिनुपर्छ किनभने 1.x दायराका संस्करणहरू पुरानो छन् र अब अद्यावधिकहरू प्राप्त गर्दैनन्।
एक अतिसंवेदनशील परियोजना पत्ता लगाइएको छ कि छैन, यो Log4j प्रयोग गरेर लग गरिएको कुनै पनि जानकारी प्रयोगकर्ता परिवर्तन गर्न सक्ने जानकारी समावेश छ कि भनेर जाँच गर्न सल्लाह दिइन्छ। URL, अनुरोध प्यारामिटरहरू, हेडरहरू, र कुकीहरू यस डेटाका उदाहरणहरू हुन्। यदि यी मध्ये एक लग इन गरिएको छ भने, परियोजना जोखिममा छ।
यो ज्ञानले तपाइँलाई प्रणाली लगहरूमा थप पत्ता लगाउन र तपाइँको वेब अनुप्रयोग पहिले नै आक्रमण भएको छ कि छैन भनेर निर्धारण गर्न मद्दत गर्न सक्छ।
त्यहाँ नि: शुल्क अनलाइन उपकरणहरू छन् जसले वेब अनुप्रयोग कमजोर छ कि छैन पत्ता लगाउन सक्छ। यी मध्ये एक कार्यक्रम हो Log4Shell शिकारी। यो खुला स्रोत हो र उपलब्ध छ GitHub.
यदि अनलाइन एप्लिकेसनमा कोडको कमजोर क्षेत्र फेला पर्यो भने, खुलासा उपकरणद्वारा प्रदान गरिएको पेलोडलाई वेब अनुप्रयोगमा इन्जेक्ट गर्न प्रयोग गर्न सकिन्छ। यदि जोखिमको शोषण गरिएको थियो भने परीक्षण उपकरणले तपाइँको वेब अनुप्रयोग र तिनीहरूको LDAP सर्भर बीचको जडानहरू प्रकट गर्दछ।
Log4j जोखिम समाधान गर्न समाधान
पहिलो चरण Log4j अपडेट गर्नु हो, जुन तपाईले सामान्य प्याकेज प्रबन्धकहरू प्रयोग गरेर वा यसलाई सिधै यसबाट डाउनलोड गरेर गर्न सक्नुहुन्छ। पृष्ठ.
वातावरणीय चर FORMAT MSG NO LOOKUPS लाई सत्यमा सेट गरेर जोखिमको शोषण कम गर्न पनि सम्भव छ। यो काउन्टरमेजर, तथापि, 4 भन्दा ठूलो वा बराबर Log2.10j संस्करणहरूमा मात्र लागू हुन्छ।
अब वैकल्पिक विकल्पहरू विचार गरौं।
1. Log4j संस्करण 2.17.0 को लागि समाधान
यो निश्चित रूपमा Log4Shell विरुद्ध सुरक्षा गर्न Log2.15.0j संस्करण 4 प्रयोग गर्न सल्लाह दिइन्छ, यद्यपि, यदि यो सम्भव छैन भने, अन्य समाधानहरू उपलब्ध छन्।
Log2.7.0j को 4 र पछिको संस्करण: प्रयोगकर्ता द्वारा आपूर्ति गरिएको डाटाको लागि प्रतिशत m nolookups सिन्ट्याक्स प्रयोग गरी लगइन हुने घटनाहरूको ढाँचा परिवर्तन गरेर कुनै पनि आक्रमणबाट जोगाउन यो सम्भव छ। यो अद्यावधिक कार्यक्रमको नयाँ संस्करण उत्पन्न गर्न Log4j कन्फिगरेसन फाइल सम्पादन गर्न आवश्यक छ। नतिजाको रूपमा, यो नयाँ संस्करण प्रयोग गर्नु अघि, प्राविधिक र कार्यात्मक प्रमाणीकरण चरणहरू दोहोर्याउनु पर्छ।
Log4j संस्करण 2.10.0 र पछि: log4j2.formatMsgNoLookups कन्फिगरेसन प्यारामिटरलाई सत्यमा सेट गरेर कुनै पनि आक्रमणबाट जोगाउन पनि सम्भव छ, उदाहरणका लागि, जाभा भर्चुअल मेसिन -Dlog4j2 विकल्पसँग सुरु गर्दा। formatMsgNoLookups = true, अर्को विकल्प क्लासपाथ तर्कबाट JndiLookup वर्ग हटाउनु हो, जसले मुख्य आक्रमण भेक्टरलाई हटाउनेछ (अनुसन्धानकर्ताहरूले अर्को आक्रमण भेक्टरको सम्भावनालाई अस्वीकार गर्दैनन्)।
अमेजन वेब सेवाहरूले एक हटप्याच प्रदान गर्दछ जुन "तपाईंको आफ्नै जोखिममा प्रयोग गरिनु पर्छ।" अन्य "प्रविधिहरू," जस्तै Logout4Shell, जसले "यस जोखिमलाई आफ्नै विरुद्ध प्रयोग गर्दछ," प्रकाशित गरिएको छ। सुरक्षा विशेषज्ञले यस कदमको वैधानिकतामाथि प्रश्न गर्छ, जसमा "यसलाई ठीक गर्न मेसिन ह्याक गर्ने" समावेश छ।
2. Log4j v2.17.0 मा समस्या समाधान गरिएको छ।
2.10 भन्दा ठूला संस्करणहरूको लागि: Log4j2.formatMsgNoLookups लाई true मा सेट गरिनुपर्छ।
संस्करण २.० देखि २.१०.० सम्मका लागि: Log2.0j बाट LDAP वर्ग हटाउन निम्न आदेश चलाउनुहोस्।
Log4j2.formatMsgNoLookups लाई प्रणाली सेटिङहरूमा true मा सेट गरिनुपर्छ।
JVM मा शमन
JVM प्यारामिटरहरूको साथ शमन अब एक विकल्प छैन। अन्य शमन विधिहरू सफल हुन जारी छ। सम्भव भएमा Log4j संस्करण 2.17.0 मा अपग्रेड गर्नुहोस्। Log4j v1 को लागि माइग्रेसन गाइड उपलब्ध छ।
यदि अद्यावधिक सम्भव छैन भने, सुनिश्चित गर्नुहोस् कि क्लाइन्ट-साइड र सर्भर-साइड कम्पोनेन्टहरूमा -Dlog4j2.formatMsgNoLookups = साँचो प्रणाली गुण सेट छ।
कृपया ध्यान दिनुहोस् कि Log4j v1 आफ्नो जीवनको अन्त्य (EOL) मा पुगेको छ र अब बग समाधानहरू प्राप्त गर्दैन। अन्य RCE भेक्टरहरू पनि Log4j v1 को लागि अतिसंवेदनशील छन्। तसर्थ, हामी तपाईंलाई जतिसक्दो चाँडो Log4j 2.17.0 मा अपग्रेड गर्न आग्रह गर्छौं।
3. न्यूनीकरण उपायहरू
हालको शोषणले काम गर्न सक्दैन यदि Log4j केही अवस्थाहरूमा संवेदनशील छ भने, जस्तै यदि होस्ट मेसिनले 6u212, 7u202, 8u192, वा 11.0.2 भन्दा माथिको जाभा संस्करण चलिरहेको छ।
यो हालको संस्करणहरूमा राम्रो Java नेमिङ र डाइरेक्टरी इन्टरफेस (JNDI) रिमोट क्लास लोडिङ सुरक्षाको कारणले हो, जुन आक्रमण सञ्चालन गर्न आवश्यक छ।
यसबाहेक, 4 भन्दा ठूला Log2.10j संस्करणहरूसँग, ढाँचाMsgNoLookups प्रणाली मानलाई true मा सेट गरेर, JVM तर्क -Dlog4j2.formatMsgNoLookups = true प्रदान गरेर, वा क्लासपाथबाट JndiLookup क्लास मेटाएर समस्याबाट बच्न सकिन्छ।
यस बीचमा, कमजोर अवस्थाहरू तय नभएसम्म, निम्न प्रविधिहरू प्रयोग गरेर जोखिमलाई सम्बोधन गर्न सकिन्छ:
- प्रणाली गुण log4j2.formatMsgNoLookups लाई >=2.10 को लागि true मा सेट गर्नुहोस्।
- >=4 को लागि वातावरण विकल्प LOG2.10J FORMAT MSG NO LOOKUPS लाई सत्यमा सेट गर्नुहोस्।
- 2.0-beta9 देखि 2.10.0 सम्मको क्लासपाथबाट JndiLookup.class हटाउनुहोस्: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
एउटा सिफारिस गरिएको उत्तम अभ्यास भनेको इन्टरनेटमा इग्रेस ट्राफिकलाई उपयुक्त पोर्टहरूमा मात्र सीमित गर्नु हो।
यद्यपि फिल्डमा धेरैजसो आक्रमणहरू HTTP मार्फत डेलिभर गरिएका छन्, जोखिमलाई कुनै पनि प्रोटोकल मार्फत शोषण गर्न सकिन्छ जसले Log4j प्रयोग गरेर प्रयोगकर्ता इनपुट डेटा लग गर्दछ।
यद्यपि, log4j 2.17.0 मा अद्यावधिक गर्नु उत्तम उपाय हो किनभने कसैले समस्याको लागि थप दृष्टिकोण पत्ता लगाउन सक्छ। यसबाहेक, धेरै प्रकाशकहरू र निर्माताहरूले आफ्ना सेवाहरू वा एपहरूमा सुधारहरू घोषणा गरेका छन्।
4. Log4Shell भेद्यता प्याच
Log4j सर्वव्यापी छ, विशेष गरी अब जब जोखिमको शोषण भइरहेको छ। संक्षेपमा, तपाईंले Log4j द्वारा निरीक्षण गरिएका लगहरूमा निम्न वर्णहरू समावेश गर्न आवश्यक छ।
र यसले URL को अन्त्यमा अवस्थित Java फाइल डाउनलोड र कार्यान्वयन गर्नेछ। यो नाटकीय रूपमा सीधा छ।
तपाईलाई थाहा छ, यो Log4Shell जोखिम (CVE-2.17.0-4) को समाधान गर्न log2021j लाई संस्करण >= 44228 मा अपग्रेड गर्न महत्त्वपूर्ण छ।
यदि यो सम्भव छैन भने:
Log4j पुस्तकालय संस्करण 2.10.0 र पछिको प्रयोग गर्ने अनुप्रयोगहरूका लागि, कन्फिगरेसन प्यारामिटर log4j2.formatMsgNoLookups लाई true मा सेट गरेर कुनै पनि आक्रमणबाट जोगाउन सम्भव छ, उदाहरणका लागि, जाभा भर्चुअल मेसिन सुरु गर्दा -Dlog4j2.formatMsgNoLookups = true। विकल्प।
अर्को विकल्प क्लासपाथ तर्कबाट JndiLookup क्लास मेटाउने हो, जसले प्राथमिक आक्रमण भेक्टरलाई हटाउनेछ (अनुसन्धानकर्ताहरूले अर्को आक्रमण भेक्टरको अस्तित्वलाई अस्वीकार गर्दैनन्)।
नोट
संवेदनशिल प्रणालीहरूमा समायोजन गर्न हिचकिचाउने वा नचाहने संस्थाहरूले (वा जो तर अतिरिक्त सुरक्षाहरू स्थापना गर्न चाहन्छन्) विचार गर्नुपर्छ:
- सुनिश्चित गर्नुहोस् कि सबै ट्राफिक iSensor मार्फत रुट गरिएको छ/WAF/आईपीएस। यसले आक्रमणलाई प्रणालीमा पहुँच प्राप्त गर्नबाट रोक्न सक्छ।
- अतिसंवेदनशील प्रणालीमा पुग्न सक्ने ट्राफिकको मात्रा सीमित गर्दै यदि प्रणालीलाई इन्टरनेटमा जडान गर्न आवश्यक छैन भने, केवल आवश्यक र भरपर्दो IPS र दायराहरूमा पहुँच सीमित गर्नुहोस्।
- होस्टको आधिकारिक बहिर्गमन ट्राफिक कम गर्दै। किनभने यो आक्रमण एक दुष्ट सर्भरमा जडान गरेर सञ्चालन हुन्छ, सबै अनावश्यक IP ठेगानाहरू र पोर्टहरू फायरवालमा अवरुद्ध हुनुपर्छ।
- यदि सेवा अब आवश्यक छैन भने, यो एक फिक्स तयार नभएसम्म असक्षम हुनुपर्छ।
निष्कर्ष
Log4j त्रुटिहरूले हाम्रो समुदायलाई स्तब्ध बनायो र हामी सबैलाई खुला स्रोत सफ्टवेयरमा कत्तिको निर्भर छौं भनेर सम्झायो।
Log4j अद्वितीय छ। यो न त अपरेटिङ सिस्टम हो, न यो ब्राउजर हो, न यो सफ्टवेयर हो। बरु, यो प्रोग्रामरहरूले पुस्तकालय, प्याकेज, वा कोड मोड्युलको रूपमा बुझाउँछन्। यसले केवल एउटा उद्देश्य पूरा गर्दछ, त्यो हो, सर्भरमा के हुन्छ भनेर रेकर्ड राख्नु।
कोड लेख्ने व्यक्तिहरूले आफ्नो सफ्टवेयरलाई विशिष्ट बनाउने कुरामा ध्यान केन्द्रित गर्न रुचाउँछन्। तिनीहरूले चक्र पुन: आविष्कार गर्न चासो राख्दैनन्। नतिजाको रूपमा, तिनीहरू अवस्थित कोड पुस्तकालयहरूको अधिकतामा भर पर्छन्, जस्तै Log4j।
Log4j मोड्युल Apache बाट लिइएको हो, सबैभन्दा व्यापक रूपमा प्रयोग हुने वेब सर्भर सफ्टवेयर। यसैले यो लाखौं सर्भरहरूमा पत्ता लगाउन सकिन्छ। त्यसैले सुरक्षा खतरा बढ्दै गएको छ ।
मलाई आशा छ कि माथिका समाधानहरूले तपाईंलाई आफ्नो यन्त्रहरू सुरक्षित राख्न मद्दत गर्दछ।
टेक संसारबाट थप उपयोगी जानकारीको लागि HashDork मा रहनुहोस्।
जवाफ छाड्नुस्