GNU/Linux >> Znalost Linux >  >> Linux

Spectre and Meltdown Test zranitelnosti CPU a aktualizace mikrokódu na Linuxu



Úvod do zranitelností procesoru Spectre &Meltdown

Jedním ze způsobů, jak tyto útoky zablokovat, je v určitých časech vyprázdnit mezipaměť, čímž se odstraní exfiltrované informace dříve, než k nim útočník získá přístup. Stahování mezipaměti po každém systémovém volání by pravděpodobně zablokovalo širokou škálu spekulativních útoků, ale také by zpomalilo systém do té míry, že by uživatelé hledali způsoby, jak mechanismus deaktivovat. Zabezpečení informací je velmi důležité, ale náklady jsou příliš vysoké, protože vyprázdnění mezipaměti snižuje drahocenný produkční čas.

Útoky, které využívají spekulativní provedení, zahrnují přesvědčování procesoru, aby spekuloval na cestě, kterou nespekulativní provedení nebude následovat. Například funkce jádra může obsahovat kontrolu limitu, která zabrání přístupu kódu za konec pole, což způsobí vrácení chyby. Útok, který využívá zranitelnost Spectre, tuto kontrolu spekulativním způsobem přeskočí a zpřístupní data, ke kterým byl kód napsán speciálně pro nepřístup. Návrat k chybě je vodítkem, že se možná děje něco nevhodného, ​​ale do té doby bude škoda způsobena.

Jak zkontrolovat, zda je váš server Linux zranitelný vůči chybám Spectre CPU

Spectre &Meltdown Checker je skript shellu, který kontroluje chyby na následujících procesorech Intel/AMD/ARM a dalších:

  • CVE-2017-5753:bypass kontroly hranic (varianta spektra 1). Potřebujete znovu zkompilovat software a jádro pomocí upraveného kompilátoru, který zavede operační kód LFENCE na správné pozice ve výsledném kódu. Dopad zmírnění na výkon je zanedbatelný.
  • CVE-2017-5715:vstřikování cíle do větve (Varianta spektra 2). Dopad omezení na výkon v závislosti na vašem CPU.
  • CVE-2017-5754:nečestné zatížení mezipaměti dat (zhroucení). Musíte nainstalovat aktualizovanou verzi jádra s opravami PTI/KPTI. Aktualizace jádra stačí. Dopad zmírnění na výkon je nízký až střední.

spectre-meltdown-checker.sh je jednoduchý shell skript, který zjistí, zda je vaše linuxové jádro (instalace) zranitelné vůči 3 „spekulativním spuštěním“ CVE.

Instalace

Skript musí být spuštěn jako root uživatel. Zdrojový kód si můžete prohlédnout níže. Použijte příkaz wget nebo curl k získání zdrojového kódu na vašem Linuxovém boxu:

$ cd /tmp/
$ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

NEBO

$ git clone https://github.com/speed47/spectre-meltdown-checker.git

Ukázkové výstupy:

Klonování do 'spectre-meltdown-checker'...

dálkové:Počítání objektů:155, hotovo.

remote:Komprese objektů:100 % (20/20), hotovo.

vzdálené:Celkem 155 (delta 18), znovu použito 21 (delta 10), znovu použito 125

Příjem objektů:100 % (155/155), 49,78 KiB | 145,00 kB/s, hotovo.

Rozlišení rozdílů:100 % (88/88), hotovo.

Jak v Linuxu zkontrolovat zranitelnost Spectre a Meltdown

Spusťte skript jako uživatel root pomocí příkazu sudo nebo příkazu su:

$ sudo sh spectre-meltdown-checker.sh

Ukázkové výstupy z plochy Ubuntu Linux:

Další výstup z mého serveru CentOS 7.x, kde byl Meltdown/Spectre v1 opraven s jádrem:

$ sudo sh spectre-meltdown-checker.sh

Jak nainstalovat/aktualizovat firmware mikrokódu Intel v systému Linux?

Mikrokód není nic jiného než firmware CPU od Intelu nebo AMD. Linuxové jádro může aktualizovat firmware CPU bez aktualizace BIOSu při spouštění. Mikrokód procesoru je uložen v paměti RAM a jádro aktualizuje mikrokód při každém spuštění. Tyto aktualizace mikrokódu od společnosti Intel/AMD potřebovaly opravit chyby nebo použít errata, aby se předešlo chybám CPU. Tato stránka ukazuje, jak nainstalovat aktualizaci mikrokódu AMD nebo Intel pomocí správce balíčků nebo aktualizací mikrokódu procesoru dodaných společností Intel v systému Linux.

Jak zjistit aktuální stav mikrokódu

