2010-07-21 20 views
8

सामान्य जावा भेद्यताएं क्या हैं जिनका उपयोग किसी सिस्टम में किसी प्रकार की पहुंच प्राप्त करने के लिए किया जा सकता है? मैं हाल ही में इसके बारे में सोच रहा हूं, और बहुत कुछ के साथ आने में सक्षम रहा है - पूर्णांक अतिप्रवाह - शायद? दौड़ की स्थिति - यह आपको क्या देती है?सामान्य जावा भेद्यताएं क्या हैं?

मैं "वेब ऐप में एसक्यूएल इंजेक्शन" जैसी चीज़ों की तलाश नहीं कर रहा हूं। मैं बफर ओवरफ्लो - सी/सी ++ के समान रिश्ते की तलाश में हूं।

वहां कोई भी सुरक्षा विशेषज्ञ जो मदद कर सकता है? धन्यवाद।

+1

जिज्ञासा से बाहर, आपने सी/सी ++ भेद्यता के रूप में बफर ओवरफ़्लो को वर्गीकृत क्यों किया है? जावा में भी संभव है, अगर वीएम की समान भेद्यता है। –

+0

आमतौर पर, भेद्यता आवेदन में होती है न कि भाषा में ही। – Jonas

+0

@ विनीत: निष्पक्ष होने के लिए, आपके द्वारा लिखे गए * जावा * कोड में बफर ओवरफ़्लो बनाने का जोखिम मौजूद नहीं है; सी # और अन्य प्रबंधित भाषाओं के लिए भी वही। वीएम में एक बफर ओवरफ्लो का जोखिम बहुत कम है जो कुल 99.9% जोखिम को समाप्त करता है। –

उत्तर

1

अधिकांश प्रतिक्रियाओं को पढ़ने के बाद मुझे लगता है कि आपके प्रश्न का उत्तर अप्रत्यक्ष तरीके से दिया गया है। मैं बस इसे सीधे इंगित करना चाहता था। जावा सी/सी ++ में दिखाई देने वाली समस्याओं से ग्रस्त नहीं है क्योंकि यह डेवलपर को इन प्रकार के मेमोरी हमलों (बफर ओवरफ्लो, हीप ओवरफ्लो इत्यादि) से बचाता है। वो चीजें नहीं हो सकती हैं।चूंकि भाषा सुरक्षा भेद्यता में यह मौलिक सुरक्षा ढेर बढ़ गई है।

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

पिछले कुछ वर्षों में जावा में मैंने देखा है कि दूरस्थ कोड क्षमता उत्पन्न करने वाली एकमात्र भेद्यता मूल कोड वीएम लोड से हुई है। Libzip भेद्यता, gif फ़ाइल पार्सिंग, आदि और यह केवल कुछ मुट्ठी भर समस्याएं हैं। शायद हर 2-3 साल में एक। और फिर vuln जावा कोड में JVM द्वारा लोड मूल कोड है।

एक भाषा के रूप में जावा बहुत सुरक्षित है। यहां तक ​​कि इन मुद्दों पर भी चर्चा की गई है जिन्हें सैद्धांतिक रूप से हमला किया जा सकता है, उन्हें रोकने के लिए मंच में हुक हैं। इस पर हस्ताक्षर कोड कोड सबसे अधिक है। हालांकि, सुरक्षा प्रबंधक के साथ चलने वाले बहुत कम जावा प्रोग्राम स्थापित हैं। मुख्य रूप से प्रदर्शन, प्रयोज्यता के कारण, लेकिन मुख्य रूप से क्योंकि ये vulns बहुत अच्छी तरह से दायरे में सीमित हैं। जावा में रिमोट कोड लोडिंग महामारी स्तर तक नहीं बढ़ी है जो 90/2000 के दशक के अंत में सी/सी ++ के लिए ओवरफ्लो बफर करती है।

