2016-09-16 4 views
5

आर serialize और unserialize कार्यों को एक मनमानी आर ऑब्जेक्ट को बाइट्स और बैक के वेक्टर में परिवर्तित करने के लिए प्रदान करता है।आर में सुरक्षित गैर-भरोसेमंद कच्चे वेक्टर सुरक्षित है?

मैं सूचना के अनसुलझे भागों पर विचार कर रहा हूं जो नेटवर्क के माध्यम से प्रेषित हो जाएंगे, जो (सिद्धांत में) किसी दुर्भावनापूर्ण उपयोगकर्ता द्वारा छेड़छाड़ की जा सकती है।

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

मैं एक बफर अतिप्रवाह या unserializing विकृत बाइट्स के मात्र तथ्य से आर सर्वर पर एक मनमाना मशीन कोड को क्रियान्वित करने के समान तरीके के बारे में चिंता। क्या किसी ने इस पर फ़ज़ परीक्षण देखा है/किया है?

मैं सुरक्षा विशेषज्ञ नहीं हूं और मेरे पास विश्लेषण करने का कोई आसान साधन नहीं है। लेकिन शायद किसी और ने किया?

उत्तर

4

मेरे ज्ञान के लिए आर कोडबेस की एक विस्तृत सुरक्षित कोड समीक्षा नहीं हुई है। उन लोगों के लिए जो सोचते हैं कि आदम की चिंता जरूरी नहीं है, यहां Python vulnerabilities की एक सूची है, जिनमें से कई (नियमित पायथन बनाम सीपीथॉन के लिए) वास्तव में बफर ओवरफ्लो हैं। R's list कम है और मुझे नहीं लगता कि बेस आर कोड सही होने के कारण यह कम है। (एक तरफ, एस-प्लस के लिए a singular vulnerability report भी है।) मैं पाइथन को इंगित करता हूं क्योंकि यह व्यापक रूप से उपयोग किया जाता है, सी-समर्थित व्याख्या पर्यावरण (ध्वनि परिचित?)।

एक त्वरित search on R Core's Bugzilla for `"overflow'" कुछ मुट्ठी भर मुद्दों को दिखाता है जिनमें से सभी भेद्यता/शोषण संबंधित नहीं लगते हैं।

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

मैं मानता हूं कि मेरे अनुभव बेस आर से आवेदन होने की संभावना अधिक है, जैसे कि आप एक सफल कोड निष्पादन या प्रक्रिया विशेषाधिकार वृद्धि के हमले की प्रक्रिया से अधिक का वर्णन कर रहे हैं। बेस आर के पास कोर सी रूटीन के शीर्ष पर memory management layer/interface है और आर कोर टीम valgrind के उपयोग में लगभग धार्मिक है। अब, valgrind सबकुछ पकड़ने वाला नहीं है (अगर ऐसा हुआ तो किसी भी सॉफ्टवेयर में कोई बफर ओवरफ्लो नहीं होगा) लेकिन इसका उपयोग यहां मेमोरी मैनेजमेंट के साथ संयुक्त है, इस संबंध में मुझे कुछ आराम मिलता है।

फिर भी अधिक 1,000 परिणामों आधार आर सी कोड पैदावार में strlen की तरह कुछ के लिए एक बहुत सरसरी खोज (यह भी यह आधार आर कोड में गैर n चचेरे भाई और बुनियादी स्ट्रिंग कार्यों के इन गैर n संस्करणों में कई के स्रोत हैं है है बफर ओवरफ्लो भेद्यता)। तो, क्या यह संभव है, हाँ। और गंभीरता आपके लिए क्या है? थोड़े समय में इस पर और अधिक।

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

सी/सी ++ - समर्थित आर पैकेज हैं जो उनके साथ ओपन सोर्स लाइब्रेरी की प्रतियां शामिल करते हैं। मेरी "स्पेयर टाइम" परियोजनाओं में से एक (जिसमें मेरे पास कभी भी अतिरिक्त समय नहीं है) उन्हें ट्रैक करना और यह देखना है कि इनमें शामिल पुस्तकालयों की तारीख कितनी पुरानी है। httuv एक उदाहरण है जहां उस पैकेज में स्रोत लाइब्रेरी में कमजोरियां हैं, लेकिन उन्हें आर के संपर्क में आने की संभावना नहीं है क्योंकि कोड के कमजोर हिस्से में कार्यक्षमता कुछ ऐसा नहीं है जो सीधे पैकेज एपीआई के माध्यम से उजागर हो। हालांकि, आपको इन पैकेजों के बारे में चिंतित होने की आवश्यकता है।

भी शामिल लाइब्रेरी स्रोत कोड पर निर्भरता के बिना, सी/सी ++ - समर्थित आर पैकेज संभावित स्मृति समस्याओं का एक निश्चित स्रोत हैं क्योंकि उनके लिए कोई सुरक्षित कोडिंग आवश्यकता नहीं है और वे स्मृति में हेरफेर करते हैं। आर कोर टीम पैकेजों का परीक्षण करने के लिए valgrind का उपयोग करने की अत्यधिक अनुशंसा करता है (यह R CMD check में एक विकल्प है जो ++ जीडी है) लेकिन यह लेखकों को मजबूत उदाहरण और परीक्षण लिखने पर भी निर्भर करता है जो स्पष्ट रूप से इस के लिए परीक्षण करने के लिए पर्याप्त कोड का प्रयोग करेंगे। अधिकांश पैकेज लेखकों (उदास, मुझे सहित) शायद ही कभी मेरे अनुभव में ऐसा करते हैं।

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

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

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

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

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

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

+0

यह सब कुछ मैं जानना चाहता था। उत्तम और आधिकारिक उत्तर के लिए बहुत बहुत धन्यवाद। यदि मेरे कस्टम प्रोटोकॉल को संदेशों को जेसन में अनुवाद करने की आवश्यकता नहीं है तो यह बहुत तेज़ है! ... –

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