Spusťte následující příkaz jako root uživatel:

# dmesg | grep microcode

Ukázkové výstupy:


Jak nainstalovat firmware mikrokódu Intel v systému Linux pomocí správce balíčků

Nástroj pro transformaci a nasazení aktualizace mikrokódu CPU pro x86/amd64 je dodáván s Linuxem. Postup instalace firmwaru mikrokódu AMD nebo Intel v systému Linux je následující:

  1. Otevřete aplikaci terminálu
  1. Typ uživatele systému Debian/Ubuntu Linux:sudo apt install intel-microcode
  1. Typ uživatele systému CentOS/RHEL Linux:sudo yum install microcode_ctl

Názvy balíčků jsou pro populární distribuce Linuxu následující:

  • microcode_ctl a linux-firmware – balíček aktualizace mikrokódu CentOS/RHEL
  • intel-microcode – balíček aktualizace mikrokódu Debian/Ubuntu a klonů pro CPU Intel
  • amd64-microcode – Debian/Ubuntu a klonování mikrokódu firmwaru pro procesory AMD
  • linux-firmware – mikrokódový firmware Arch Linuxu pro CPU AMD (ve výchozím nastavení nainstalován a z vaší strany není potřeba žádná akce)
  • intel-ucode – firmware mikrokódu Arch Linux pro procesory Intel
  • microcode_ctl, linux-firmware a ucode-intel – balíček aktualizace mikrokódu Suse/OpenSUSE pro Linux

Varování:V některých případech může aktualizace mikrokódu způsobit problémy se spouštěním, jako je zasekávání serveru nebo automatické resetování při spouštění. Dělejte to na vlastní nebezpečí.

Příklady

Zadejte následující příkaz apt/příkaz apt-get na Debian/Ubuntu Linux pro Intel CPU:

$ sudo apt-get install intel-microcode

Ukázkové výstupy:



Pro aktivaci aktualizace mikrokódu musíte restartovat box:

$ sudo reboot

Ověřte to po restartu:

# dmesg | grep 'microcode'

Pokud používáte RHEL/CentOS, zkuste nainstalovat nebo aktualizovat následující dva balíčky pomocí příkazu yum:

$ sudo yum install linux-firmware microcode_ctl
$ sudo reboot
$ sudo dmesg | grep 'microcode'

Jak aktualizovat/instalovat mikrokód stažený ze stránek Intel?

Následující metodu používejte pouze v případě, že ji doporučuje váš prodejce, jinak se držte balíčků pro Linux, jak je popsáno výše. Většina správců distribuce Linuxu aktualizuje mikrokód prostřednictvím správce balíčků. Metoda správce balíčků je bezpečná, jak testovalo mnoho uživatelů.

Jak nainstalovat blob mikrokódu procesoru Intel pro Linux (vydání 20180108)?

Navštivte stránky AMD nebo Intel a stáhněte si nejnovější firmware mikrokódu. Nejprve jej extrahujte pomocí příkazu tar:

$ mkdir firmware
$ cd firmware
$ tar xvf ~/path/to/file/microcode-20180108.tgz
$ ls –l

Ukázkové výstupy:

Ujistěte se, že /sys/devices/system/cpu/microcode/reload skončí:

$ ls -l /sys/devices/system/cpu/microcode/reload

Musíte zkopírovat všechny soubory z intel-ucode do /lib/firmware/intel-ucode/ pomocí příkazu cp:

$ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

Právě jste zkopírovali adresář intel-ucode do /lib/firmware/. Chcete-li znovu načíst soubory mikrokódu, napište rozhraní pro opětovné načtení na 1:

# echo 1 > /sys/devices/system/cpu/microcode/reload

Aktualizujte existující initramfs, aby se příště načetl přes jádro:

$ sudo update-initramfs -u
$ sudo reboot

Ověření, že mikrokód byl aktualizován při bootování nebo znovu načten příkazem echo:

# dmesg | grep microcode

To je vše. Právě jste aktualizovali firmware pro váš procesor Intel.


Linux
  1. Linuxové jádro se neaktualizuje na 2.35.25?

  2. Úvod do Linuxových přerušení a CPU SMP Affinity

  3. Jak zmírnit zranitelnosti Spectre a Meltdown na systémech Linux?

  1. Jak nainstalovat a otestovat Ansible na Linuxu

  2. Linux – konfigurace, kompilace a instalace vlastního linuxového jádra?

  3. Linux – rozdíl mezi uživatelským prostorem a prostorem jádra?

  1. Jak linuxové jádro zpracovává přerušení

  2. Monitorování hostitelů Linux a Windows pomocí Glances

  3. Limit linky Shebang v bash a linuxovém jádře