Ataki DMA – czym są i jak się przed nimi chronić?
Podczas naszych pobieżnych rozważań na temat optymalizacji ustawień BIOS-u, wspomnieliśmy krótko na temat wyłączenia obsługi dla nieużywanych magistrali rozszerzeń. Ten pozornie upośledzający funkcjonalnie scenariusz ma na celu usunięcie potencjalnych możliwości ataku z wykorzystaniem bezpośredniego dostępu do pamięci (Direct Memory Access, DMA).
Atak DMA, czyli co?
Nowoczesne gniazda rozszerzeń nie są już tak "dosłowne" jak dawna szyna ISA, literalnie wcinająca się w przestrzeń adresową. Niemniej, magistrale PCI, 1394, Express Card i Thunderbolt, mimo wysokiego poziomu skomplikowania, noszą cechy rozwiązań zaskakująco niskopoziomowych. Owszem, interfejsy rozszerzeń wykorzystują dziś programowalne kontrolery przerwań lub abstrahują warstwę komunikacji nad kontroler hosta, pozwalając na niebawienie się w IRQ oraz łatwą implementację PnP.
Ale to nie znaczy, że dodatkowe warstwy pozbawiły owe szyny możliwości dostępu do pamięci z pominięciem instrumentu MMU. Innymi słowy, złożone, hotplugowane urządzenia Plug-And-Play wykorzystujące skomplikowany stos technologiczny, dalej mogą bezpośrednio czytać pamięć fizyczną (całą, via DMA), a nie wirtualną (VMM, zmapowaną i kontrolowaną przez system operacyjny w ramach ochrony pamięci). Niebezpieczeństwa takiego podejścia są oczywiste: zyskujemy wydajność, ale musimy teraz ufać podpinanemu urządzeniu.
Option ROM
Kontrolery FireWire oraz ExpressCard są już raczej wymarłą kategorią sprzętu, coraz rzadziej dostępną w laptopach. Jeżeli jednak są u nas obecne, warto rozważyć ich... wyłączenie. Sroko sprzęt tego typu ma domyślnie uprawnienia do bardzo głębokiego "wcinania się" w ustrój komputera, tj. ma zapewniony uprzywilejowany dostęp do BIOSu i pamięci. Być może może nic nie stracimy, wyłączając je. Nie wolno nam jednak zapomnieć, że laptopy wcale nie straciły możliwości podłączania uprzywilejowanych peryferiów. Rolę tę dziś powoli przejmuje Thunderbolt.
Kontroler Thunderbolt 3, obsługujący urządzenia podpinane przez gniazdo typu USB-C, jest coraz popularniejszym elementem na pokładzie mocniejszych laptopów. Jego popularyzacja jeszcze nie jest wysoka, choć powoli ulega to zmianie wskutek złagodzenia licencji, przez co gniazda USB-C nie oferują często warstwy Thunderbolt. Sprzęt z wyższej półki zaczął jednak stosować nowe gniazdo wraz z nowym protokołem i z lekką tylko przesadą możemy stwierdzić, że Thunderbolt potrafi być jak PCI Express na kablu. Również oferuje potencjalnie niebezpieczny dostęp do pamięci i ładowanie opcjonalnych sterowników przed startem systemu operacyjnego (Option ROM).
To właśnie ten Option ROM jest niebezpieczny. Nie ma na rynku np. "złośliwych kamer", których funkcją jest infekowanie klienta CryptoLockerem. Są natomiast urządzenia, którym Option ROM można łatwo podmienić na złośliwy, a następnie puścić w obieg. Skąd użytkownik ma wiedzieć, że urządzenie które chce podpiąć do komputera nie jest zainfekowane?
Niskopoziomowa integracja
Thunderbolt ma oczywiście swoje zalety. Przepustowość pozwala wykorzystywać estetyczne, dyskretne stacje dokujące podpinane pojedynczym kablem. Sam protokół umożliwia także uwierzytelnianie urządzeń: sprzęt nie zostanie uruchomiony, dopóki jego obecność nie zostanie "odkliknięta" i zatwierdzona w BIOSie lub stosownym kreatorze ze sterownika.
Jeżeli nie potrzebujemy wyższej przepustowości, a wizja urządzeń o nieskończonych uprawnieniach nie jest szczególnie kusząca, port Thunderbolt można wyłączyć. Nie zawsze jednak możliwe jest wyłączenie samej warstwy TB3. Istnieje ryzyko, że wyłączenie kontrolera skończy się całkowitą niedostępnością gniazda USB-C, nawet w "zwykłym" trybie. Więcej z tego szkody niż pożytku. Dlatego zapewne należy ograniczyć się do zabezpieczenia samego kontrolera.
Wydawałoby się, że Thunderbolt to po prostu kolejne, jeszcze bardziej skomplikowane złącze. Skala tego skomplikowania, widoczna w poziomie rozbudowania sterownika (kilkadziesiąt megabajtów i ikona w zasobniku!) może skłonić do opinii, że najwyraźniej do swojego działania, TB3 potrzebuje systemu Windows ze sporą zgrają oprogramowania wspomagającego. Nic bardziej mylnego.
Dowodem na to niech będzie poprawne działanie monitorów i urządzeń USB podpiętych do stacji dokujących Thunderbolt 3 jeszcze przed uruchomieniem systemu operacyjnego! Być może sterownik jest skomplikowany, ale całą zabawę w uwierzytelnianie urządzeń i obsługę peryferiów obsługuje sam BIOS i firmware kontrolera (np. JHL7540).
Aktualizacje
Czas wrócić do rytuału aktualizacji, zawitać na stronę wsparcia technicznego ponownie, a następnie pobrać i uruchomić narzędzie do aktualizacji firmware'u kontrolera. Na czas tego procesu najlepiej odpiąć wszystkie urządzenia Thunderbolt/USB-C. Aktualizacja samego kontrolera zajmuje około 256 kilobajtów (plus objętość narzędzia instalatora). Jednak należy do tego dodać wartwę "uświadamiającą" system, z jakim koszmarem ma do czynienia, czyli instalację sterownika Thunderbolt Secure Connect. On już taki lekki nie jest.
Rzecz jasna, zaktualizowanie sterownika pod Windows nie chroni nagle przed atakami DMA, ale technologia Thunderbolt 3okazała się tak wadliwa, tak dziurawa i niestabilna, że aby używać ją bez zawrotów głowy, należy koniecznie stosować najnowsze sterowniki. Problemy dotyczą nie tylko warstwy logicznej i protokolarnej, ale wręcz "elektrycznej" i stare oprogramowanie może poskutkować... uszkodzeniem urządzenia, o czym głośno ostrzega np. Lenovo. Aczkolwiek, sam system Windows 10 zawiera zabezpieczenia chroniące przez atakami DMA przez urządzenia Thunderbolt.
Naturalnie, jeżeli jednym z uzywanych urządzeń TB3 jest stacja dokująca, ona sama również może posiadać aktualizacje wbudowanego oprogramowania! W tym przypadku mają one więcej wspólnego ze stabilnością niż z bezpieczeństwem, ale ponieważ stacje TB3 są nieziemsko skomplikowanym sprzętem, zaktualizowanie ich oprogramowania często rozwiązuje problemy np. z migającymi monitorami. Doki TB3 to prawdziwe piekło na Ziemi, jeżeli komuś działają stuprocentowo sprawnie – zazdroszczę.
Wnioski
Magistrale wysokiej przepustowości, jak PCI, CardBus, 1394 i Thunderbolt oferują bezpośredni dostęp dostęp do pamięci (DMA), co zwiększa wydajność, ale umożliwia urządzeniom omijanie zabezpieczeń systemu Urządzenia peryferyjne często posiadają możliwość ładowania rozszerzeń (Option ROM), co będzie miało miejsce jeszcze przed uruchomieniem systemu operacyjnego Potencjalnie złośliwy ROM, w zestawieniu z DMA, pozwala wykradać i modyfikować dane, z pominięciem mechanizmu pamięci wirtualnej i teoretycznie w sposób niewidzialny dla software'owych mechanizmów ochrony (antywirus, tampering protection itp.) W przypadku niewykorzystywania urządzeń PCI, CardBus, 1394 i Thunderbolt, warto rozważyć wręcz całkowite wyłączenie ich obsługi w BIOS-ie Gdy ww. urządzenia są jednak używane, konieczna jest aktualizacja firmware Zaktualizowany firmware wymaga odpowiadającego mu sterownika