Ręka w górę, kto nie słyszał o rozszerzeniach Software Guard (SGX); technice pozwalającej układom Intel Core na stworzenie bezpiecznej enklawy w pamięci, gdzie przechowywane są chociażby klucze kryptograficzne. Choć producent oficjalnie utrzymuje, że tylko rozwiązanie Intel® SGX zapewnia tak szczegółowy poziom kontroli i ochrony, nie od dziś wiadomo, że izolację przełamać można. Czy to manipulując przewidywaniem rozgałęzień czy analizując wzorce bitowe pamięci L1.
Najnowsze odkrycie, opisane wspólnie przez naukowców z uniwersytetów w Birmingham, Leuven i Grazu, rzuca jednak na łamanie SGX nowe światło. Jak się okazuje, można tego dokonać w sposób znacznie bardziej prostacki od uderzania w złożony przecież predyktor.
Współczesne procesory x86 zawierają tzw. rejestry MSR (Model Specific Registers). Są to takie rejestry, zazwyczaj 64-bitowe, które pozwalają na sterowanie specyficznymi funkcjami czipu. W przypadku Intel Core odpowiadają chociażby za przekazanie programom trybu użytkownika kontroli nad napięciem zasilającym, dzięki czemu dostępne jest regulowanie tego parametru z poziomu systemu operacyjnego, ale też lepsze skalowanie zegara do konkretnych aplikacji.
Hakerski undervolting
Wydawałoby się, że przekazanie systemowi kontroli nad napięciem nie ma prawa nikomu zagrozić. Bo co można w takim przypadku zepsuć? Jeśli nawet ktoś ustawi jakąś kosmicznie wysoką wartość, to zabezpieczenie przeciwprzepięciowe odetnie zasilanie i komputer po prostu się wyłączy. Zresztą, tak samo jak w momencie, gdy prąd będzie zbyt niski. Ale czy zastanawialiście się kiedyś, co dzieje się z procesorem w momencie, gdy znajduje się on na granicy stabilności? Mam tu na myśli sytuację, w której woltaż jest dostatecznie wysoki, aby utrzymać jednostkę, ale nie pozwala jej uzyskać pełni stabilności. Gołym okiem można tego nawet nie dostrzec.
Plundervolt- Faulting AES inside SGX
Tymczasem, czego obrazowy przykład stanowi atak metodą Plundervolt, CVE-2019-11157, zbyt niskie napięcie zasilające prowadzi do błędów w obliczeniach w obrębie enklawy SGX. A to z kolei zaproszenie do analizy różnicowej i ataku z tekstem jawnym, kończących się ujawnieniem kluczy prywatnych. Na powyższym wideo możecie zobaczyć jak pęka 128-bitowy AES, po zbiciu napięcia o 240 mV, przy zaskakująco niskiej złożoności 2^32 + 256 szyfrowań, średnio.
Zagrożenie? Nie przesadzajmy
Zanim jednak ktokolwiek zabetonuje swojego intela w żelbetowym sarkofagu, trzeba powiedzieć jedno: dla użytkowników domowych ataki na SGX oznaczają niewiele. No może poza tym, że fani tej drugiej firmy mogą sobie urządzić figloraj na forum. Ale bądźmy rzetelni.
SGX stosowane jest głównie w systemach chmurowych, aby odseparować poszczególne maszyny wirtualne i uruchamiane na nich programy od siebie nawzajem. To na wypadek, gdyby jeden z użytkowników, wiedziony ułańską fantazją, postanowił pokraść nieco danych z innych procesów. Na rynku konsumenckim SGX pojawiło się dopiero wraz z późniejszymi rewizjami Core 6. generacji. Przy czym Intel sugerował OEM-om i producentom płyt, aby domyślnie pozostawało wyłączone. Stawiam dolary przeciwko orzechom, że jeśli nie grzebiesz zbytnio w UEFI, to na 99 proc. rozszerzenie jest nieaktywne, a co za tym idzie nie stanowi jakiegokolwiek wektora ataku.
Natomiast dla wykorzystywanych w serwerach czipów Xeon E 10 grudnia wydano łatkę do mikrokodu, która blokuje sterowanie napięciem z poziomu instrukcji MSR. Można się rozejść.