Posted in

Globalna awaria systemów Windows

W piątek 19 Lipca globalna awaria systemów informatycznych sparaliżowała pół świata. Przestały działać lotniska, banki, czy nawet szpitale. Wiele firm musiało przejść na ręczny tryb pracy, aby w jakimkolwiek stopniu wznowić działanie.

Setki tysięcy ludzi na świecie odczuło tą awarię, byłem jedną z nich gdyż akurat wracałem z wakacji i siedziałem na lotnisku kiedy awaria się zaczęła, na szczęście samolot opóźnił się tylko o 3 godziny, wiele innych lotów notowało opóźnienia na poziomie 5 lub więcej godzin, a jeszcze inne były całkowicie odwoływane.

Jeżeli jesteśmy już przy lotniskach to warto dodać jako zabawną ciekawostkę, że prawie wszystkie loty w USA zostały uziemione ze względu na globalną awarię, oprócz lotów przewoźnika Southwest Airlines. Zapytacie jaki był ich sekret, że nie dotknęła ich globalna awaria? Otóż wszystkie ich system działają na… Windows 3.1 z 1992 roku 🙂

źródło: niebezpiecznik.pl

Skupmy się jednak na samej awarii i tym co ją wywołało.

Czy winny był system Windows?

Sama awaria nie była spowodowana przez problemy w systemie Windows, a wadliwą aktualizacją antywirusa firmy CrowdStrike. CrowdStrike jest biznesowym systemem antywirusowym nowej generacji, który działa niskopoziomowo (co oznacza że ma dostęp do jądra systemu) i służy do wykrywania wirusów, intruzów czy trojanów które mogą być nieuchwytne dla standardowego systemu antywirusowego.

Właśnie ten niskopoziomowy dostęp był przyczyną awarii. W kodzie sensora wykrywania zagrożeń na systemach Windows napisanym w języku C++ był błąd, który w skrócie rzecz ujmując kazał programowi odwołać się do miejsca w pamięci komputera, które jest puste. System Windows wykrywa takie niskopoziomowe działanie jako zagrożenie bezpieczeństwa i jego odpowiedzią na to jest… wyrzucić BSoD (blue screen of death) i zrestartować się aby ubić proces “agresora”. Niestety po takim restarcie antywirus który działa niskopoziomowo ponownie się uruchamiał, znowu wykonywał wadliwy kod, a system Windows ponownie restartował się aby go powstrzymać. I w ten sposób system operacyjny utykał w tak zwanej pętli śmierci, bez przerwy się restartując i nie mogąc wznowić pełnego działania operacyjnego.

Najdziwniejszy w tym wszystkim jest fakt, że firma CrowdStrike wypchnęła taką wadliwą aktualizację do użytkowników końcowych. Taki prosty błąd w kodzie powinien zostać wykryty na wczesnym etapie testów, wystarczyło uruchomić najnowszą wersję antywirusa w systemie operacyjnym Windows w środowisku testowym i zaraz gołym okiem byłoby widać co się dzieje.

Wiele mediów próbowało budować narrację jakoby owa awaria była spowodowana cyberatakiem na globalną infrastrukturę, są to jednak tylko domysły i niepotrzebne sianie strachu. Na tą chwilę wszystkie dowody wskazują na prosty bug, który przedostał się “na produkcję”.

Historia lubi się powtarzać

Podobny przypadek globalnej awarii miał już miejsce w 2010 roku, kiedy to antywirus firmy McAfee po błędnej aktualizacji zaczął wykrywać krytyczny plik w systemie Windows XP o nazwie “svchost.exe” jako wirus i blokować go, co prowadziło do crashu systemu i wyświetlania BSoD tak jak w przypadku współczesnej awarii.

Co ciekawe ówczesnym CTO firmy McAfee był George Kutz, który jest aktualnym CEO firmy CrowdStrike 🙂

Za jego kadencji obie firmy wywołały największe w historii na skale światową awarię systemów operacyjnych, wiem że to czysty przypadek ale całkiem interesujący.

Jak rozwiązać problem z death loopem na systemach Windows?

Niestety rozwiązanie tego problemu wymaga manualnej ingerencji ze strony administratora systemów, serwer musi zostać zbootowany w trybie awaryjnym (co może być jeszcze dodatkowo utrudnione jeżeli dyski zaszyfrowane są np. programem BitLocker), wejście do ścieżki C:\Windows\System32\drivers\CrowdStrike i ręczne usunięcie pliku o nazwie “C-00000291*.sys”.

Fakt, że cały proces naprawy systemów po awaria wymaga manualnej pracy inżynierów, a także często fizycznego dostępu do komputera (jeżeli jest to faktycznie fizyczna maszyna), dodatkowo wydłuża czas trwania awarii.

Czy antywirus jest potrzebny?

Antywirus jest jak najbardziej potrzebny i zalecany w przedsiębiorstwach, zwłaszcza biznesowe rozwiązania zapewniają dodatkową wielowarstwową ochronę twoich systemów i danych przed zagrożeniami.

Piątkowa awaria pokazała jednak że każdy program z niskopoziomowym dostępem do systemu może wyrządzić szkody i spowodować przestoje, nawet jeżeli jego głównym zadaniem jest wspieranie i chronienie twojej firmy.

Leave a Reply

Your email address will not be published. Required fields are marked *