Informatyczne egzorcyzmy: nowy model przepędza widmo Spectre z procesorów

Strona główna Aktualności

O autorze

Za luki Spectre i Meltdown przyszło sporo zapłacić, mimo że z tego co wiemy, żadnego realnego ataku za ich pomocą jeszcze nie przeprowadzono. Wprowadzone w pospiechu do systemów operacyjnych łatki ograniczające spekulatywne wykonywanie instrukcji procesora znacząco ograniczyły wydajność komputerów. Nie jest to zaskakujące: spekulatywne wykonywanie jest standardową częścią architektury komputerowej od niemal 70 lat. Agresywne wykonywanie instrukcji poza kolejnością, wspierane przez zaawansowane mechanizmy przewidywania rozgałęzień pozwoliło wielokrotnie przyspieszyć uruchamianie kodu bez szkody dla poprawności działania programu. Czy z tym wszystkim trzeba się będzie rozstać ze względu na zagrożenia dla bezpieczeństwa? Najwyraźniej nie. Pojawił się nowy model spekulatywnego wykonywania, który w teorii i praktyce kończy z całą klasą zagrożeń Spectre.

Amerykańscy informatycy Khaled N. Khasawneh, Esmaeil Koruyeh, Chengyu Song, Dmitrij Jewtjiuszkin, Dmitrij Ponomarew i Nael Abu-Ghazaleh opublikowali artykuł pt. SafeSpec: Banishing the Spectre of a Meltdown with Leakage-Free Speculation, w którym opisują nowy model spekulatywnego wykonywania o nazwie SafeSpec. Znaleźli oni sposób na izolowanie artefaktów pozostawianych w pamięci cache procesora po spekulatywnym wykonywaniu w taki sposób, by nie można było ich wykorzystać do odczytania wrażliwych danych z pamięci innych procesów czy obszaru zarezerwowanego dla kernela.

SafeSpec jest wzorcem projektowym dla procesorów, który wymaga, by spekulatywne stany były przechowywane w tymczasowych strukturach (tzw. shadow states), niedostępnych dla przyjętych do wykonania instrukcji. Zmienia to całą hierarchię pamięci: jak wyjaśniają naukowcy, rozszerzone zostają kolejki load-store tak, by przechowywać wskaźnik do powiązanych z nimi tymczasowych struktur, przechowujących spekulatywnie wykonane linie cache.

Nowa hierarchia cache jest odporna na wszystkie znane warianty wycieku informacji. Przy okazji jednak wykryto nową metodę ataku, Transient Speculation Attacks, będącą efektem ubocznym SafeSpec – wynika ona z tego, że wiele instrukcji startuje jako spekulatywnie wykonane przed ich popełnieniem. Zachodzi dla nich okres współdzielenia takiej tymczasowej struktury z instrukcjami, które zostaną odrzucone – i w tym okresie można wydobyć informację. By temu zapobiec, konieczne są dalsze modyfikacje spekulatywnie uaktualnianych struktur, w tym predyktora rozgałęzień i buforów DRAM. Niemniej jednak wskazano, co należy w tej kwestii zrobić.

Należy podkreślić, że model SafeSpec został stworzony dla jednowątkowych obciążeń roboczych. Wielowątkowe obciążenia wprowadzają swoje własne problemy z koherencją buforów i spójnością pamięci, otwierające drogę do swoich własnych specyficznych ataków. I w tym jednak wypadku problemy te są ostatecznie rozwiązywalne. O SafeSpec należy myśleć jako o prototypie, mającym służyć do ustalenia praktyczności takiego rozwiązania.

Rozwiązanie to zostało przeanalizowane pod kątem złożoności i narzutu na wydajność z wykorzystaniem software’owego symulatora rdzeni x86 – MarSSx86. Udało się wykazać, że nie tylko ocalony zostaje wzrost wydajności ze spekulatywnego wykonywania, ale nawet wydajność nieco wzrasta – pomagają dodatkowe bufory w shadow state.

Zainteresowanych szczegółami działania tego wolnego od wycieków spekulatywnego wykonywania zapraszamy do lektury artykułu. Pozostałych musimy rozczarować – to nie jest coś, co pojawi się w najbliższych miesiącach dzięki nowym wersjom mikrokodu. To raczej wskazanie kierunku, który producenci procesorów powinni obrać, by nowe generacje czipów stały się wreszcie same z siebie odporne na próby wydobycia informacji przez nieuprawnione procesy.

Możemy być pewni, że Intel, AMD, ARM i inni już się z pracą zapoznali i zapewne ich inżynierowie już zastanawiają się, jak to wdrożyć. Nie będzie to łatwe, sami badacze przyznają, że wymaga to głębokiego przeprojektowania CPU, by oddzielić stan spekulatywny od permanentnego. Od strony sprzętowej, z tego co zrozumieliśmy, na pewno konieczne będzie zaś powiększenie cache L1 w procesorach. Czy jest to za duża cena za wyegzorcyzmowanie widma Spectre? Tutaj możemy liczyć tylko na presję konkurencji – głupio byłoby jednemu z wiodących producentów przyznać, że nie wprowadził formalnie bezpiecznej architektury, podczas gdy zrobili to jego rywale.

© dobreprogramy