reklama

Najbezpieczniejszy z systemów wyłącza wielowątkowość w procesorach Intela

Strona główna Aktualności

O autorze

Hodowca maszyn wirtualnych i psów, poza tym stary linuksiarz, bonvivant i śmieszek. W 2012 roku napisał na DP o algorytmie haszowania Keccak i wciąż pamięta, jak on działa.

Jeśli ktoś myśli, że mydlana opera o lukach tkwiących w sprzętowej architekturze Intela skończyła się wraz z wydaniem wszystkich możliwych łatek na systemy operacyjne i poprawionego mikrokodu procesorów, to jest w błędzie. Twórcy uważanego za ekstremalnie bezpieczny systemu OpenBSD właśnie zdecydowali się wyłączyć w czipach Intela mechanizm wielowątkowości (Hyper-Threading), ze względu na ryzyko, jakie ma się z nim wiązać.

Na łamach listy dyskusyjnej deweloperów OpenBSD pojawiła się informacja o łatkach na kernel i sterownik procesora, które wyłączają wielowątkowość typu SMT – czyli jednoczesne uruchamianie dwóch wątków na jednym fizycznym rdzeniu. Odpowiedzialny za to opiekun systemu Mark Kettenis wyjaśnia, że istniejące implementacje takiej wielowątkowości dzielą między sobą bufor TLB (tablicy fragmentów stron pamięci) oraz pamięć cache L1. Znacząco to ułatwia ataki na cache procesora i zdaniem deweloperów OpenBSD otwiera drogę do groźnych exploitów na miarę Spectre.

Najgorzej sytuacja wygląda z implementacją Intela, znaną jako Hyper-Threading, gdzie dochodzi do jednoczesnego uruchamiania różnych domen bezpieczeństwa w różnych wątkach na tym samym rdzeniu. Zaradzenie temu na poziomie planisty kernela nie jest sprawą trywialną, więc uznano, że lepiej jest z Hyper-Threadingu całkowicie zrezygnować. Jako jednak że większość nowych komputerów nie pozwala na wyłączenie Hyper-Threadingu z poziomu UEFI/BIOS-u, zdecydowano się zrobić to software’owo.

Domyślnie OpenBSD wyłącza wielowątkowość na procesorach Intela. Użytkownik może ponownie ją włączyć, przełączając kontrolkę hw.smt, ale nie jest to zalecane. Mark Kettenis przypomina, że wcale nie należy się obawiać utraty wydajności: w większości obciążeń roboczych na procesorach mających więcej niż dwa rdzenie Hyper-Threading ma wręcz spowalniać komputer.

A co z procesorami AMD? No cóż, implementacja SMT w Ryzenach też najwyraźniej nie została uznana za bezpieczną. W planach jest wyłączenie wielowątkowości także w procesorach innych niż Intel producentów, także na innych niż x86-64 architekturach.

Wyjaśnienia są jak widać dość lakoniczne, ale najwyraźniej przeprowadzono w tej sprawie głębsze badania. Kilka dni temu Philip Guenther, również z drużyny OpenBSD, wspomniał o konieczności czyszczenia rejestrów ogólnego przeznaczenia (GPR) przy wejściu do kernela z przestrzeni użytkownika, aby podsunięte przez użytkownika wartości nie mogły brać udziału w spekulatywnym wykonywaniu instrukcji, które zostaną odrzucone, ale będą miały widoczne efekty w cache. To samo zrobiono w systemie DragonFly BSD, a w wiadomości wysłanej do szefa OpenBSD Theo de Raadta, na końcu znalazł się dopisek: wyłączcie Hyper-Threading Intela tam gdzie go nie trzeba, póki nie będziemy wiedzieli więcej.

O problemie wspomina też na łamach listy dyskusyjnej OSS-SEC niezależny haker Loganaden Velvindron, pisząc że do oficjalnego ujawnienia miałoby dojść 27 czerwca. Jeśli faktycznie do tego dojdzie, wszystkie systemy operacyjne musiałyby zmodyfikować działanie swoich planistów, by uniknąć przenikania się domen bezpieczeństwa w niebezpieczny sposób.

Nieciekawie to wygląda dla Intela – od niepamiętnych czasów firma z Santa Clara dumna była z Hyper-Threadingu, zawsze w specyfikacji procesorów wspominając o liczbie rdzeni i liczbie jednocześnie uruchamianych wątków (a więcej to przecież lepiej). Marketing i PR zdołały jakoś zneutralizować rynkowy efekt Spectre i Meltdowna, ale czy zdołają drugi raz zrobić wrażenie na klientach tą samą sztuczką?

© dobreprogramy
reklama

Komentarze

reklama