कैसे जाँच करें कि KPTI मेरे Ubuntu पर सक्षम है?


64

वर्तमान मेल्टडाउन इंटेल प्रोसेसर भेद्यता वर्तमान में पेज टेबल आइसोलेशन सक्षम होने से सुधरी है। एक सवाल है कि इसे कैसे बंद किया जाए: इंटेल सीपीयू सुरक्षा छेद पैच के कारण खोए हुए प्रदर्शन को वापस पाने के लिए पेज टेबल अलगाव को कैसे निष्क्रिय किया जाए?

मेरा सवाल इसके विपरीत है: क्या एक रनिंग सिस्टम पर जांच करने का एक तरीका है कि क्या पीटीआई तंत्र सिस्टम पर प्रभावी है और इस तरह सिस्टम संरक्षित है? मैं विशेष रूप से देख रहा हूँ cat /proc/somethingया cat /sys/something, कर्नेल संस्करण या कॉन्फ़िग पैरामीटर या लाइक के लिए जाँच नहीं कर रहा हूँ ।

जवाबों:


4

आप सभी उपलब्ध उपशमन (न केवल पीटीआई के लिए, बल्कि अन्य कमजोरियों के लिए) देखने के लिए नीचे कमांड चला सकते हैं:

$ cat /sys/devices/system/cpu/vulnerabilities/*
Mitigation: PTE Inversion
Mitigation: Clear CPU buffers; SMT vulnerable
Mitigation: PTI
Mitigation: Speculative Store Bypass disabled via prctl and seccomp
Mitigation: usercopy/swapgs barriers and __user pointer sanitization
Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling

विस्मयकारी उत्तर - संक्षिप्त और बिंदु तक। धन्यवाद।
मार्टिन विसेनी

63
  • के रूप में गिरी config में CONFIG_PAGE_TABLE_ISOLATION Grepping सुझाव Raniz के डेस्कटॉप Ubuntu पर मदद नहीं करता है, लेकिन बादल उदाहरणों पर मदद मिल सकती है:

    grep CONFIG_PAGE_TABLE_ISOLATION=y /boot/config-`uname -r` && \
    echo "patched :)" || echo "unpatched :("
    

  • आप के साथ जांच कर सकते हैं /proc/cpuinfoके रूप में JonasCz सुझाव :

    grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo && echo "patched :)" \
    || echo "unpatched :("
    

  • या dmesg( जेसन Creighton के लिए धन्यवाद ) से:

    dmesg | grep -q "Kernel/User page tables isolation: enabled" \
    && echo "patched :)" || echo "unpatched :("
    

  • आप मेल्टडाउन का पता लगाने के लिए राफेल कार्वाल्हो से परीक्षण कार्यक्रम संकलित कर सकते हैं :

    sudo apt-get install git build-essential
    cd /tmp
    git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git
    cd Am-I-affected-by-Meltdown
    make
    sudo sh -c "echo 0  > /proc/sys/kernel/kptr_restrict"
    ./meltdown-checker
    

पैच सिस्टम पर इसे आउटपुट के साथ समाप्त होना चाहिए

...
so far so good (i.e. meltdown safe) ...

System not affected (take it with a grain of salt though as false negative
may be reported for specific environments; Please consider running it once again).

पैच किए गए सिस्टम पर इसे निम्नलिखित दिखाना चाहिए:

Spectre and Meltdown mitigation detection tool v0.27

Checking for vulnerabilities against live running kernel Linux 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64
...
CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Xenial पर 4.4.0-108-जेनेरिक इंस्टॉल न करें! यह बूट / रिबूट / शटडाउन / कार्यशीलता को निलंबित कर देता है !

4.4.0-109-जेनेरिक स्थापित करें ( विवरण के लिए USN-3522-3 देखें)!


जैसा कि रॉबी बसाक ने पहले ही लिखा था , उबंटू में स्पेक्टर और मेल्टडाउन कमजोरियों की स्थिति के बारे में एक पृष्ठ है ।

इसके अलावा वहाँ हैं:


3
उबंटू के अपडेट्स जानुअरी 9 के लिए निर्धारित हैं। वे पहले उतर सकते हैं लेकिन मैं इस पर भरोसा नहीं करूंगा। insights.ubuntu.com/2018/01/04/…
Raniz

4
"Dmesg | grep आइसोलेशन" प्रकार के उत्तर इस के लिए बेहतर हैं, IMO। कुछ वितरण (कम से कम डेबियन खिंचाव, शायद अन्य) ने पीटीआई को अपने पुराने कर्नेल में पोर्ट किया, लेकिन cpu_insecure ध्वज को / proc / cpuinfo में नहीं। उन सिस्टमों पर, dmesg लॉग को देखना ही AFAICT की जाँच का एकमात्र तरीका है।
जेसन क्रेयटन

3
मुझे लगता है dmesg | grep isolation && echo "patched :)" || echo "unpatched :("कि सूचीबद्ध कमांड अनावश्यक रूप से खतरनाक है : यह नहीं दिखाता है कि वास्तव में किस लाइन का मिलान किया गया था, और यदि "आइसोलेशन" का यादृच्छिक अन्य उदाहरण मिलान किया गया था, तो "
पैच्ड

2
मैं दूसरे सुझाव ( /proc/cpuinfocpu_insecure के लिए तैयारी) के खिलाफ सुझाऊंगा। यदि आप एक स्क्रिप्ट में है कि डाल दिया और आप भविष्य जहां समस्या अपनी सूक्ष्म-संरचना में तय हो गई है में एक सीपीयू है, /proc/cpuinfoअब और नहीं कहेंगे cpu_insecureऔर अपनी स्क्रिप्ट विश्वास करेंगे गिरी है पैच न किया गया , भले ही यह है समझौता । मैं भी, तीसरे सुझाव के खिलाफ की सिफारिश करेंगे के रूप में यह भी संभावना है कि वहाँ शब्द हो सकता है isolationमें dmesgयह कर्नेल पेज तालिका अलगाव जिक्र किए बिना कुछ बिंदु पर उत्पादन।
ब्लबरडाइब्लूब

4
आगे की जांच पर, इन तीनों सुझावों को तोड़ा गया है। के लिए Grepping isolationदोनों Kernel/User page tables isolation: enabledऔर मैच होगा Kernel/User page tables isolation: disabled on command line
मार्क

18

निम्न आदेश चलाएँ:

dmesg | grep 'page tables isolation'

यदि यह सक्षम प्रदर्शित करता है, तो पीटीआई सक्षम है। यदि कुछ भी प्रदर्शित नहीं होता है या आप टर्मिनल में 'अक्षम' देखते हैं, तो पीटीआई अक्षम है। उबंटू ने अभी तक पैच प्रकाशित नहीं किया है, इसलिए यह कोई संदेश प्रदर्शित नहीं करेगा।


... या बाद में कर्नेल संदेशों ने कर्नेल लॉग बफर से बूटअप संदेशों को धकेल दिया है। यदि आपका कर्नेल कम-गंभीरता वाले सामान जैसे कि अजीब नेटवर्क पैकेट के लिए नोटिस करता है, तो बूट-टाइम संदेशों के लिए dmesgआउटपुट का हिस्सा नहीं होना आम है । देखें /var/log/kern.log*कि क्या यह बूट संदेशों के लिए काफी पीछे चला गया है। उबंटू बूट-टाइम dmesgआउटपुट रिकॉर्ड करने के लिए उपयोग किया जाता है /var/log/dmesg, लेकिन अब ऐसा नहीं लगता है।
पीटर कॉर्डेस

14.04 को, मुझे मिल गया dmesg: invalid option -- 'w'-Hभी अमान्य है। झंडे को
हटाकर

14.04 को /var/log/kern.log
eckes

12

आप जांच कर सकते हैं cat /proc/cpuinfo, अगर यह cpu_insecure"बग" के तहत रिपोर्ट करता है , तो पीटीआई सक्षम है।

यदि यह रिक्त है (या बस सूची नहीं है cpu_insecure), तो सबसे अधिक संभावना है कि आप एक कर्नेल चला रहे हैं जो अभी तक पैच नहीं किया गया है (उबंटू का नहीं), या आपके पास एक एएमडी प्रोसेसर है (जिसके लिए यह सक्षम नहीं होगा, क्योंकि वे 'कमजोर नहीं है)।

वर्तमान में सभी CPU को नवीनतम 4.15 कर्नेल में असुरक्षित माना जाता है


4.15 को अभी तक जनता के लिए जारी नहीं किया गया है
Aadil RF

यह है, यदि आप kern.org से नवीनतम रिलीज़ उम्मीदवार डाउनलोड करते हैं और इसे स्वयं संकलित करते हैं। @ मोहम्मदमहिल
जोनासकज

1
एक रिलीज उम्मीदवार एक रिलीज नहीं है।
रुस्लान

आपके द्वारा जोड़ा गया
nixpower

2
कर्नेल 4.14.11 cpu_insecureकिसी x86 सीपीयू के लिए सेट होगा ; 4.14.12 और नए केवल (इंटेल CPU के लिए यह सेट हो जाएगा लोगों को बहुत पुराना या बहुत आदिम संवेदनशील होना सहित दोनों यह सेट हो जाएगा, भले ही KPTI अक्षम
मार्क

8

मुझे आपके सिस्टम पर मेल्टडाउन / दर्शक कमजोरियों का परीक्षण करने के लिए यह महान श स्क्रिप्ट मिली:

https://github.com/speed47/spectre-meltdown-checker

स्क्रिप्ट आपके सिस्टम को ज्ञात Meltdown और स्पेक्टर पैच पर आपके सिस्टम को यह बताने के लिए जाँचती है कि क्या ये कमजोरियाँ अब आपके OS द्वारा कम कर दी गई हैं


2

आप देख सकते हैं /proc/config.gz के लिए CONFIG_PAGE_TABLE_ISOLATION=yजिसका अर्थ है कि गिरी KPTI साथ संकलित किया गया।

यह 4.14.11-1 पर चलने वाले मेरे पैक्ड आर्क लिनक्स सिस्टम पर है:

$ zgrep CONFIG_PAGE_TABLE_ISOLATION /proc/config.gz 
CONFIG_PAGE_TABLE_ISOLATION=y

3
दुर्भाग्य से, वर्तमान में चल रहे कर्नेल का विन्यास /proc/उबंटू कर्नेल में डिफ़ॉल्ट रूप से सक्षम नहीं है। इसके /boot/config-$( uname -r )बजाय (बहुत कम सुरुचिपूर्ण) वर्कअराउंड grepping है ।
ब्लबरडाइब्लूब

5
यह केवल आपको बताता है कि अगर कर्नेल KPTI के साथ संकलित किया गया था, यदि KPTI सक्रिय नहीं है (यह बूट समय पर बंद किया जा सकता है, और संभवतः रनटाइम पर)।
मार्क

यदि आपने कर्नेल कमांड लाइन मापदंडों के माध्यम से KPTI को स्पष्ट रूप से अक्षम कर दिया है, तो आपको यह जाँचने की आवश्यकता नहीं है कि यह सक्रिय है या नहीं।
रनिज

1

मेरे AWS Ubuntu 14.04.5 LTS EC2 उदाहरण पर, मैं भागा

grep CONFIG_PAGE_TABLE_ISOLATION /boot/config-$(uname -r)

यह कहना चाहिए:

CONFIG_PAGE_TABLE_ISOLATION=y

अद्यतन के लिए मैंने किया:

sudo apt-get update && sudo apt-get install linux-image-generic

मुझे लगता है कि यह भी ठीक है:

sudo apt-get update
sudo apt-get dist-upgrade

कर्नेल संस्करण की जांच करने के लिए:

uname -r

3.13.0-139-सामान्य या नए होने की आवश्यकता है ।


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