
हार्डवेयर बैकडोर x86 CPUs में
: x86 CPUs में हार्डवेयर बैकडोर
github.com/xoreaxeaxeax/rosenbridge // domas // @xoreaxeaxeax
project:rosenbridge कुछ डेस्कटॉप, लैपटॉप और एम्बेडेड x86 प्रोसेसर में एक हार्डवेयर बैकडोर का खुलासा करता है।
यह बैकडोर रिंग 3 (यूज़रलैंड) कोड को प्रोसेसर सुरक्षा को दरकिनार करके रिंग 0 (कर्नेल) डेटा को स्वतंत्र रूप से पढ़ने और लिखने की अनुमति देता है। जबकि बैकडोर आमतौर पर अक्षम होता है (इसे सक्षम करने के लिए रिंग 0 निष्पादन की आवश्यकता होती है), हमने पाया है कि यह कुछ सिस्टमों पर डिफ़ॉल्ट रूप से सक्षम है।
इस रिपॉजिटरी में आपके प्रोसेसर के प्रभावित होने की जाँच करने, बैकडोर बंद करने (यदि मौजूद हो), और बैकडोर की खोज और विश्लेषण के लिए उपयोग किए गए शोध और उपकरण शामिल हैं।
rosenbridge बैकडोर एक छोटा, गैर-x86 कोर है जो CPU में मुख्य x86 कोर के साथ एम्बेडेड होता है। यह एक मॉडल-विशिष्ट-रजिस्टर नियंत्रण बिट द्वारा सक्षम किया जाता है, और फिर एक लॉन्च-इंस्ट्रक्शन से टॉगल किया जाता है। एम्बेडेड कोर को तब एक विशेष रूप से स्वरूपित x86 निर्देश में लिपटे कमांड दिए जाते हैं। कोर इन कमांडों को निष्पादित करता है (जिन्हें हम 'डीपली एम्बेडेड इंस्ट्रक्शन सेट' कहते हैं), सभी मेमोरी सुरक्षा और विशेषाधिकार जांचों को दरकिनार करते हुए।
जबकि बैकडोर को सक्रिय करने के लिए कर्नेल-स्तरीय पहुँच की आवश्यकता होनी चाहिए, यह कुछ सिस्टमों पर डिफ़ॉल्ट रूप से सक्षम पाया गया है, जो किसी भी अनप्रिविलेज्ड कोड को कर्नेल को संशोधित करने की अनुमति देता है।
rosenbridge बैकडोर x86 CPUs पर अन्य सार्वजनिक रूप से ज्ञात कोप्रोसेसरों, जैसे कि मैनेजमेंट इंजन या प्लेटफ़ॉर्म सिक्योरिटी प्रोसेसर, से पूरी तरह अलग है; यह किसी भी ज्ञात कोप्रोसेसर की तुलना में अधिक गहराई से एम्बेडेड है, जिसकी पहुँच न केवल CPU की सभी मेमोरी तक है, बल्कि इसकी रजिस्टर फ़ाइल और निष्पादन पाइपलाइन तक भी है।
ऐसा माना जाता है कि केवल VIA C3 CPUs इस समस्या से प्रभावित हैं। C-श्रृंखला प्रोसेसर औद्योगिक ऑटोमेशन, पॉइंट-ऑफ-सेल, ATM और हेल्थकेयर हार्डवेयर के साथ-साथ विभिन्न उपभोक्ता डेस्कटॉप और लैपटॉप कंप्यूटरों के लिए विपणन किए जाते हैं।
इस भेद्यता का दायरा सीमित है; C3 के बाद की पीढ़ियों के CPUs में अब यह सुविधा नहीं है।
यह कार्य एक केस स्टडी और विचार प्रयोग के रूप में जारी किया गया है, जो यह दर्शाता है कि तेजी से जटिल प्रोसेसरों में बैकडोर कैसे उत्पन्न हो सकते हैं, और शोधकर्ता और अंतिम-उपयोगकर्ता ऐसी सुविधाओं की पहचान कैसे कर सकते हैं। यहाँ दिए गए उपकरण और शोध गहरे प्रोसेसर भेद्यता अनुसंधान के लिए प्रारंभिक बिंदु प्रदान करते हैं।
यह जाँचने के लिए कि आपका CPU प्रभावित है या नहीं:
git clone https://github.com/xoreaxeaxeax/rosenbridge
cd rosenbridge/util
make
sudo modprobe msr
sudo ./bin/check
प्रदान की गई उपयोगिता को बेयरमेटल (वर्चुअल-मशीन में नहीं) पर चलाया जाना चाहिए, और यह अल्फा अवस्था में है। यह बैकडोर न रखने वाले सिस्टमों को क्रैश, पैनिक या हैंग कर सकता है।
यहाँ प्रदान की गई उपयोगिताएँ एक विशिष्ट प्रोसेसर परिवार और कोर के लिए डिज़ाइन की गई हैं; दुर्भाग्य से, यदि बैकडोर को शोधित रूप से थोड़ा भी संशोधित किया गया है तो उपकरण इसे खोजने में विफल रहेंगे।
कुछ सिस्टमों में बैकडोर डिफ़ॉल्ट रूप से सक्षम होता है, जो अनप्रिविलेज्ड कोड को बिना अनुमति के कर्नेल-स्तरीय पहुँच प्राप्त करने की अनुमति देता है। यदि 'अपने CPU की जाँच करना' में दिए गए चरण संकेत देते हैं कि आपका CPU कमजोर है, तो आप बूट प्रक्रिया में जल्दी बैकडोर बंद करने के लिए एक स्क्रिप्ट स्थापित कर सकते हैं:
cd fix
make
sudo make install
reboot
ध्यान दें कि इसके बावजूद, कर्नेल-स्तरीय पहुँच वाला हमलावर बैकडोर को फिर से सक्षम कर सकता है। यह स्क्रिप्ट बूट प्रक्रिया के दौरान समस्या को ठीक करने की रूपरेखा के रूप में प्रदान की गई है, लेकिन विभिन्न सिस्टमों के लिए अनुकूलन की आवश्यकता होगी।
इस शोध में अज्ञात निर्देशों को उजागर करने के लिए sandsifter उपयोगिता का व्यापक रूप से उपयोग किया जाता है।
asm
डीपली एम्बेडेड इंस्ट्रक्शन सेट (DEIS) के लिए एक असेंबलर। यह कस्टम rosenbridge असेंबली में लिखे गए प्रोग्रामों को x86 निर्देशों में परिवर्तित करता है, जो लॉन्च-इंस्ट्रक्शन के बाद निष्पादित होने पर, छिपे हुए CPU कोर को कमांड भेजेंगे।
esc
rosenbridge बैकडोर का उपयोग करके विशेषाधिकार वृद्धि (privilege escalation) का एक प्रूफ-ऑफ-कॉन्सेप्ट।
fix
प्रभावित सिस्टमों पर भेद्यता को बंद करने के लिए एक मोटा खाका, जहाँ तक मॉडल-विशिष्ट-रजिस्टर अपडेट के माध्यम से संभव हो।
fuzz
x86 और rosenbridge कोर दोनों को फ़ज़ करने के लिए उपयोगिताओं का एक संग्रह, ताकि अज्ञात लॉन्च-इंस्ट्रक्शन और ब्रिज-इंस्ट्रक्शन को अलग किया जा सके, और rosenbridge कोर के निर्देश प्रारूप को हल किया जा सके।
deis
फ़ज़र जो छिपे हुए CPU कोर के प्रभावों और क्षमताओं का पता लगाने के लिए उपयोग किया जाता है।
exit
ऐसा माना जाता है कि कुछ प्रोसेसरों पर, DEIS अनुक्रम के अंत में x86 कोर पर वापस स्विच करने के लिए एक निकास अनुक्रम की आवश्यकता होती है। इस निर्देशिका में शोध के शुरुआती चरणों में निकास अनुक्रम की खोज के लिए उपयोग की जाने वाली उपयोगिताएँ हैं, लेकिन जब एक प्रोसेसर पाया गया जिसे ऐसे किसी अनुक्रम की आवश्यकता नहीं थी, तो इसे छोड़ दिया गया।
manager
कार्यकर्ताओं के नेटवर्क में वितरित फ़ज़िंग कार्यों की निगरानी और प्रबंधन के लिए डिज़ाइन की गई पायथन उपयोगिताओं का एक संग्रह।
wrap
sandsifter फ़ज़र का एक स्ट्रिप्ड-डाउन संस्करण, जो ब्रिज-इंस्ट्रक्शन की पहचान करने के लिए उपयोग किया जाता है जो x86 कोर से छिपे हुए rosenbridge कोर तक कमांड भेजेगा।
kern
फ़ज़्ड DEIS निर्देशों के कारण हुए परिवर्तनों के लिए कर्नेल मेमोरी और रजिस्टरों की निगरानी के लिए उपयोग की जाने वाली सहायक उपयोगिताओं का एक संग्रह।
lock
rosenbridge बैकडोर को लॉक या अनलॉक करने के लिए उपयोगिताएँ।
proc
DEIS निर्देश व्यवहारों के वर्गों की पहचान करने के लिए फ़ज़िंग लॉग से पैटर्न पहचानने का एक उपकरण।
test
शोध में शुरुआती उपयोग किया गया एक उपकरण, जो ज्ञात RISC निर्देशों को निष्पादित करके छिपे हुए कोर की वास्तुकला की पहचान करने का प्रयास करता है।
util
एक अल्फा-अवस्था का उपकरण जो यह पता लगाता है कि कोई प्रोसेसर rosenbridge से प्रभावित है या नहीं।
(TODO: श्वेतपत्र का लिंक)
(TODO: स्लाइड्स का लिंक)
इस कार्य में प्रस्तुत विवरण और निहितार्थ वर्णित शोध से प्राप्त लेखकों के अनुमान और राय हैं। यह शोध वर्णित CPUs पर एक कथित सुरक्षा भेद्यता की पहचान और सुधार के उद्देश्य से किया और प्रदान किया गया है। VIA प्रोसेसर अपनी कम बिजली खपत और एम्बेडेड डिज़ाइनों में उत्कृष्टता के लिए प्रसिद्ध हैं; हमारा मानना है कि वर्णित कार्यक्षमता एम्बेडेड बाजार के लिए एक उपयोगी सुविधा के रूप में सद्भावना से बनाई गई थी, और प्रोसेसर की कुछ प्रारंभिक पीढ़ियों पर अनजाने में सक्षम रह गई थी। कोई दुर्भावनापूर्ण इरादा निहित नहीं है।
project:rosenbridge क्रिस्टोफर डोमास (@xoreaxeaxeax) का एक शोध प्रयास है।