Ubuntu'mda KPTI'nın etkin olup olmadığı nasıl kontrol edilir?


64

Geçerli Meltdown Intel işlemci güvenlik açığı şu anda sayfa tablosu yalıtımının etkinleştirilmesiyle giderilmiştir. Bunun nasıl kapatılacağı hakkında bir soru var: Intel CPU güvenlik boşluğu yaması nedeniyle kaybedilen performansı geri kazanmak için Sayfa Tablosu İzolasyonunu nasıl devre dışı bırakabilirim?

Sorumu tam tersi: PTI mekanizmasının sistemde etkili olup olmadığını ve böylece sistemin korunup korunmadığını kontrol etmenin bir yolu var mı? Özellikle çekirdek sürümünü veya config parametresini veya benzerlerini denetlemiyorum cat /proc/somethingveya cat /sys/somethingaramıyorum.

Yanıtlar:


4

Mevcut tüm azaltma işlemlerini görmek için aşağıdaki komutu çalıştırabilirsiniz (yalnızca PTI için değil, diğer güvenlik açıkları için):

$ 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

Müthiş cevap - kısa ve konuya. Teşekkür ederim.
Martin Vysny

63
  • Raniz'in önerdiği gibi CONFIG_PAGE_TABLE_ISOLATION öğesinde Grepping , masaüstü Ubuntu masaüstünde yardımcı olmaz, ancak bulut örneklerinde yardımcı olabilir:

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

  • Sen ile kontrol edebilirsiniz /proc/cpuinfoolarak JonasCz önerdi :

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

  • Ya da dmesg( Jason Creighton sayesinde ):

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

  • Meltdown tespiti için test programını Raphael Carvalho'den derleyebilirsiniz :

    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
    

yamalı sistemde çıktıyla bitmesi gerekir

...
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).

Yamalı sistemde aşağıdakileri göstermelidir:

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'e 4.4.0-108-generic yüklemeyin! Bu çizme / yeniden başlatma / kapatma kırar / işlevsellik askıya !

4.4.0-109-generic'i kurun ( detaylar için USN-3522-3'e bakınız)!


As Robie Başak zaten yazdım , orada ilgili bir sayfa Spectre ve Meltdown Ubuntu durumunu açıkları .

Ayrıca var:


3
Ubuntu için güncellemeler Januari 9 için planlanmıştır. Daha erken inebilirler ama buna güvenmezdim. insights.ubuntu.com/2018/01/04/…
Raniz

4
IMO'da "dmesg | grep isolation" tipi cevaplar tercih edilir. Bazı dağıtımlar (en azından Debian gerginliği, belki diğerleri) PTI'yi eski çekirdeğine taşıdı, ancak / proc / cpuinfo içindeki cpu_insecure bayrağını değil. Bu sistemlerde, dmesg loguna bakmak AFAICT'i kontrol etmenin tek yoludur.
Jason Creighton

3
Bence dmesg | grep isolation && echo "patched :)" || echo "unpatched :("listelenen komutun gereksiz yere tehlikeli olduğunu düşünüyorum : Bu, hangi çizginin gerçekte eşleştiğini göstermiyor ve rastgele başka bir "izolasyon" örneği eşleşirse "yamalı :)"
yazıyordu

2
İkinci öneri karşı cpu_insecure /proc/cpuinfoiçin grepping tavsiye ederim . Bunu bir betiğe koyarsanız ve sorunun mikro mimarisinde düzeldiği ileride bir CPU'nuz varsa, /proc/cpuinfoartık söyleyemez cpu_insecureve betiğiniz yamalı olsa bile çekirdeğin lekesiz olduğuna inanacaktır . O kelime olabileceğini çok olasıdır olarak ben de, üçüncü öneri karşı öneriyoruz içinde sayfa tablosu izolasyonunu çekirdek atıfta bulunmadan bir noktada çıkış. isolationdmesg
blubberdiblub

4
Daha fazla araştırma üzerine, bu önerilerin her üçü de bozuldu. İçin grepping isolationhem eşleşir Kernel/User page tables isolation: enabledve Kernel/User page tables isolation: disabled on command line.
Mark

18

Aşağıdaki komutu çalıştırın:

dmesg | grep 'page tables isolation'

