लिनक्स कर्नेल "रेटपॉलिन" सक्षम है या नहीं, कैसे जांचें?


17

"स्पेक्टर" सुरक्षा भेद्यता के लिए, "रेटपॉलिन" को जोखिम को कम करने के लिए एक समाधान के रूप में पेश किया गया था। हालाँकि, मैंने एक पोस्ट पढ़ी है जिसमें उल्लेख किया गया है:

यदि आप बिना कर्नेल का निर्माण करते हैं CONFIG_RETPOLINE, तो आप रेटपॉलिन के साथ मॉड्यूल का निर्माण नहीं कर सकते हैं और फिर उन्हें लोड करने की उम्मीद कर सकते हैं - क्योंकि थंक प्रतीकों का निर्यात नहीं किया जाता है।

यदि आप रेटपोलिन के साथ कर्नेल का निर्माण करते हैं, तो आप उन मॉड्यूल्स को सफलतापूर्वक लोड कर सकते हैं जो रेटपोलिन के साथ नहीं बने हैं। ( स्रोत )

क्या कर्नेल "रेटपॉलिन" सक्षम है या नहीं यह जांचने के लिए एक आसान और सामान्य / सामान्य / एकीकृत तरीका है? मैं ऐसा करना चाहता हूं ताकि मेरा इंस्टॉलर स्थापित किए जाने वाले कर्नेल मॉड्यूल के उचित निर्माण का उपयोग कर सके।

जवाबों:


21

यदि आप मेनलाइन कर्नेल, या अधिकांश प्रमुख वितरण कर्नेल का उपयोग कर रहे हैं, तो पूर्ण रीटोलिन समर्थन की जांच करने का सबसे अच्छा तरीका है ( यानी कर्नेल को कॉन्फ़िगर किया CONFIG_RETPOLINEगया था, और एक रेट्पोलिन-सक्षम कंपाइलर के साथ बनाया गया था) यह पूर्ण जेनेरिक रेटपोलिन देखने के लिए है में ” /sys/devices/system/cpu/vulnerabilities/spectre_v2। मेरे सिस्टम पर:

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW

यदि आप अधिक व्यापक परीक्षण चाहते हैं, तो spectre_v2सिस्टरी फाइल के बिना गुठली पर रेटोलाइन का पता लगाने के लिए , spectre-meltdown-checkerचीजों की जांच कैसे की जाती है।


2
अन्य मेल्टडाउन / दर्शक से संबंधित कमजोरियों के लिए भी जाँच करें, चलाएं $ grep . /sys/devices/system/cpu/vulnerabilities/*, जो ग्रेग क्रोहा-हार्टमैन के ब्लॉग में सुझाया गया है ।
एलेक्स वोंग

1
धन्यवाद @ एलेक्स; मैं विशिष्ट प्रश्न का उत्तर दे रहा था, लेकिन यह उपयोगी है - हालांकि मैं head /sys/devices/system/cpu/vulnerabilities/*खुद को पसंद करता हूं ;-)। वर्तमान में यह मेल्टडाउन / स्पेक्टर कमजोरियों को कवर करता है, लेकिन इसी तरह की प्रकृति की भविष्य की कमजोरियों को भी कवर करना चाहिए (नाम स्थान उद्देश्यपूर्ण रूप से सामान्य है)।
स्टीफन किट

@StephenKitt हाँ, headएक अच्छे स्वरूपित आउटपुट देता है।
एलेक्स वोंग

4

स्टीफन किट का जवाब इस विशिष्ट मामले में अधिक व्यापक है, क्योंकि रेटपोलिन समर्थन को नए संकलक संस्करण की भी आवश्यकता है।

लेकिन सामान्य स्थिति में, अधिकांश वितरणों में कर्नेल कॉन्फ़िगरेशन फ़ाइल निम्न स्थानों में से एक में उपलब्ध होती है:

  • /boot/config-4.xx.xx-...
  • /proc/config.gz

तो आप बस कर सकते हैं zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz


4
मैं अंदर घुसने के खिलाफ सलाह देता हूं /boot/config*, क्योंकि यह CONFIG_RETPOLINEएक कर्नेल छवि में मिल सकता है जो स्थापित है, लेकिन वर्तमान में नहीं चल रहा है, सुरक्षा की झूठी भावना दे रहा है। जांच /proc/config.gzया /sys/...सुरक्षित है, लेकिन कई लिनक्स वितरण बिना कर्नेल को संकलित करते हैं /proc/config.gz
अंक

क्या आप तर्क को थोड़ा और बेहतर बना सकते हैं और वर्तमान में चल रहे कर्नेल को प्राप्त करने के लिए uname (या समतुल्य syscall) का उपयोग कर सकते हैं और फिर उस विशेष / बूट / कॉन्फिग फ़ाइल की जांच कर सकते हैं?
एडम लुचेंजब्रॉवर्स

@ /boot/config-$(uname -r)फिर, क्या?
मूरू

2
उपयोग करना /boot/config-$(uname -r)मूर्ख-प्रूफ नहीं है: यह अभी भी गारंटी नहीं देता है कि कॉन्फ़िगरेशन चल रहे कर्नेल से मेल खाता है। uname -rजब तक कर्नेल एबीआई नहीं बदलता तब तक डिस्ट्रो कर्नेल को कई संस्करणों में रखा जाता है।
स्टीफन किट

आपके उत्तर के लिए आप सभी का धन्यवाद। आपका उत्तर और संदेश सहायक है।
वीशान यांग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.