Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.


20.12.2018

Większa moc

QNAP Mustang-200
20.12.2018

Nowa era Wi-Fi

NETGEAR Nighthawk AX8
20.12.2018

Szybkie skanowanie

Brother ADS-1700W i ADS-1200
06.12.2018

Niższe moce

UPS Eaton 9SX
03.12.2018

Monitory dla MŚP

AOC E1
29.11.2018

Wykrycie szkodliwego...

Sophos Intercept X Advanced
27.11.2018

Automatyzacja zabezpieczeń

Red Hat Ansible Automation
23.11.2018

Nieograniczona skalowalność

SUSE Enterprise Storage 5.5
20.11.2018

Dwa procesory Threadripper

AMD Ryzen Threadripper 2970WX i 2920X

Mechanizmy bezpieczeństwa w procesorach

Data publikacji: 29-10-2018 Autor: Marcin Bieńkowski

Na początku bieżącego roku inżynierowie Google’a odkryli w procesorach Intela krytyczny błąd, zagrażający bezpieczeństwu danych przetwarzanych przez serwery w centrach danych. Szybko okazało się, że problem jest poważny i luki, które w międzyczasie nazwano Meltdown i Spectre, dotyczą nie tylko niemal wszystkich procesorów Intela produkowanych od 20 lat, ale również częściowo procesorów AMD i stosowanych w smartfonach układów ARM.

Niebezpieczeństwo Meltdown i Spectre dość szybko zostało zażegnane – poprawiono mikrokod procesora, a także wprowadzono poprawki do biosów płyt głównych. Jak się okazało, zawinił tu mechanizm predykcji rozgałęzień i przewidywania skoków, a także system wykonywania rozkazów poza kolejnością. Mówiąc obrazowo, atakujący, wprowadzając odpowiedni kod, który cyklicznie był powtarzany, uczył jednostki przewidywania rozgałęzień, istotnych z punktu widzenia hakera zachowań, mających przewidzieć, jaką część danych z pamięci RAM ma procesor załadować do pamięci cache. Działania te były niezależne od tego, czy dany fragment programu miał być realizowany w dalszych krokach, czy przewidywania dotyczące wykonania tego rozgałęzienia fragmentu kodu okazały się błędne i zostały zastąpione właściwymi krokami programu.

> MELTDOWN I SPECTRE – ROZWIĄZANIA

W wypadku Meltdown wyuczone, bezwarunkowe wykonanie takiego kodu przez mechanizm predykcji rozgałęzień i pozostawienie w pamięci cache rezultatów jego działania pozwala bez problemu pobrać później te dane. Dzięki temu można odczytać dosłownie każdą informację dotyczącą zawartości pamięci komputera, nawet jeśli ta była zaszyfrowana, bo moduł przewidywania rozgałęzień po prostu ją odszyfruje i pozostawi w cache’u procesora. Nawet wtedy, gdy założone w oprogramowaniu warunki związane z ich rozszyfrowaniem w ogóle nie zostały spełnione. W ten sposób można się było dostać do wszystkich chronionych obszarów pamięci RAM.

W wypadku luki bezpieczeństwa Meltdown rozwiązanie jest proste – wystarczy przenieść pamięć wykorzystywaną do przechowywania jądra systemu operacyjnego do osobnej, wydzielonej przestrzeni pamięci wirtualnej – albo z poziomu systemu operacyjnego, albo z poziomu mikrokodu sterującego współpracą pomiędzy płytą główną a procesorem. Właśnie dlatego konieczna była aktualizacja biosów w płytach głównych. Spadek wydajności komputerów okazał się na tyle niewielki, że problem luki Meltdown uznano za rozwiązany.


Luka Spectre jest mniej niebezpieczna i o wiele trudniejsza do wykorzystania w ataku. Wymaga też bezpośredniego dostępu do komputera, a ataku nie da się przeprowadzić zdalnie. W tym przypadku siedzący przy klawiaturze cyberprzestępca, uruchomiając odpowiednio przygotowany proces tylko z uprawnieniami użytkownika, może dzięki wykonywaniu rozkazów poza kolejnością odczytać informacje nie tylko ze swojego procesu, ale również z innych procesów realizowanych w tym samym czasie przez procesor. W konsekwencji istnieje możliwość np. odczytania danych logowania w przeglądarkach internetowych. Obejście problemu jest bardzo trudne i co gorsza, aby go w całości wyeliminować, należy dezaktywować spekulatywne wykonywanie rozkazów dla wszystkich aplikacji. A to już oznacza drastyczny spadek wydajności komputera.

> CO BĘDZIE DALEJ

Luki Meltdown i Spectre wykazały, że procesor, mimo stosowania na poziomie mikrokodu różnego rodzaju zabezpieczeń wewnętrznych, uniemożliwiających sięgnięcie przez jedne moduły wykonawcze do zarezerwowanej pamięci cache oraz rejestrów operacji wykonywanych przez inne moduły w sposób nieautoryzowany, nie do końca jest urządzeniem w pełni bezpiecznym. Wynika to z odziedziczonych historycznie rozwiązań konstrukcyjnych, sposobu pracy procesora oraz zgodności z modelem programowym x86.

Problem, który unaoczniły obie opisywane luki bezpieczeństwa, związany jest z predykcją rozgałęzień programu, która ma za zadanie znacząco przyspieszyć pracę procesora i spowodować, że w jak największym stopniu będą wykorzystane poszczególne jednostki wykonawcze, tak aby nie było pustych przebiegów. Jednostki przewidywania rozgałęzień programu mają za zadanie odgadnąć z wyprzedzeniem, czy aktualnie wczytywane instrukcje będą w rzeczywistości wykonywane, czy też należy zacząć napełniać potok wykonawczy zupełnie inną częścią realizowanego przez procesor programu. Przewidywanie polega przede wszystkim na analizie historii dotychczas wykonywanego kodu, tak aby wychwycić sytuacje, w których pętla lub skok warunkowy zostały już co najmniej raz powtórzone i można założyć, że prawdopodobieństwo ich ponownego wykonania jest znacznie większe niż przejście do dalszej części programu. Istotne jest tutaj również śledzenie realizacji wykonywanego przez procesor programu na kilka kroków do przodu. Odpowiada za to tzw. branch predictor, czyli moduł przewidywania rozgałęzień.

Moduł predykcji rozgałęzień analizuje zarówno informacje związane z samym z potokiem, jak i zawartość pamięci podręcznej cache L1 i L2 procesora – w nowoczesnych procesorach za pamięć L3 odpowiada już oddzielny, zewnętrzny w stosunku do jądra procesora, moduł przewidywań, który jest dostosowany do wielordzeniowości współczesnych układów. Ten opisany mechanizm wstępnego pobierania danych określany jest najczęściej nazwą Execution Trace Cache lub Data Pre-fetch. Działa on w taki sposób, że analizuje z wyprzedzeniem instrukcje pod kątem wykorzystywanych przez kod programu obszarów (adresów) pamięci. Tę jego nie tyle wadę, co konstrukcyjną właściwość wykorzystano właśnie we wspomnianych podatnościach Meltdown i Spectre.

[...]

Autor jest niezależnym dziennikarzem zajmującym się propagowaniem nauki i techniki.

Artykuł pochodzi z miesięcznika: IT Professional

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2013 Presscom / Miesięcznik "IT Professional"