Analiza kosztów systemu ochrony treści Windows Vista

Ataki Denial-of-Service poprzez unieważnienie sterownika lub urządzenia

Kiedy tylko w danym sterowniku lub urządzeniu zostanie odkryta luka umożliwiająca nieautoryzowany dostęp do chronionej zawartości, sterownikowi takiemu zostanie cofnięty cyfrowy certyfikat wystawiany przez Microsoft. Nie bardzo wiadomo co następuje potem, specyfikacja posługuje się określeniami w stylu „dany sterownik będzie musiał zostać wycofany a na jego miejsce wprowadzona zostanie poprawiona wersja”, choć prawdopodobnie system zezwoli na bardzo ograniczoną funkcjonalność w rodzaju rozdzielczości VGA 640×480, choćby po to, by mógł wystartować.

Oznacza to mniej więcej tyle, że po doniesieniu o luce w zabezpieczeniach powodowanej przez urządzenie lub jego sterownik, wsparcie dla tego produktu zostanie zawieszone – w skali całego świata – dopóki nie pojawi się poprawka[1]. Szczegóły są dość niejasne, ale wydaje się że jeżeli problem leży po stronie urządzenia, to jego funkcjonalność zostanie drastycznie ograniczona. Jeżeli jest to starszy sprzęt, którego rozwojem producent nie jest już zainteresowany (pamiętajmy, że obecnie sprzęt przechodzi w status „przestarzały” w ciągu roku czy dwóch, w praktyce gdy tylko pojawi się jego następca) to wszystkie te urządzenia z dnia na dzień przestaną funkcjonować.

Za przykład może tu posłużyć karta graficzna Riva TNT2, która wciąż często znajduje się w komputerach używanych w biurach, bo czego więcej potrzeba do uruchomienia Worda, Excela czy Outlooka (w zasadzie każdej aplikacji, która nie jest grą)? Sterowniki do tych kart nie były aktualizowane od dawna z tego jednego powodu – nowe oprogramowanie nie jest potrzebne, bo karta i tak nie udźwignie wymagań współczesnych gier. Jeżeli więc w przypadku TNT2 okazałoby się, że istnieje niebezpieczeństwo „wycieku” treści kwalifikowanych, to nie wydaje się żeby nVidia była zainteresowana modyfikacją pokrytych kurzem sterowników.

Wizja unieważnienia sterowników jest realnym niebezpieczeństwem, jakie grozi dostawcom sprzętu[2]. Szczegóły konstrukcji tego „młotka” są ukryte głęboko w paragrafach umów licencyjnych, obiło mi się jednak o uszy, że oprócz ograniczenia funkcjonalności konkretnego modelu może chodzić o wielomilionowe odszkodowania oraz embargo na dostarczanie nowych urządzeń w przyszłości.

Unieważnienie sterownika pociągać może za sobą koszty, z których istnienia nie zdajemy sobie dziś sprawy. Antypiracki komponent Windows – WGA (w przypadku Visty jest to Software Protection System) – jest bardzo silnie związany z zainstalowanym w komputerze sprzętem. Microsoft zezwala na zmiany w posiadanym sprzęcie w z góry ograniczonym zakresie – po wyczerpaniu tego limitu będziesz musiał odnowić licencję (do dziś nie wiadomo dokładnie co można a czego nie można wymieniać aby nie ryzykować kolejnych wydatków). Jeżeli więc nagle jedno z urządzeń zostanie wyłączone (nawet tymczasowo, w oczekiwaniu na nową wersję oprogramowania) a w jego miejsce użytkownik zainstaluje inne urządzenie, okazać się może, że WGA uzna komputer za nowy i zablokuje działanie całego systemu. Stanie się to na pewno wtedy, gdy trzeba będzie wymienić jeden z podstawowych elementów maszyny, jak płytę główną. Wycofanie zatem sterownika jakiegokolwiek urządzenia zintegrowanego z płytą (obecnie praktycznie każda ma wbudowany układ audio, wiele z nich również układ wideo) może mieć bardzo niemiłe konsekwencje.

Inną konsekwencją podejścia polegającego na „poprawkach” unieważniających sterowniki jest zniechęcenie użytkownika do poprawek w ogóle. Przez pojęcie „poprawki” rozumiemy z reguły działanie mające na celu poprawienie komfortu czy bezpieczeństwa pracy z komputerem. O ile jednak działanie oprogramowania typu „malware” jest dla użytkownika niewidoczne, o tyle wyłączenie sterownika jest zauważalne od razu, co może doprowadzać do wyłączania funkcji Windows Update w ogóle.