Etkin görünüyorsa, PTI etkindir. Hiçbir şey gösterilmezse veya terminalde 'devre dışı bırakılmış' görürseniz, PTI devre dışı bırakılır. Ubuntu henüz düzeltme ekini yayınlamadı, bu yüzden herhangi bir mesaj göstermiyor.


... veya daha sonra çekirdek mesajları, önyükleme iletilerini çekirdek günlük arabelleğinden çıkardı. Çekirdeğiniz, garip ağ paketleri gibi düşük önem dereceli şeyler için bildirim yazdırıyorsa, önyükleme zamanı iletilerinin dmesgçıktının bir parçası olmaması yaygındır . /var/log/kern.log*Önyükleme iletilerini almak için yeterince geriye gidip gitmediğine bakın . Ubuntu önyükleme zamanı dmesgçıktısını kaydetmek için kullanılır /var/log/dmesg, ancak artık bunu yapmıyor gibi görünmektedir.
Peter Cordes

14.04'te anladım dmesg: invalid option -- 'w'. -Hayrıca geçersiz. Bayrakları kaldırmak, bu cevapta
wjandrea

/var/log/kern.log,
14.04

12

"Hatalar" altında cat /proc/cpuinforapor edip etmediğini kontrol edebilirsiniz cpu_insecure, sonra PTI etkindir.

Boşsa (ya da sadece listelenmiyorsa cpu_insecure), büyük olasılıkla henüz henüz eklenmemiş bir çekirdeği kullanıyorsunuz (Ubuntu'nun yapmadı) veya bir AMD işlemciniz var (bunun için bunlar önceden etkinleştirilmez çünkü savunmasız değilsin).

Şu anda tüm CPU'lar en son 4.15 çekirdeğinde savunmasız olarak değerlendirilmektedir .


4.15 henüz halka
açılmadı

En son sürüm adayını kernel.org adresinden indirip kendiniz derlerseniz . @Mohammedaadhil
JonasCz diyor Reinstate Monica

1
Bir sürüm adayı bir sürüm değildir.
Ruslan

Bağlantılı olduğunuz makale güncellendi
nixpower

2
Çekirdek 4.14.11, cpu_insecureherhangi bir x86 işlemcisi için ayarlanacaktır ; 4.14.12 ve daha yenisi, yalnızca Intel CPU'lar için ayarlayacaktır (savunmasız olmak için çok eski veya çok ilkel olanlar dahil. Her ikisi de KPTI devre dışı bırakılsa bile ayarlayacaktır.
Mark

8

Meltdown / spectre açıklarını sisteminizde test etmek için bu harika sh komut dosyasını buldum:

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

Bu komut dosyası, bu güvenlik açıklarının şimdi işletim sisteminiz tarafından azaltılıp azaltılmadığını size bildirmek için sisteminizdeki bilinen Meltdown ve hayalet düzeltme eklerini denetler


2

Kontrol edebilirsiniz /proc/config.gz için CONFIG_PAGE_TABLE_ISOLATION=yçekirdek KPTI ile derlendi anlamına gelmektedir.

Bu benim 4.14.11-1 çalıştıran yamalı Arch Linux sistemimde:

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

3
Ne yazık ki, şu anda çalışan çekirdeğin yapılandırması /proc/Ubuntu çekirdeğinde varsayılan olarak etkin değildir. (Çok daha az zarif) bir geçici çözüm /boot/config-$( uname -r )yerine grepping .
blubberdiblub

5
Bu, yalnızca çekirdeğin KPTI ile derlenip derlenmediğini, KPTI etkin olup olmadığını söyler (önyükleme sırasında ve muhtemelen çalışma zamanında kapatılabilir).
Mark

KPTI'yı çekirdek komut satırı parametreleri ile açıkça devre dışı bıraktıysanız, etkin olup olmadığını kontrol etmeniz gerekmez.
Raniz,

1

AWS Ubuntu 14.04.5 LTS EC2 örneğimde koştum

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

Söylemeliyim:

CONFIG_PAGE_TABLE_ISOLATION=y

Güncelleme için yaptım:

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

Bence bu da sorun değil:

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

Çekirdek versiyonunu kontrol etmek için:

uname -r

3.13.0-139-jenerik veya daha yeni olması gerekiyor .


Bu yöntem zaten en üst cevapta
wjandrea
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.