Badacze bezpieczeństwa opublikowali w Project Zero nową lukę o nazwie Spectre and Meltdown, pozwalającą programowi na kradzież informacji z pamięci innych programów. Wpływa na architektury Intel, AMD i ARM.
Wadę tę można wykorzystać zdalnie, odwiedzając stronę JavaScript. Szczegóły techniczne można znaleźć na stronie redhat , zespole bezpieczeństwa Ubuntu .
Wyciek informacji poprzez spekulacyjne ataki kanałowe po stronie wykonania (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 alias Spectre and Meltdown)
Odkryto, że nowa klasa ataków z kanału bocznego wpływa na większość procesorów, w tym procesory Intel, AMD i ARM. Atak pozwala złośliwym procesom przestrzeni użytkownika na odczyt pamięci jądra i złośliwego kodu u gości na odczyt pamięci hiperwizora. Aby rozwiązać ten problem, konieczne będą aktualizacje jądra Ubuntu i mikrokodu procesora. Te aktualizacje zostaną ogłoszone w przyszłych Informacjach o bezpieczeństwie Ubuntu, gdy będą dostępne.
Przykładowa implementacja w JavaScript
Jako dowód słuszności koncepcji napisano kod JavaScript, który po uruchomieniu w przeglądarce Google Chrome pozwala JavaScript na odczyt prywatnej pamięci z procesu, w którym działa.
Wydaje się, że na mój system ma wpływ luka widma. Skompilowałem i wykonałem ten proof-of-concept ( spectre.c
).
Informacje o systemie:
$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux
$ cat /proc/cpuinfo
model name : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz
$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516
Jak ograniczyć luki w zabezpieczeniach Spectre i Meldown w systemach Linux?
Dalsza lektura: Używanie Meltdown do kradzieży haseł w czasie rzeczywistym .
Aktualizacja
Używanie Spectre & Meltdown Checker
po przejściu do 4.9.0-5
wersji jądra po odpowiedzi @Carlos Pasqualini, ponieważ dostępna jest aktualizacja zabezpieczeń, aby zminimalizować cve-2017-5754 na Debian Stretch:
CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel: NO (only 31 opcodes found, should be >= 70)
> STATUS: VULNERABLE (heuristic to be improved when official patches become available)
CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
* Hardware (CPU microcode) support for mitigation: NO
* Kernel support for IBRS: NO
* IBRS enabled for Kernel space: NO
* IBRS enabled for User space: NO
* Mitigation 2
* Kernel compiled with retpoline option: NO
* Kernel compiled with a retpoline-aware compiler: NO
> STATUS: VULNERABLE (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)
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)
Zaktualizuj 25 stycznia 2018 r
spectre-meltdown-checker
Skrypt jest oficjalnie zapakowane przez Debiana, jest on dostępny dla Debiana odcinku przez backports repozytorium, Buster i Sid.
Obejście sklepu spekulacyjnego (SSB) - znane również jako wariant 4
Systemy z mikroprocesorami wykorzystujące spekulacyjne wykonywanie i spekulacyjne wykonywanie odczytów pamięci przed poznaniem adresów wszystkich wcześniejszych zapisów pamięci mogą umożliwić nieuprawnione ujawnienie informacji atakującemu z dostępem lokalnym użytkownikom za pomocą analizy kanału bocznego.
Nieuczciwy odczyt rejestru systemowego (RSRE) - znany również jako wariant 3a
Systemy z mikroprocesorami wykorzystujące wykonywanie spekulacyjne i wykonujące spekulacyjne odczyty rejestrów systemowych mogą umożliwiać nieautoryzowane ujawnienie parametrów systemowych atakującemu z dostępem lokalnym użytkownikom za pomocą analizy kanału bocznego.
Edytuj 27 lipca 2018 r
NetSpectre: Czytaj dowolną pamięć w sieci
W tym artykule prezentujemy NetSpectre, nowy atak oparty na wariancie Spectre 1, który nie wymaga kodu kontrolowanego przez atakującego na urządzeniu docelowym, co wpływa na miliardy urządzeń. Podobnie jak lokalny atak Spectre, nasz atak zdalny wymaga obecności gadżetu Spectre w kodzie celu. Pokazujemy, że systemy zawierające wymagane gadżety Spectre w odsłoniętym interfejsie sieciowym lub interfejsie API mogą zostać zaatakowane przez nasz ogólny zdalny atak Spectre, umożliwiający odczyt dowolnej pamięci przez sieć. Atakujący wysyła tylko ofierze spreparowane żądania i mierzy czas reakcji na wyciek tajnej wartości z pamięci ofiary.