Microsoft tłumaczy, czemu CrowdStrike popsuł świat. I dlaczego to już się nie powtórzy
Wielka awaria komputerów z Windowsem była wywołana przez wadliwą aktualizację oprogramowania CrowdStrike - ale czy system operacyjny nie może takich awarii przewidzieć i odpowiednio się na nie przygotować? I tak, i nie. To zależeć będzie od dostawców oprogramowania antywirusowego, którym Microsoft ma pozwalać na coraz mniej.
Piątek 20 lipca to dzień, w którym nastąpiła jedna z dotkliwszych awarii informatycznych w historii. Przez znaczną część dnia sparaliżowanych było dziesiątki tysięcy firm i instytucji na całym świecie, w tym lotniska czy banki. Komputery pracujące w tych miejscach nie były w stanie się uruchomić - wyświetlając informację o konieczności przejścia w tryb naprawczy, co nigdy nie następowało.
Przyczyną awarii było oprogramowanie zabezpieczające CrowdStrike, które ma chronić komputery przed cyberzagrożeniami. Nie pochodzi ono od Microsoftu ani producentów komputerów, jest jednak popularne i chętnie wykorzystywane przez wiele podmiotów. Wadliwa aktualizacja tego oprogramowania zdestabilizowała cały moduł CrowdStrike, a wraz z nim cały komputer. Jest to możliwe z uwagi na fakt, że programy antywirusowe w Windowsie mają specjalne przywileje, pracując blisko jądra systemu, a więc poniżej warstw bezpieczeństwa. Oznacza to, że komputer z Windowsem jest tak stabilny, jak stabilne jest jego oprogramowanie antywirusowe. Jeżeli jest lichej jakości, jak wspomniany CrowdStrike, zaczynają się kłopoty.
Nie przegap:
Windows to na dziś jedyny mainstreamowy system operacyjny, pozwalający oprogramowaniu antywirusowemu na tak duże uprawnienia
To po części wina strachu przed pozwem ze strony dostawców usług antywirusowych, którzy zagrozili Microsoftowi skargą do Komisji Europejskiej, jeżeli ten zablokuje dostęp do serca Windowsa (stając się tym samym, w ich oczach, monopolistą na rynku kompletnych systemów bezpieczeństwa dla Windows). Android i iOS nie oferują podobnych interfejsów (API) dla oprogramowania, zaś te w macOS zostały w miarę niedawno usunięte. Może wreszcie czas i na Windowsa?
Mając na uwadze hack, jaki zastosował CrowdStrike i co udokumentował Microsoft, zdecydowanie czas najwyższy. Nawalił bowiem moduł, który nosi techniczną nazwę sterownika filtra systemu plików. To opcjonalny sterownik, który dołącza się do stosu oprogramowania systemu plików w systemie Windows. Jego zadaniem jest monitorowanie, filtrowanie i/lub modyfikowanie zachowania operacji wejścia/wyjścia plików (I/O). Jako komponenty trybu jądra, działają one jako część wykonawcza systemu Windows.
Sterowniki filtra systemu plików mogą filtrować operacje I/O dla jednego lub więcej systemów plików lub woluminów. W zależności od charakteru sterownika, filtrowanie może oznaczać rejestrowanie, obserwowanie, modyfikowanie lub nawet zapobieganie operacjom. Typowe zastosowania dla sterowników filtra systemu plików obejmują:
- Programy antywirusowe/antymalware, które skanują pliki pod kątem wirusów lub malware przy tworzeniu, dostępie lub modyfikacji plików.
- Programy szyfrujące dane, które automatycznie szyfrują i deszyfrują dane zapisywane na dysku lub odczytywane z dysku.
- Filtry kopii zapasowych używane do tworzenia kopii danych w celu odzyskiwania po katastrofach i ciągłości biznesowej.
- Filtry kompresji, które kompresują i dekompresują dane w locie, co oszczędza miejsce na dysku i poprawia wydajność przy dużych ilościach danych.
- Filtry zarządzania hierarchicznego przechowywania danych, które zarządzają migracją danych między nośnikami o wysokim i niskim koszcie.
Istnieją dwa modele sterowników filtra systemu plików w systemie Windows: model minifiltrów, w którym minifiltr korzysta z systemowego wsparcia Menedżera Filtrów (FltMgr), co upraszcza rozwój filtrów, oraz starszy model sterownika filtra systemu plików. Niestety w przypadku CrowdStrike’a, usterka odwoływała się do złego adresu w pamięci, co jest błędem krytycznym, jeżeli proces aplikacji nie jest w żaden sposób chroniony.
Problem w tym, że Microsoft zapewnia na to od lat lepsze metody
CrowdStrike i jemu podobni wykorzystują procesy w formie sterowników na poziomie systemowego kernela nie z braku kompetencji czy złośliwości względem użytkownika. Niektóre rodzaje zagrożeń są nie do wykrycia przez procesy o typowych aplikacyjnych uprawnieniach - w tym bootkity i rootkity. Uprawnienia sterownika pozwalają takiemu CrowdStrike’owi na nadzór wszystkich operacji w pamięci masowej i ich ewentualne blokowanie, w wydajny sposób, będąc nietykalnymi dla złośliwego oprogramowania. Owa wydajność jest kluczowym problemem.
Tyle że Microsoft przez ostatnie lata w dużej mierze ów problem rozwiązał. Znaczna część modułów wewnętrznych Windowsa w toku ewolucji systemu przeniesiona z kernel mode do user mode, czyli odsuwając je od kernela. Dodatkowo, Windows 11 wymaga od komputera sprzętowej obsługi TPM 2.0, Secure Boot i VBS (Virtualization Based Security). Sam user mode zyskał zabezpieczenia niegdyś dostępne tylko w trybie kernela, w tym VBS Enclaves, Protected Processess, ETW Events i Antimalware Scan Interface. Dodatkowo, sam kernel Windowsa jest przepisywany w języku Rust, który jest znacznie odporniejszy na błędy adresowania pamięci.
Skoro jest tak dobrze, to czemu jest tak źle? Microsoft ma pomóc twórcom oprogramowania antywirusowego
- Planujemy współpracę z ekosystemem dostawców rozwiązań bezpieczeństwa, aby wykorzystać nowoczesne funkcje bezpieczeństwa Windows do unowocześnienia ich podejścia, zapewniając obsługę techniczną, wręcz tym samym zwiększając bezpieczeństwo wraz z niezawodnością. Obejmuje to pomoc ekosystemowi poprzez zmniejszenie potrzeby sterowników jądra w celu uzyskania dostępu do ważnych danych bezpieczeństwa, zapewnienie ulepszonej izolacji i możliwości zapobiegania manipulacjom za pomocą technologii, takich jak nasze niedawno ogłoszone enklawy VBS, oraz umożliwienie podejść zerowego zaufania, takich jak poświadczenie wysokiej integralności, które zapewnia metodę określania stanu bezpieczeństwa maszyny na podstawie kondycji natywnych funkcji bezpieczeństwa systemu Windows
- jak czytamy w oświadczeniu Microsoftu.
Tłumacząc z korpo-języka na ludzki: Microsoft zamierza prosić i namawiać, wykorzystując do tego swój program MVI (Microsoft Virus Initiative). MVI dostarcza narzędzia, zasoby i wiedzę wspierającą lepszą współpracę oraz zapewniającą doskonałą wydajność, niezawodność i zgodność z systemem Windows. Aby zostać członkiem MVI, organizacja musi spełniać określone wymagania, takie jak:
- Rozwiązanie zabezpieczające musi zapewniać ochronę w czasie rzeczywistym, wykrywając, zapobiegając i likwidując złośliwe oprogramowanie.
- Organizacja musi być odpowiedzialna za rozwój i dystrybucję aktualizacji dla klientów końcowych, zapewniając zgodność z Windows.
- Organizacja powinna być aktywna w branży antymalware i posiadać pozytywną reputację.
- Wymagane jest podpisanie umowy o zachowaniu poufności (NDA) oraz umowy licencyjnej programu z Microsoft.
- Organizacja musi być aktywna w programie i spełniać wszystkie jego wymagania.
- Rozwiązanie zabezpieczające musi być certyfikowane przez niezależne organizacje testujące i utrzymywać tę certyfikację co roku.
Problem w tym, że dołączenie do MVI jest dobrowolne, nie ma też żadnego obowiązku stosowania się do ustalonych w jej ramach dobrych praktyk. Microsoft zamierza więc zapewnić twórcom oprogramowania antywirusowego taką pomoc, jaką tylko realnie biznesowo jest w stanie zapewnić - głównie inżynieryjną i kompetencyjną. Nie zamierza jednak na razie niczego zamykać w Windowsie ani niczego blokować - co oznacza, że incydent z Crowdstrike może się jeszcze kiedyś powtórzyć z udziałem oprogramowania od innej firmy. Lub ponownie od tej.