Nie wiadomo co się wydarzy, gdy unieważnione zostaną sterowniki płyty głównej zawierającej nieużywane układy audio i oprócz nich kartę dźwiękową. Windows nie jest w stanie stwierdzić czy jakieś urządzenie jest czy nie jest podłączone do wyjść audio płyty głównej, wie tylko że użytkownik używa karty M-Audio Revolution 7.1 Surround Sound, więc prawdopodobnie będzie musiał też unieważnić sterowniki płyty głównej, mimo że użytkownik z nich nie korzysta. Problem jest poważny, bo praktycznie wszystkie płyty główne mają wbudowane układy dźwiękowe.

Zagrożenie atakami DoS, które dotyka urządzenia wyposażone w złącza HDMI zdążyło się już zmaterializować w postaci tak zwanych „wzmacniaczy HDMI”. Jest to sprzęt, który na wejściu pobiera sygnał HDMI aby wyprowadzić go na wyjściu w postaci wzmocnionego DVI. Po drodze oczywiście znika zabezpieczenie HDCP. Dokładnie takie „lekarstwo” zostało zarekomendowane przez firmę Westinghouse (duży amerykański producent sprzętu TV) w przypadku problemów ich sprzętu 1080p z kosolą Playstation 3. Zalecili klientom „zakup przejściówki z HDMI na DVI aby obejść HDCP”. W odniesieniu do zabezpieczeń przed kopiowaniem producenci sprzętu doszli zatem do takich samych wniosków, do jakich doszedł komputer w „Grach wojennych” w odniesieniu do wojny termonuklearnej: Dziwna gra. Wygrywa jedynie ten, kto w nią nie gra.

Wzmacniacze są urządzeniami stosunkowo prostymi w konstrukcji, opartymi na powszechnie dostępnych układach HDMI. Poza tymi dostępnymi w handlu, istnieją też modele skonstruowane przez hackerów, oparte na pokazowych egzemplarzach układów otrzymanych od ich producentów. Jeżeli ma się odpowiednie „plecy”, można nawet uzyskać dostęp do kart tworzonych dla developerów, które od razu mają wbudowaną opisywaną wyżej funkcjonalność. Nie poruszam tu nawet tematu odtwarzaczy HD z interfejsami HD-SDI (SMPTE 292M). HD-SDI to pozbawione zabezpieczeń złącze cyfrowe używane przede wszystkim w studiach telewizyjnych, choć dostępne jest też poza USA w formie „ulepszeń”, które pozwalają uzyskać obraz wyższej niż w przypadku HDMI jakości, w dodatku nie skażony HDCP.

Załóżmy teraz, że producent takiego „wzmacniacza” kupuje tonę układów HDMI (a kupować będzie olbrzymie ilości, bo nikt mu już takich układów nie sprzeda po wypuszczeniu pierwszej serii „wzmacniaczy”). Sterownik takiego „bandyckiego” urządzenia można unieważnić… a wraz z nim setki tysięcy innych urządzeń, które są oparte na takim samym układzie HDMI. Jeżeli ktoś chce się wyszaleć i dokuczyć maksymalnie szerokiej rzesze użytkowników, może skorzystać z chipów HDMI montowanych na przykład przez popularnych producentów telewizorów. Obecnie w chwili awarii kineskopu czy cewek odchylających nie opłaca się już naprawiać telewizora, więc od tego momentu sprzęt ten rozpoczyna swoje „drugie życie” jako źródło części zamiennych. Wkrótce w wolnym obiegu może znaleźć się całkiem sporo sprawnych układów, czekających tylko aż ktoś ich użyje w jakimś niecnym celu.
Serwis Egadget opublikował scenariusz opisujący taką historię.

