Več kot 97 odstotkov sistemov po Crowdstrikovem fiasku že deluje
Matej Huš
27. jul 2024 ob 13:23:35
Teden dni po katastrofalni posodobitvi varnostnega paketa Crowdstrike Falcon je 97 odstotkov sistemov že operativnih, so sporočili iz podjetja. Obuditi je bilo treba kar 8,5 milijona računalnikov, ki so zaradi neveljavne posodobitve obtičali ob modrem zaslonu ob vsakem zagonu. Groba rešitev je bilo vztrajno ponovno zaganjanje, tudi do 15-krat, da bi sistem vmes pridobil novo verzijo okvarjene posodobitve, kar bi omogočilo ponovni zagon.
Napaka ni bila Microsoftovo maslo, čeprav je v laični javnosti marsikdo menil, da je šlo za ponesrečen Windows Update. A v resnici je CrowdStrike storil več napak. Geneza sega daleč v preteklost, ko so se odločili, da bo njihova programska oprema tekla s privilegiji, kot jih imajo gonilniki. V operacijskem sistemu Windows - in večini drugih - uporabniška koda teče na višjih nivojih, ki nimajo neposrednega dostopa do strojne opreme ali jedra, zato prav veliko škode ne morejo narediti. Če obvisijo, jih sistem pokonča in normalno deluje dalje. Gonilniki pa živijo v nižjem krogu, zato imajo bistveno več možnosti povzročanja škode. Če gre karkoli narobe, se sistem ustavi in prikaže modri zaslon, saj tako zavaruje podatke in ostale procese pred večjo škodo. Poblaznela koda, ki teče v spodnjih krogih, lahko namreč povzroči ogromno škode. Modri zaslon je sinonim za Windows, a analogne načine zaščite integritete sistema imajo tudi drugi sistemi, denimo kernel panic v Linuxu. Sistem z nestabilno kodo v jedru oziroma z enakimi privilegiji je nevaren, zato ne sme delovati.
CrowdStrike je svoj programski paket Falcon predstavil kot gonilnik, s čimer je dobil bistveno več moči od običajnih programov. To je bilo nujno, so pojasnjevali, da so lahko izvajali zaščito na nivoju sistema. Običajni programi preprosto nimajo dostopa do sistema na tako nizkem nivoju. Uporaba gonilnikov za programe, ki nimajo nič skupnega z napravami, zato ni tako redka. Gonilniki pa so eden najbolj problematičnih delov kode, saj imajo dostop do nižjih ravni, hkrati pa jih ne piše Microsoft. Da bi zagotovili nadzor in ustrezno kakovost, je Microsoft že davno uvedel podpisovanje z WHQL (Windows Hardware Quality Labs), ki jamči za zanesljivost gonilnika. Tudi CrowdStrike Falcon tak podpis ima. Načeloma uporaba gonilnikov WHQL preprečuje težave. Ne pa vedno.
Pridobivanje podpisa traja, proizvajalec pa bi se rad hitro odzival na nove grožnje in posodabljal CrowdStrike Falcon, ne da bi vsakokrat čakal na podpis WHQL. Podpisani gonilnik se zato ne spreminja tako pogosto, temveč uporabi definicije groženj, ki jih naloži s spleta. Izkazalo se je, da je bila koda gonilnika pomanjkljiva, saj ga je prazna datoteka z novimi definicijami povsem zmedla, zato se je zrušil. Ko pa se zruši gonilnik, se sistem ustavi, da prepreči škodo. Kaj vse je šlo narobe, je CrowdStrike že razlagal - zatajilo je več nivojev preverjanja kakovosti. A zatajil je že osnovni koncept varnosti pri pisanju kode, ki terja prečiščenje (sanitizing) vseh zunanjih vnosov. Kadarkoli se koda zanaša na podatke uporabnika ali zunanje datoteke, mora poskrbeti, da ne glede na bizarnost podatkov ne more priti do škode. Prazna datoteka, kar je bil konkretni problem, je še najbolj mila verzija, vrivanje kode pa precej resnejši problem.
Zanimivo pa je, da je nekoč v preteklosti Microsoft že poizkusil odpraviti to okno za težave. Falcon teče kot gonilnik, ker drugače nima dostopa do vseh funkcij sistema. Microsoft je v preteklosti želel izdelati API, ki bi bil na voljo proizvajalcem podobne programske opreme in bi jim omogočal opravljati te funkcije brez delovanja kot gonilnik. To bi bilo precej varneje, a je tedaj rešitvi nasprotovala Evropska komisija. Trdili so, da bi zaklep jedra in dostop le preko API, ki bi jih podjetje seveda lahko selektivno delilo, ovirala konkurenco. Microsoft poudarja, da je to eden izmed pomembni faktorjev v zadnjem fiasku. Apple teh regualtornih težav nima in je jedro zaklenil - je pa, ironično, tudi že imel težave prav s CrowdStrikom.