जावा प्लेटफार्म के रूप में बुलेट प्रूफ नहीं है, लेकिन पेड़ पर दूसरे फल की तुलना में इसका फायदा उठाना मुश्किल है। और हैकर्स अवसरवादी हैं और उस कम लटकते फल के लिए जाते हैं।

+0

अच्छा सारांश - एक चीज़ आईडी से नोट करना पसंद है हमलावर परिप्रेक्ष्य यह है कि जावा को हमले की सतह के रूप में इस्तेमाल किया जा सकता है। चूंकि यह एक व्याख्या की गई भाषा है, आप सार्वभौमिक गोले लिख सकते हैं ... मैंने इसके बारे में वास्तव में तब तक सोचा नहीं जब तक कि मैं इसके बारे में कोई लेख नहीं पढ़ता। – wuntee

1

मैं सुरक्षा विशेषज्ञ नहीं हूं, लेकिन हमारी कंपनी में कुछ मॉड्यूल हैं कि हम जावा में कोड नहीं कर सकते क्योंकि जावा बाइटकोड को संकलित करना इतना आसान है। हमने obfuscation देखा लेकिन यदि आप असली obfuscation चाहते हैं यह केवल कई समस्याओं के साथ आता है (प्रदर्शन हिट/डीबग जानकारी के नुकसान)।
एक हमारे लॉजिक्स चुरा सकते हैं ... एक संशोधित संस्करण है कि गलत परिणाम वापस आ जाएगी आदि के साथ मॉड्यूल की जगह,

तो C/C++ की तुलना में, मुझे लगता है कि यह एक "असुरक्षा" है कि बाहर खड़ा है।

हमारे पास हमारे जावा मॉड्यूल में अंतर्निहित सॉफ़्टवेयर लाइसेंस तंत्र भी है, लेकिन इसे कोड को डी-कंपाइलिंग और संशोधित करके आसानी से हैक किया जा सकता है।

+0

लोग 30+ वर्षों के लिए सी/सी ++ कोड में सॉफ़्टवेयर लाइसेंस तंत्र को हैकिंग और स्विच कर रहे हैं। जावा में यह आसान है? निश्चित रूप से, लेकिन सी/सी ++ इन प्रकार के मुद्दों से प्रतिरक्षा नहीं है। अगर लोग वास्तव में आपके सॉफ्टवेयर चाहते हैं तो वे इसे प्राप्त करेंगे। मैं जावा जैसे किसी भाषा में अपना तर्क लिखना चाहता हूं और अपना काम आसान बना सकता हूं जहां मैं तेजी से आगे बढ़ सकता हूं और आईपी के दर्शक को मेरी भाषा पसंद को निर्देशित करने के बजाय अपने अंतिम ग्राहक के लिए अधिक मूल्य बना सकता हूं। याद रखें कि सूरज के नीचे लगभग सबकुछ नया नहीं है। – chubbsondubs

1

तृतीय पक्ष वर्ग फ़ाइलों को शामिल करना और उन पर कॉल करना मूल रूप से मतलब है कि आप असुरक्षित कोड चला रहे हैं। वह कोड कुछ भी कर सकता है जो चाहता है कि अगर आपके पास सुरक्षा चालू नहीं है।

+0

तीसरे पक्ष सी या सी ++ पुस्तकालयों को स्थापित करने और उन पर फोन करने के लिए भी यही सच है। वह कोड जावा कोड से * * * कुछ भी कर सकता है। –

4

दुर्भावनापूर्ण कोड इंजेक्शन।

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

