Po co aktualizować sterowniki? Dla bezpieczeństwa
Po dłuższej przerwie powracamy do naszego cyklu artykułów o zabezpieczaniu komputera osobistego. Ostatnio zatrzymaliśmy się na zagadnieniu aktualizacji wszystkich komponentów sprzętowych, które są w stanie przechowywać stan i zawierają oprogramowanie (firmware). Ze względu na wzrost złożoności sprzętu komputerowego, skomplikowana logika "wnętrzności" może, z racji swojego zakresu obowiązków, stanowić punkt wejścia dla wielu zagrożeń. W czasach, gdy chipset płyty głównej zawiera serwer HTTPS, płaszczyzna ataku jest oszałamiająco rozległa.
08.05.2020 23:54
Wraz z rozbudową sprzętu i jego oprogramowania układowego, puchły także sterowniki. Zakres funkcjonalny urządzeń zaczął znacząco wykraczać poza podstawę definiowaną w ramach generycznych, "rodzajowych" sterowników. Zamiast kart dźwiękowych realizujących model urządzenia audio, mamy dziś wysoko zintegrowany sprzęt instalujący w systemie własną klasę sterownika i dostarczający kilkanaście "urządzeń" w jednym. Powstają całe dodatkowe magistrale, nadbudowane powyżej szyny PC, jak Thunderbolt.
Nowoczesne sterowniki
Tak skomplikowany hardware potrzebuje nie tylko pokaźnego firmware'u, ale także sporego sterownika. Często nie jest to sam plik *.SYS zakopany w bazie sterowników, ale kilkanaście takich SYS-ów, usługa w tle oraz program-łącznik działający w przestrzeni użytkownika. Prosta reguła stanowi tymczasem, że im więcej kodu, tym więcej błędów. A koncepcja łączników rozmawiających z usługami pracującymi jako użytkownik "LOCAL SYSTEM" jest niebezpieczna z definicji. Dlatego poza aktualizowaniem oprogramowania układowego, konieczna jest także aktualizacja sterowników.
Podobnie, jak w przypadku BIOS-u, na temat sterowników istnieje rozpowszechniony pogląd, że nie należy ich zmieniać, jeżeli działają. Istotnie, wadliwe sterowniki potrafią zdestabilizować pracę sprzętu i utrudnić zdiagnozowanie źródła. Potrzebne jest zatem uzasadnienie. Jakie więc konkretne niebezpieczeństwa niosą ze sobą nieaktualne sterowniki? Istnieje kilka kategorii problemów. Wiele z nich nie stanowi poważnego zagrożenia i pozwala "najwyżej" na zawieszenie sprzętu lub wyciek pamięci, ale poza pomniejszymi słabościami można znaleźć także poważne dziury.
NVIDIA
Pierwszym przykładem niech będzie NVidia i jej instalatory. Automatyczny aktualizator podmieni pliki usług złośliwymi wersjami jeżeli tylko podrzuci się je do tymczasowego katalogu pobierania. Sam plik SYS będzie podpisany, instalator też będzie zaufany, ale ustanowiona już przez niego usługa administracyjna może być trojanem. Ta sama usługa nie sprawdza ścieżki dostępu ładowanych plików DLL, potencjalnie uruchamiając podrzucony plik z wysokimi uprawnieniami.
A to jeszcze nie pokrywa kwestii samego rdzenia sterownika wideo. Ten też zawiera sporo niespodziewanych luk, jak na przykład odkryte w zeszłym roku metody dokonywania nadużyć w API tak, by wykonywać arbitralny kod na prawach sterownika. Takich problemów jest więcej, są też problemy z [url=]aplikacjami pomocniczymi[/url].
Intel
Nie mniejsze problemy funduje nam także Intel. Producent często wydaje aktualizacje łatające na przykład 17 albo 21 problemów z zabezpieczeniami jednocześnie. Aktualizacje te dotyczą naturalnie wyłącznie obsługiwanego sprzętu, co oznacza że dziś komputery mają datę ważności. Intel popełnia podobne błedy, co NVidia: podmiana ścieżki dostępu pozwala uruchamiać złośliwy kod jako uprzywilejowana usługa. Podniesienie uprawnień było możliwe w sterownikach wideo oraz dźwięku.
Conexant
W kategorii "dźwięk" zwycięża jednak Conexant i jego obsługa przycisku wyciszania za pomocą aplikacji pomocniczej, instalowanej przez sterownik. Conexant nie definiował czynności wyciszenia jako aktywowanej określonym klawiszem (co nie potrzebowało aplikacji i działałoby na zdarzeniach, ale wymaga znajomości Windows API). Zamiast tego dostarczył program, który sprawdzał wszystkie naciśnięcia klawiszy (niczym keylogger-złodziej haseł) i sprawdzał, czy jednym z nich nie jest "Wycisz".
Najwyraźniej funkcja nie działała najlepiej, więc "na produkcję" poszła wersja, w której włączone było logowanie: każde naciśnięcie przycisku lądowało w pliku dziennika. Każde, kiedykolwiek. Wreszcie, żeby ułatwić sobie debugowanie i pracę zdalną, zadecydowano, że ten "produkcyjny log" będzie przechowywany w domyślnie udostępnianym katalogu Public. Oznacza to, że przez dobre kilka miesięcy, sterownik do dźwięku zapisywał wszystkie naciśnięte klawisze do publicznie udostępnianego pliku na każdym komputerze z kartą dźwiękową Conexant. Fuszerka na taką skalę powinna być ostatecznym argumentem za tym, aby aktualizować sterowniki. Jak robić to najlepiej? O tym następnym razem.
Wnioski
Sprzęt stał się skomplikowany do tego stopnia, że sterowniki urosły do rozmiarów podatnych na błędy Skomplikowany zakres funkcjonalny nowego sprzętu sprawia, że sterowniki składają się z komponentów pracujących z różnymi uprawnieniami i dziury w zabezpieczeniach mogą pozwalać na ich podniesienie Usługi instalacji i aktualizacji sterowników są podatne na instalację podstawionych, złośliwych plików Nawet oficjalne sterowniki do popularnego sprzętu mogą zawierać szkolne błędy