2011-01-08 8 views
11

कई दृष्टिकोण जब यह ठेठ CPU पर अविश्वस्त कोड चलाने के बारे में चला जाता है के होते हैं: सैंडबॉक्स, नकली-जड़ें, वर्चुअलाइजेशन ...अविश्वसनीय जीपीजीपीयू कोड (ओपनसीएल आदि) - क्या यह सुरक्षित है? क्या जोखिम है?

क्या अविश्वस्त कोड के बारे में GPGPU (OpenCL, CUDA या पहले से ही एक संकलित) के लिए?

ग्राफिक्स कार्ड पर कि स्मृति मान लिया जाये कि ऐसी थर्ड पार्टी अविश्वस्त कोड चलाने से पहले मंजूरी दे दी है,

  • किसी भी सुरक्षा जोखिम देखते हैं?
  • किस प्रकार के जोखिम हैं?
  • उन्हें रोकने के लिए कोई तरीका?
    • सैंडबॉक्सिंग संभव/gpgpu पर उपलब्ध है?
    • शायद द्विआधारी उपकरण?
    • अन्य तकनीकें?

पीएस मुझे हाइट-स्तरीय gpgpu प्रोग्रामिंग भाषा सुरक्षा के बजाय gpu बाइनरी कोड स्तर सुरक्षा में अधिक रूचि है (लेकिन उन समाधानों का भी स्वागत है)। मेरा मतलब यह है कि जीपीयू ऑपकोड (ए.के.ए. मशीन कोड) के संदर्भ स्वागत हैं।

+0

उत्तर के लिए धन्यवाद नव। मान लीजिए कि मैं कम्प्यूटेशंस के लिए अलग जीपीयू कार्ड का उपयोग करूंगा (उदाहरण के लिए पुरानी टेस्ला ...)। अविश्वसनीय कोड के ऐसे निष्पादन कैसे सुरक्षित करें? –

उत्तर

2

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

+0

ठीक है, तो मान लीजिए कि हमारे पास सीपीयू प्रसंस्करण के लिए एक अलग कार्ड है। तब क्या जोखिम हैं? आपने "किसी भी सी प्रोग्राम के समान ही लिखा है", वास्तव में ... "सी" प्रोग्राम आसानी से "सिस्टम()" निष्पादित कर सकता है, उपर्युक्त मामले में क्या हो सकता है? –

2

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

माना जाता है कि, एएमडी की नई जीपीयू श्रृंखला में कुछ स्मृति सुरक्षा विशेषताएं हैं, लेकिन मुझे संदेह है कि इस समय उनका उपयोग किया जाता है। वर्तमान जीन हार्डवेयर (GeForce 4xx +, राडेन 6xxx +) के साथ जीपीयू मल्टीप्रोसेसरों को कई सेगमेंट में विभाजित करना संभव है, लेकिन यह वास्तविक समय-कटा हुआ, प्रीमिटेड मल्टीटास्किंग के समान नहीं है। ;)

+0

असल में, एनवीआईडीआईए के जीपीयू में कम से कम 8000 श्रृंखला से मेमोरी सुरक्षा (एमएमयू के साथ) है। मुझे अति के बारे में पता नहीं है। उदाहरण के लिए, GPU कोड का उपयोग कर उपयोगकर्ता स्पेस प्रक्रिया से विशेषाधिकार वृद्धि को जन्म देना संभव नहीं होना चाहिए। – wump

+0

wump: क्या आप निश्चित हैं? चूंकि ऐसा लगता है कि कोई स्मृति सुरक्षा नहीं है। आपके आवंटित मेमोरी बफर के बाहर लिखने से मेजबान सिस्टम क्रैश (जी 80/जीटी 200 पर, जीएफ 100 पर परीक्षण नहीं किया गया है) सहित सभी प्रकार की विषम चीजें हो सकती हैं। स्मृति की रक्षा के लिए निश्चित रूप से कोई MMU सक्रिय नहीं है, भले ही यह मौजूद हो। – dietr

+0

दरअसल, आवंटित मेमोरी बफर के बाहर लिखकर GPU को क्रैश करना संभव है। यदि यह वही CPU है जो प्रतिपादन के लिए उपयोग किया जाता है, तो आपका सिस्टम क्रैश हो जाएगा। मैंने हमेशा यह माना है कि यह ड्राइवर में कीड़े के कारण है।एमएमयू यद्यपि वहां सक्रिय है और सक्रिय है, और किसी प्रक्रिया को कुछ अन्य प्रक्रिया 'मेमोरी स्पेस में लिखने से रोकता है। मैं * सोचता हूं * यदि आपके पास एक अलग GPU है तो इस तरह से आपके सिस्टम को क्रैश करना संभव नहीं है। – wump

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