यह एक भेद्यता है, जो विभिन्न तंत्रों का उपयोग करते हुए जावा की पहली रिलीज के बाद से जुड़ा हुआ है।

  • कक्षाओं को सुनिश्चित करने के लिए क्लासलोडर्स में स्थानों में सुरक्षाएं हैं। * कक्षाओं को बाहर rt.jar (रनटाइम जार) से लोड नहीं किया जा सकता है।
  • इसके अतिरिक्त, सुरक्षा नीतियों को यह सुनिश्चित करने के लिए रखा जा सकता है कि विभिन्न स्रोतों से लोड की गई कक्षाएं केवल कुछ निश्चित कार्यों को करने के लिए प्रतिबंधित हैं - सबसे स्पष्ट उदाहरण एप्लेट्स का है। जावा सुरक्षा नीति मॉडल द्वारा एप्पल को फ़ाइल सिस्टम को पढ़ने या लिखने से बाध्य किया जाता है; हस्ताक्षरित एप्लेट कुछ अनुमतियों के लिए अनुरोध कर सकते हैं।
  • JARs पर भी हस्ताक्षर किए जा सकते हैं, और इन हस्ताक्षरों को लोड होने पर रनटाइम पर सत्यापित किया जा सकता है।
  • पैकेजों को भी सुनिश्चित किया जा सकता है कि वे एक ही कोडसोर्स से आते हैं। यह हमलावर को कक्षाओं को आपके पैकेज में रखने से रोकता है, लेकिन 'दुर्भावनापूर्ण' संचालन करने में सक्षम है।

आप जानना चाहते हैं क्यों इस सब से महत्वपूर्ण है, एक JDBC ड्राइवर classpath कि एक दूरस्थ तीसरी पार्टी के लिए सभी SQL कथन और उनके परिणामों को प्रसारित करने में सक्षम है में इंजेक्शन कल्पना। खैर, मुझे लगता है कि अब आप तस्वीर प्राप्त कर सकते हैं।

+0

यह सटीक अवधारणा अभी दिमाग में आई, और मैं इसका उल्लेख करने जा रहा था। लेकिन, मेरे पास इस बात का लाभ उठाने के लिए मेरे सिर को लपेटने का कठिन समय है ... क्या आप एक दुर्भावनापूर्ण जार इंजेक्ट करने के तरीके का उपयोग कर सकते हैं? एक वेब पेज देखकर, या एक छवि को संसाधित करके बहुत सारे अतिप्रवाह शोषण किए जाते हैं।हो सकता है कि मैं सिर्फ यह सब गलत सोच रहा हूं, और यह भेद्यता की एक पूरी दुनिया है ... – wuntee

+0

ठीक है, आखिरी कुछ वाक्यों में यह शामिल है। चूंकि जावा आमतौर पर उद्योग के उद्यम पक्ष पर, सर्वर खेतों में उपयोग किया जाता है, इसलिए आपको आमतौर पर इसे तैयार करने के लिए एक इच्छुक सिस्टम व्यवस्थापक या एक समझौता सर्वर की आवश्यकता होती है। मैं दूसरे परिदृश्य पर विचार करूंगा क्योंकि यह अधिक व्यावहारिक है। रूट एक्सेस शोषण या इसी तरह के एक सर्वर (इंटरनेट का सामना करना) की कल्पना करें जो किसी हमलावर को किसी भी संभावित स्थान पर फ़ाइलों को संशोधित करने की अनुमति देता है। ऐसा हमलावर अपने दुर्भावनापूर्ण पेलोड को अपलोड करने में सक्षम होगा, javax.sql। * नेमस्पेस (contd।) ..... –

+0

यदि वह अपनी खुद की विविधता के साथ PreparedStatement.class को प्रतिस्थापित करने में सक्षम था, और इसे लोड किया गया rt.jar में से पहले, तो यह वास्तव में अपनी कल्पना के लिए छोड़ दिया गया है कि यदि ऐसा सुरक्षा छेद मौजूद है तो क्या संभव है। वह एप्लिकेशन सर्वर और डेटाबेस को आगे और आगे बहने वाले सभी डेटा रिकॉर्ड कर सकता है, और संभवतः इसे समय-समय पर बाहरी सर्वर पर अपलोड कर सकता है। शुक्र है, जगह में सुरक्षा शायद आज के लिए काफी अच्छी है। –

संबंधित मुद्दे