2011-12-18 14 views
5

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

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

मुझे नहीं पता कि कितनी भाषाएं "सैंडबॉक्स" जैसी अवधारणाओं का प्रयास करती हैं, आदि। मैं कंप्यूटर सुरक्षा की इस रोचक दिशा के बारे में जानने के लिए कुछ पॉइंटर्स ढूंढ रहा हूं।

+0

यह इतना नहीं है रनटाइम के रूप में भाषा की सुविधा। जेवीएम या सीएलआर पर चल रहे कुछ भी उतना ही काम करने जा रहा है। ब्राउज़र पृष्ठ में चल रहे जावास्क्रिप्ट भी अविश्वसनीय है, हालांकि ब्राउजर ब्राउज़र के कार्यान्वयन में विश्वसनीय जावास्क्रिप्ट का उपयोग कर रहा है। Google NaCl अच्छी तरह से सैंडबॉक्स सी ++, और यूनिक्स पर आप "क्रोट जेल" बना सकते हैं। –

उत्तर

4

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

+1

वाह, यह वाकई दिलचस्प है – Gravity

4

E programming languagecapability security model पर आधारित है जिसमें ऑब्जेक्ट्स तक पहुंच संभवतः विभिन्न प्रणालियों पर वितरित की जाती है, केवल एक प्रोग्राम को प्रबंधित करने के लिए स्पष्ट "क्षमताओं" के माध्यम से उपलब्ध है। कोड के एक टुकड़े का एकमात्र विशेषाधिकार अधिकारों के माध्यम से अपने "निर्माता" द्वारा तत्काल होने पर अधिकारों के माध्यम से पारित अधिकार है। विचार को कोड के टुकड़ों को विशेषाधिकार देने के लिए powerbox shell के लिए विचार है।

क्या एक छोटे से आश्चर्य की बात है कि इस Erlangसंगामिति पुरातन के समान है - किसी अन्य प्रक्रिया द्वारा विशेषाधिकार देने संवाद स्थापित करने, जिसका अर्थ है - एक Erlang प्रक्रिया संपर्क करने की सुविधा प्रक्रिया के पीआईडी ​​जानने की आवश्यकता है पिड। (बेशक, Erlang भीregistered processes है, जो नाम से संदर्भित किया जा सकता है Erlang भी दूरस्थ प्रणाली पहुँच के लिए एक simple cookie scheme का उपयोग करता है, और अंतर्निहित फ़ाइल आईओ दूरस्थ नोड्स पर आदेशों को क्रियान्वित करने के लिए उपयोग नीचे बंद नहीं कर रहे हैं। और,। Erlang minus कुछ विशेषताएं आसानी से एक अविश्वसनीय sandboxed- निष्पादन वातावरण हो सकता है, लेकिन मुझे नहीं पता कि उन सुविधाओं को हटाने के लिए कितना काम करना होगा।)

Ruby also has a Taint environment, Perl's Taint environment as described by yshavit के समान।

क्या मैं संभावित रूप से दुर्भावनापूर्ण कोड निष्पादित करने के लिए इनमें से किसी भी सिस्टम पर भरोसा करता हूं? शायद ऩही।

का उपयोग करके अविश्वसनीय कोड निष्पादित करने के लिए codepad.org द्वारा निर्मित वातावरण हैं। वे भी उपयोगी हैं, लेकिन मुझे यकीन नहीं है कि मैं उन्हें पर भरोसा करता हूं।मैं और अधिक की तरह QEMU+KVM/VMWare/Xen अधिक, या OpenVZ/vServers, या एक mandatory access control उपकरण कुछ भरोसा चाहते हैं इस तरह के AppArmor, SELinux, TOMOYO, या SMACK के रूप में। (मैंने ऐपअर्मर पर एक दशक से अधिक समय तक काम किया है, इसलिए मैं कई लोगों के लिए एक समाधान के रूप में इसके प्रति थोड़ा पक्षपात कर रहा हूं। अन्य अच्छे उपकरण हैं जो विभिन्न तैनाती के लिए अधिक समझ में आते हैं।)

+0

बहुत सारी जमीन को कवर करने का उत्तर होने के लिए स्वीकृत। – Gravity

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