Od kilku dni w środowisku komputerowym głośno jest o zagrożeniu Meltdown i Spectre. Odkryli je uczeni z TU w Grazu. O co chodzi? Współczesne procesory działają spekulatywnie. Na czym to polega? W programach badane są warunki logiczne i w zależności od rezultatu wykonywane są różne sekwencje. Tak widzi to programista. Rzeczywistość jest inna. Procesory mogą nie badać spełnienia warunków i wykonywać równocześnie wszystkie gałęzie programu. Ostateczny wariant jest wybierany dopiero a posteriori, po zbadaniu warunków. Dlatego programista może nie być świadom tego, że fragment kodu, który według niego nigdy nie będzie wykonany przy pewnych warunkach (bo taka jest logika programu) będzie jednak wykonany spekulatywnie przez procesor i może być użyty do przeprowadzenia ataku na dane.
Dla ilustracji (w uproszczeniu) w skali makro - załóżmy, że program ma dwa odgałęzienia - jedno po prawidłowej weryfikacji hasła, a drugie po nieprawidłowej. W spekulatywnym procesorze mogą być wykonane obie gałęzie (a przynajmniej rozpoczęte) niezależnie od wyniku sprawdzenia hasła. Wykonuje się jedną z gałęzi, którą procesor uzna za bardziej prawdopodobną i w wypadku błędnej oceny wycofuje się pracę wykonaną przez procesor, a następnie wykonuje gałąź właściwą.
Dokładnego opisu zagrożenia Meltdown i Spectre niestety nie posiadam. Przeświadczenie o bezpieczeństwie systemów komputerowych jest bardzo naiwne. Praktycznie wszystkie obecnie używane procesory podatne są na opisane zagrożenie.
Brak komentarzy:
Prześlij komentarz
Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.