Pojawiają się kolejne przykłady złośliwego oprogramowania podpisanego kluczem cyfrowym Microsoftu. Przez „rygorystyczny” proces certyfikacji sterowników znów przechodzą elementy składowe rootkitów. To nie powinno być możliwe, a miało miejsce kilka razy.
Windows zawiera mechanizm uniemożliwiający ładowanie do systemu niepodpisanych sterowników trybu jądra. Uzasadnieniem takiego działania jest zapobieganie rootkitom: gdy sterownik pracuje z najwyższymi uprawnieniami, może stać się całkowicie niewidzialny dla antywirusów. Zmiana ta, wprowadzona w systemie Windows Vista, została przypieczętowana likwidacją pośrednich urzędów certyfikacji. Dziś sterowniki możliwe do załadowania w systemie może wydawać tylko Microsoft.
To ma sens
Takie podejście ma wiele zalet. Po pierwsze, sterowniki mogą od razu lądować z Windows Update i tak długo, jak nie chodzi o kartę sieciową, system jest w stanie pobrać je samodzielnie, bez konieczności polowania na sterowniki na stronie producenta. Po drugie, zapewnia ochronę przed firmami niegodnymi zaufania. Jeżeli jakiś podrzędny producent kiepsko pilnuje swojego klucza prywatnego, zachodziło ryzyko wycieku. Zanim zostałoby wydane CRL dla nadużywanego certyfikatu, złośliwe oprogramowanie miałoby możliwość ładowania rootkitów.
Gdy certyfikatów pilnuje wyłącznie Microsoft, ich wyciek byłby równoznaczny z „położeniem” całego łańcucha zaufania Windows Update. Konsekwencje takiego zdarzenia są nie do przeszacowania, a świadomość tego faktu wydaje się być bardzo niska. Dlatego Microsoft pilnuje swoich kluczy całkiem nieźle. Sterownik musi zostać zgłoszony do programu Windows Hardware Compatibility Program (WHCP/WHQL). Gdy osiągnie on certyfikację, staje się możliwy do załadowania w Windows.
Choć dzisiejsza dokumentacja WHCP nie wspomina o przeprowadzaniu skanów antywirusowych, Microsoft chwali się szerokim wykorzystaniem różnych form ochrony dostarczanych przez narzędzia Microsoft Defender. Trudno podejrzewać, że zgłaszane do certyfikacji sterowniki nie są skanowane antywirusowo, ale oprogramowanie AV jest szalenie nieskuteczne jako sposób ochrony przez nowymi zagrożeniami.
Kiepska kontrola
Problem leży w procesie. Firmy otrzymują konta w programie WHCP i używają ich do zgłaszania sterowników. Zachodzi domniemanie, że firmy te nie są podstawionymi frontami dla działań cyberprzestępców i zgłaszane przez nich oprogramowanie dotyczy prawdziwego sprzętu. Okazuje się jednak, że weryfikacja posiadaczy kont jest bardzo pobieżna i czasem niewystarczająca.
Pierwszy raz na ten temat pisano nieco ponad rok temu, gdy Karsten Hahn z G-Data zwrócił uwagę na sterownik „Netfilter” podpisany przez Microsoft, a w praktyce należący do trojana Wacapew. Microsoft przyznał, że podpisał złośliwy sterownik i zawiesił konto zgłaszającego do WHQL, ale w ogłoszeniu nie powiedziano nic o słabościach systemu certyfikacji. Zamiast tego, w rozbudowany sposób opisano działanie złośliwego sterownika oraz ochronę świadczoną przez Defendera.
Tymczasem minął rok, a Karsten Hahn zaprezentował kolejny przykład trojana podpisanego przez Microsoft Windows Hardware Compatibility Publisher, urząd zaufany Microsoft Root Certificate Authority. Podpis wystawiono we wrześniu. Zjawisko nie jest nowe, ale jest o nim bardzo cicho. Microsoft nie jest też skory do dyskusji na temat WHCP pod kątem słabości procesu. A konsekwencje nonszalancji w podpisywaniu są w niektórych sytuacjach nieodróżnialne od efektów kradzieży klucza.
Inne zagrożenia
Podpisany przez Microsoft malware był rzadkością. Dotychczas malware obchodził wymaganie podpisów na inne sposoby. Należały do nich:
- wykorzystanie skradzionego podpisu firmy trzeciej (dziś już niemożliwe),
- wykorzystanie podatności w prawdziwym, „niewinnym” sterowniku celem skłonienia go do wykonania złośliwego kodu,
- ukrywanie payloadu w pliku sterownika bez unieważniania jego podpisu (póki co załatane).
Degradacja zaufania do WHCP to zły znak i zwiastun nadchodzących problemów z zaufaniem do aplikacji Microsoft Store i aktualizacji Windows Update. Microsoft musi zadbać o poprawę jakości procesu podpisywania sterowników.