2010-10-25 16 views
8

दुर्भावनापूर्ण गतिविधि से अपने सर्वर की रक्षा कैसे जब अविश्वस्त कोड को स्वीकार करने और अपलोड क्रियान्वित कर सकते हैं से सर्वर को सुरक्षित करने के?सैंडबॉक्स JVM अविश्वस्त स्रोतों

उपयोगकर्ता मेरे इंटरफ़ेस को लागू करने और डेटा देने, कुछ गणना करने और डेटा वापस करने में सक्षम होना चाहिए। कोई I/O संचालन आवश्यक नहीं है और निश्चित रूप से कोई थ्रेड/प्रक्रिया हेरफेर या अन्य टमफूलरी नहीं है।

java.policy फ़ाइल का उपयोग करना सब कुछ अस्वीकार करना संभव है (कुछ भी नहीं देकर)।

$ cat test.policy 
grant { 
}; 

इस नीति फ़ाइल का उपयोग करके, संचालन न किए गए संचालन सुरक्षा अपवाद का कारण बनेंगे।

$ cat Print.java 
public class Print { 
    public static void main(String a[]) throws Exception { 
     System.out.println(System.getProperty("os.name")); 
    } 
} 

$ javac Print.java 
$ java -Djava.security.manager -Djava.security.policy==test.policy Print 
Exception in thread "main" java.security.AccessControlException: 
    access denied (java.util.PropertyPermission os.name read) 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) 
    at java.security.AccessController.checkPermission(AccessController.java:546) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1285) 
    at java.lang.System.getProperty(System.java:650) 
    at Print.main(Print.java:3) 

क्या यह मूर्खतापूर्ण है? क्या मुझे अविश्वसनीय स्रोतों से अपने सर्वर पर्यावरण को सुरक्षित करने के लिए और कुछ करने की आवश्यकता है?

उत्तर

10

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

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

मुझे लगता है कि कम से कम आप, ओएस स्तर, अनुमतियाँ, आदि पर कुछ करना चाहिए था सर्वर प्रक्रिया को नियंत्रित करने के लिए। क्षमा करें, मैं बहुत अच्छा सुझाव वहाँ की जरूरत नहीं है, लेकिन मैं सिर्फ कह रहा है कि नहीं, तुम बिल्कुल JVM Sandbox पर सर्वर पर सुरक्षा के लिए भरोसा नहीं कर सकते।

+0

अच्छा लगता है। लिनक्स वीएम में गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में भी निष्पादित किए जाने पर कैसे? – Synesso

+1

मेरे लिए अच्छा लगता है, लेकिन मैं इसके बारे में ज्यादा अधिकार के साथ बात नहीं कर सकता। मुझे पता है कि पूरी दुनिया के खिलाफ जब अकेले जेवीएम सुरक्षा नाजुक है। –