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


14.05.2019

Bezpłatna konferencja OSEC...

Jako patron medialny serdecznie zapraszamy na bezpłatną konferencję OSEC Forum 2019, któa...
23.04.2019

Optymalizacja zużycia chmury

HPE GreenLake Hybrid Cloud
23.04.2019

Zarządzanie wydajnością

VMware vRealize Operations 7.5
19.04.2019

Technologie open source

SUSECON 2019
19.04.2019

Wyjątkowo małe

OKI seria C800
19.04.2019

Łatwy montaż

Rittal AX i KX
18.04.2019

Technologie wideo

Avaya IX Collaboration Unit
18.04.2019

Krótki rzut

Optoma W318STe i X318STe
18.04.2019

Do mobilnej pracy

Jabra Evolve 65e

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 © 2019 Presscom / Miesięcznik "IT Professional"