(Ostateczny efekt wycieku klucza zależy od tego, w jaki sposób używa go atakujący. Klucze stosowane przez napędy HD-DVD/Blue-Ray działają w ten sposób, że klucz przypisany do urządzenia odszyfrowuje klucz przypisany do danego tytułu a ten z kolei odszyfrowuje zawartość nośnika. Pozwala to na unieważnienie klucza bez obawy o zablokowanie płyty również na innych urządzeniach, ponieważ klucze w nich zawarte nadal będą mogły posłużyć do odszyfrowania tytułu i nośnika (ten opis jest nieco uproszczony, więcej na ten temat w specyfikacji AACS).

Klucz urządzenia jest przypisany do konkretnego odtwarzacza/dostawcy ale już klucz tytułu jest unikalny tylko dla zawartości płyty. Zorientowaliście się już do czego zmierzam? Publikując klucz urządzenia atakujący spowoduje prawdziwe piekło wśród właścicieli urządzeń, które go zawierają, bo klucze zostaną unieważnione. Z drugiej strony, ujawnienie klucza tytułu grozi możliwością wydania wersji odkodowanej ponieważ nie sposób stwierdzić jakiego urządzenia użyto dla złamania klucza tytułu. Co więcej, w związku z tym że nie można „odnowić” klucza (zaszyfrowana zawartość + klucz = odszyfrowana zawartość), to w tym momencie treści chronione przez ujawniony klucz są już ochrony pozbawione.

(Wynajdywanie różnorakich dziur w systemach zabezpieczeń jest doskonałą rozrywką intelektualną, przede wszystkim dla specjalistów ds. bezpieczeństwa ale i dla hackerów zajmujących się oprogramowaniem i/lub sprzętem. Niektóre z dostępnych publicznie technik atakowania takich zabezpieczeń wspomniane są w innych częściach tego opracowania, ale największą ostatnio karierę robią ataki polegające na wydobywaniu kluczy AACS, bo gdy tylko uda się uzyskać klucz do królestwa, to wszelkie inne sztuczki stają się po prostu zbędne. Pomyślałem, że podzielę się myślami na temat jednej z takich „zbędnych technik” – chodzi o unieszkodliwanie procesu unieważniania kluczy.

Każdy odtwarzacz posiada zabezpieczenie uniemożliwiające użytkownikowi podstawienie własnej listy unieważnionych kluczy, która rzecz jasna nie zawiera kluczy, o które atakującemu naprawdę chodzi. Jest ono bardzo proste – każda lista posiada specjalny licznik (w specyfikacji AACS określany mianem „numeru wersji”). Oprogramowanie odtwarzacza nie przyjmuje listy z licznkiem niższym niż ten, który aktualnie obowiązuje. Aby zatem uczynić go ślepym na każdą następną listę (a więc zablokować możliwość unieważnienia jakiegokolwiek klucza w przyszłości) należy „nakarmić” go listą, której znacznik ustawiony jest na wartość INT_MAX, a który określa największą dopuszczalną liczbę całkowitą (w przypadku procesorów 16-bitowych jest to 32767, w przypadku 32-bitowych 2147483647). Jako że numer wersji listy nie może przekroczyć tych wartości, to odtwarzacz sam odrzucać będzie każdą kolejną listę, a tym samym stanie się ślepy i głuchy na wszelkie „polecenia centrali”. Oto jak tego dokonać.

Listy są podpisane cyfrowo, znaleźć zatem musimy sposób na obejście podpisu. Przechwytujemy systemową procedurę odczytu używając do tego celu dowolnie wybranej techniki opierającej się na rootkitach – za przykład może posłużyć sterownik filtrujący sygnały IRP przekazywane do systemu plików. Gdy system odczyta blok zawierający klucz nośnika za pomocą funkcji VirtualProtect() oznaczamy drugie 4 Kb bloku (które odpowiadają stronie pamięci procesora x86) jako stronę chronioną. Potem wystarczy poczekać.

W którymś momencie procedura realizująca funkcje AACS sprawdzi podpis cyfrowy danych. Gdy proces haszowania dotrze do drugiej strony pamięci, wywoła wyjątek i umożliwi przejęcie nad nim kontroli. Procedura obsługi wyjątku musi jedynie cofnąć się o 4 kilobajty minus osiem bajtów wstecz, ustawić wartość na INT_MAX i może zakończyć pracę. W ten oto sposób masz cyfrowy podpis z licznikiem ustawionym na maksymalny co pozwoli znieczulić odtwarzacz na kolejne listy unieważniające kolejne klucze. QED.

Jeżeli ktoś szuka prostszych rozwiązań, to zawsze można po prostu nałożyć odpowiedniego patcha na oryginalny firmware.


Przypisy:

  1. Nie bardzo wiadomo w jakim zakresie urządzenie zostanie „okaleczone” po cofnięciu uprawnień (czyli w chwili, gdy wektor wyboru klucza urządzenia pojawi się na liście unieważnionych). Wymagania HDCP są w tej kwestii jasne – z chwilą unieważnienia, urządzenie nie otrzyma żadnych danych. Sprawa się komplikuje, gdy dane urządzenie działa w środowisku mieszanym (czyli nie jest samodzielne). Niektóre dokumenty sugerują, że Windows zachowa się tak, jak zachowuje się HDCP („Vista wycofa certyfikat sterownikom nie spełniającym warunków stawianych przez system ochrony treści. Jeżeli ten sam sterownik obsługiwać będzie kilka produktów tego samego producenta, wszystkie te produkty zostaną wyłączone.”), podczas gdy inne źródła twierdzą, że wadliwy sterownik nie będzie po prostu otrzymywał danych HD. Jak będzie naprawdę, okaże się w praktyce. []
  2. Nasuwa się tu porównanie ze starą piłą i powiedzeniem, że gdyby Lucas Electric zajmował się produkcją broni, nie byłoby czym wojować. []

strona: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24