19 iulie, ziua când lumea IT a stat în loc

Dimineața zilei de 19 iulie a fost una interesantă. Jumătate din serviciile IT ale unui client de-al meu nu funcționau. Un prieten îmi zicea pe discord că a ajuns la birou și toate stațiile de lucru erau în blue screen. Windows eșuează peste tot, aparent, pe toate sistemele. Prima ipoteză de lucru: un update cu un timebomb neintenționat. 19 iulie 2024 nu este însă vreo dată semnificativă - niciun timer nu expiră pe 19 iulie 2024. Nu e un Y2K varianta 2024. Între timp veștile devin mai alarmante - zboruri anulate, aeropoarte inoperabile, spitale cu sistemele software blocate în ecran albastru. Apocalipsa Microsoft e aici!

Ici colo apar și glumeții. „Linuxul meu e încă în picioare!” zic veganii IT-ului. „Macul meu funcționează impecabil” zic oamenii care nu fac nimic util de pe sistemele lor de calcul. Apare mai multă informație. Nu e Microsoft de vină, e un vânzător de soluții de securitate, CrowdStrike. Pe bună dreptate, oamenii de la Microsoft sunt un pic supărați: „e nasol când ești învinovățit pentru ce a făcut colegul tău de cameră”. Dar nu toată lumea are aceeași problemă. Unii nu au blue-screen de îndată ce bootează - unii chiar nu pot folosi serviciile cloud vitale pentru operarea lor. Nelegat de CrowdStrike, cloud-ul Microsoft a avut o cădere cu câteva ore înainte de primele semne ale eșecului CrowdStrike.

Utilizatorii de Linux, văzând toate sistemele Windows cu bluescreen

Utilizatorii de Linux, văzând toate sistemele Windows cu bluescreen

Ce s-a întâmplat?

Primul lucru, să scoatem partea cea mai simplă din ecuație. Cloud-ul Microsoft mai pică. Se întâmplă. Complexitatea sistemelor moderne trage după ea multe probleme - și uneori, elemente de sprijin esențiale nu mai fac față. Și atunci toată lumea are de suferit. Dar Microsoft a lucrat destul de rapid și a rezolvat problema - era la ei în curte, au rezolvat-o în câteva ore.

CrowdStrike, însă, e o poveste mai complicată. CrowdStrike este o soluție de securitate folosită de corporații pentru a-și face administrarea a zeci de mii sau sute de mii de sisteme de calcul distribuite în întreaga lume. Soluția lor de securitate este foarte complexă și extraordinar de bună: lucrează la nivelul cel mai de jos posibil, în nucleul sistemului de operare și face chestii magice, oprește lucruri rele dinainte ca ele să se întâmple și au soluții pentru tot felul de probleme pe care le au de obicei corporațiile. Nu știam de firma asta până acum, dar se pare că oamenii care trebuie știau - soluțiile lor de securitate erau și sunt folosite de multe corporații. Se estimează că problema pe care au cauzat-o a afectat cam 8.5 milioane de utilizatori, care în general nu sunt nime-n-drum ca mine sau ca tine, că soluțiile lor sunt scumpe și nu sunt pentru nasul tuturor.

Cum spuneam, CS au această soluție care face diverse magii la nivel de nucleu. Și în episodul din 19 iulie, fix componenta aceea de nucleu a fost actualizată - și actualizarea a dat greș. E neclar de ce, probabil o să apară în câteva zile ceva analize de la oameni mai aproape de subiect; mă aștept că din 19 iulie încoace echipa CrowdStrike caută cea mai convenabilă minciună în legătură cu felul în care a fost posibil un eșec de asemenea proporții, și o să o aflăm pe aceea când lucrurile se vor mai calma. Un analist zicea că la un moment dat are loc o dereferențiere a unui pointer nul, și o să explic un pic și ce e aia mai jos. Probabil că asta se întâmplă, dar problema tehnică propriu-zisă este mai puțin importantă. În fine, întrebarea e: cum au reușit, totuși, să transforme din 19 iulie o mini-apocalipsă IT. Și pentru a explica, mai avem nevoie de un pic de context. Mai exact, să explic de ce o corporație ar folosi serviciile unei firme care ar putea foarte bine să-i pună în genunchi toate sistemele automatizate și toată infrastructura.

Ce este CrowdStrike, varianta care nu e la ei pe site

Să zicem că ai o companie destul de mică. Zece oameni. Ai zece calculatoare de întreținut, cel puțin, mai ai poate câteva servere, și ai probabil un om care să facă treaba asta. Omul ăla nu prea are de lucru, dar trebuie să-l ții, pentru că partea asta de suport de infrastructură e complicată și omul nu prea poți să-l folosești la multe alte lucruri. El știe doar să facă asta, și va face doar asta - felicitări, într-o firmă de zece oameni ai un departament de IT.

Acum, să ne uităm un pic mai sus. O sută de oameni? Ai minimum o sută de calculatoare. Dacă nu cumva mai multe. Problemele devin deja din ce în ce mai complexe. Ai nevoie de sisteme de stocare a documentelor, lucrurile se complică enorm. Un singur om nu ajunge. Ai nevoie de mai mulți oameni. Câți? Depinde de ce nevoi concrete ai, dar curând nota de plată pentru întreținerea infrastructurii devine mult prea mare. Ce faci când ai o mie de oameni? Două mii? Două sute de mii? Oameni care poate nu se pricep foarte mult la manevrat sistemele alea de calcul. Nu poți să le faci educație la două sute de mii de oameni. Lucrurile pot s-o ia întotdeauna rău razna când ai un număr atât de mare de oameni. Un manager poate găsește un stick și îl bagă în laptop (și fără să își dea seama dă acces unui hacker la toată informația din rețeaua corporației). Sau, poate, un operator uită un terminal deschis, și un hacker intră, folosind un exploit, și reușește să acceseze rețeaua corporației, făcându-și un backdoor permanent. Cu cât ești mai mare cu atât e mai complicat să te aperi. Închipuie-ți un portar de fotbal, față în față cu un executant de penalty-uri. Ei, acum mutați barele în colțurile de unde se bate corner, și faceți poarta de trei ori mai înaltă. De câți portari ai nevoie să prinzi mingea?

Cam așa arată câmpul securității cibernetice, mai ales când tu ești o corporație foarte mare. E foarte ușor să găsești o breșă ca hacker, e mult prea greu să te aperi de toate posibilele atacuri dacă ești de partea cealaltă. Și pentru hackeri e foarte motivant - poți câștiga foarte mulți bani dacă ai acces în niște locuri unde n-ar trebui să ai. Sau poți face foarte mult rău. Și uneori, să faci mult rău e suficient.

Sunt câteva feluri în care poți opri cât mai multe din potențialele atacuri. Primul, să pui mai mulți oameni care să monitorizeze activ lucrurile, să scaneze tot ce se întâmplă peste tot. E foarte nepractic, pentru că oamenii ăia trebuie educați, învățați cum să prevină lucrurile, și chiar și-așa sunt sortiți eșecului, că oamenii nu-s perfecți. Așa că evident vrei să automatizezi procesul.

Al doilea mod este să îngheți tot software-ul folosit la o versiune pe care o știi de nespart. Ai verificat-o la sânge, totul merge perfect, doar că versiunea de software e de acum patru-cinci ani. Lumea se mișcă repede în IT. De-asta departamentul de IT este piedica numărul unu a proiectelor software făcute în corporații, și e natural așa.

Al treilea mod, și poate cel mai profitabil, e să mergi pe mâna unor oameni care au „sosul magic”, „mierea Trăznet”, ce vreți voi. CrowdStrike sunt cei care-ți oferă sosul magic. O parte din el. Nu știu ce anume oferă CS, dar știu că pentru orice manager, faptul că a putut să taie la un sfert departamentul de IT și să-l înlocuiască cu o subscripție la CrowdStrike este un mare succes - a făcut din nimic o mare economie, a sporit profitul firmei dintr-un simplu contract de servicii, acționarii sunt fericiți, toată lumea e mulțumită. Mai puțin, poate, departamentul de IT.

CrowdStrike deține, așadar, o soluție magică care te face mai puternic și cu care te simți mai în siguranță. Este un lucru bun pentru corporație. Sunt rapizi, sunt capabili să distribuie actualizări la soluția lor de îndată ce au aflat de probleme. Nu contează. Important este că serviciile lor aduc o mare economie în bugetul firmei și îți oferă siguranța că miile tale de angajați au toți același nivel de securitate.

Ce nu a mers cum trebuie?

V-am zis că CS au sosul magic? E atât de magic încât își permit să facă actualizări la software în câteva ore pe milioane de sisteme ale clienților lor. Soluțiile alternative iau zile întregi până când îți pun actualizările; celor de la CrowdStrike le ia minute. Teoretic nu e nimic ce ar putea să meargă greșit; cu un proces bun de verificare, CrowdStrike nu are ce să greșească. Lucrurile sunt bine gândite, sunt o companie serioasă, nu are ce să meargă prost. Doar că a mers. Cumva, lucrurile au mers prost și lucrurile pe care le pretindeau, că știu cum să facă actualizările alea în siguranță, să meargă totul bine, cu toată știința lor, cineva a făcut o greșeală. Sau, mai degrabă, probabil sunt câteva greșeli în lanț care au dus la rezultatul dezastruos. Au pus update-ul joi seara în SUA, update-urile s-au făcut pe calculatoarele europenilor, și ei sunt primii care au dat cu capul de problemă. A durat un pic să se prindă că actualizările sunt date peste cap. Au găsit în cele din urmă o soluție - dar soluția însemna că trebuia să faci o chestiune expertă cu privilegii de administrator pe toate sistemele fizice. Adică pe toate laptopurile oamenilor care lucrează de acasă. Pe toate sistemele care sunt puse în diverse locații prin lume. Peste tot, aveai nevoie de un om care să scrie niște comenzi și să pună parola de administrator - un secret care nu e cunoscut de utilizatorul normal al sistemului. Lucrurile sunt dificil de făcut. Problema pe care a creat-o CrowdStrike este o PROBLEMĂ cât se poate reală. Costisitoare. Foarte costisitoare.

Cum a fost posibil? Probabil neglijență. Uneori când faci lucrurile bine o dată, de două ori, de zece ori, a unsprezecea oară o să fii mai neglijent. Se întâmplă. Mai ales în lumea în care totul se învârte în jurul optimizărilor de costuri - uneori, chestia pe care nu o faci este cea care îți aduce micile optimizări de care ai nevoie. Poate că procesele pe care ei înșiși și le-au stabilit, pe care le prezintă, în cele din urmă, clienților, sunt prea costisitoare. Poate uneori trebuie să taie scurtături, să trimită lucrurile mai repede în producție. Sau poate cineva a crezut că a testat versiunea X, dar de fapt a testat versiunea X-1 și versiunea X a fost trimisă în producție. Încă nu știm.

Dar au apărut o mulțime de analiști care pretind că știu. Și să luăm la analizat câteva din afirmațiile lor.

Windows e o vidanjă

Indiferent de ce simțiți față de Windows, Windows 11 este probabil cel mai complex sistem de operare produs de o companie comercială, și e folosit de sute de milioane, poate miliarde de oameni pentru a face treabă zi de zi. Este pe o mulțime de dispozitive. E o unealtă complexă și extrem de sofisticată.

Și în cazul ăsta Windows a făcut exact ce trebuie. A văzut că un modul al nucleului este bușit, și l-a oprit. Că nu a avut o altă cale de recurs e o problemă. Suspectez că e foarte probabil ca într-unul din următoarele cinci update-uri de la Microsoft o să fie implementată o strategie foarte simplă de a refuza să încarce un modul al nucleului sistemului de operare dacă încărcarea unui modul nu a fost făcută cu succes după cinci rebootări succesive. Poate că în următorii doi ani o să existe o strategie de reîntoarcere la o versiune anterioară dacă versiunea nouă eșuează. Nu știu. Ce știu însă e că Microsoft are o tonă de dezvoltatori talentați și are niște echipe solide orientate pe produs. Îi urmărești, îi asculți, și știi că oamenii ăia își dau sângele pentru produsul ăla. Am încredere că treaba asta a umplut agenda pe următoarele trei luni pentru echipa de Windows.

Dar poate n-ar fi trebuit să fie modul al nucleului

O paranteză, îmi cer scuze celor care le sună urât „nucleu” în loc de „kernel”. Îmi vine și mie să-i zic kernel. Sunt în asentiment cu voi, dar acolo unde am limbă română să explic lucrurile, o să folosesc limbă română. Închidem paranteza.

Da, cred că n-ar fi trebuit, dar pot să înțeleg de ce au făcut-o. E un produs de securitate, vrea să fie acolo înainte să ajungă oamenii răi pe sistemul tău. Ca modul al nucleului e aproape cea mai bună variantă posibilă - cu singurul upgrade posibil să devii o platformă de virtualizare și să rulezi sistemul de operare virtualizat. Soluția nu e rea. Problema este cui îi lași dreptul să-ți scrie cod acolo. Și aici cred că CrowdStrike a făcut exact ceea ce face orice manager dintr-o firmă de servicii IT. A optimizat costurile. Nu știu cum. Nu îmi pasă foarte mult. Dar știu că sursa reală e optimizarea costurilor, făcută fără cap.

Linux este inexpugnabil, nu s-ar fi întâmplat nicioda

Redhat publica această soluție pentru o problemă care bloca sistemul. 13 iunie. Vedeți mai multe detalii și pe Orange Site. Poate că lucrurile nu au avut aceeași amploare, dar a fost doar o problemă de noroc - și probabil de faptul că prea puține corporații folosesc CrowdStrike pentru sistemele lor Linux.

Și ca să nu fac capitol separat, nici Mac nu e mai breaz. Habar n-am dacă a fost vreun incident legat de mac-uri, dar în momentul ăsta este practic doar o problemă de șansă, și de raportare. Cine are problemele astea nu prea vorbește despre ele decât dacă are o problemă în a continua să furnizeze servicii clienților. Și dacă în cazul Linux și Windows e clar că sistemele sunt puse la muncă, nu cred că nimeni cu capul pe umeri s-ar baza pe un mac pentru… orice. Mac-ul e chestia pe care o dai managerului și webdesignerului, că trebuie să arate cool în cafenea. Dar nu e nimic critic pe-acolo.

Este o dovadă că DEI nu funcționează

Poate una din cele mai halucinante teorii este că acest update eronat se datorează politicilor de diversitate, echitate și incluziune. E și mai amuzant când auzi teoria asta de la cineva care probabil are un job bine plătit fix din cauza politicilor DEI. În fine, o să auzi teoria asta la trumpiștii și cryptoboii (mai nou investitorii în inteligență artificială) din IT. Țin minte cazul unui individ care a început prin a explica că e vorba de un NULL dereference (nu cu cuvintele astea că nu le știa, și nici nu înțelegea foarte bine C++) și a ajuns că e foarte probabil că politicile DEI sunt de vină. Ce legătură are un NULL dereference cu politicile DEI? Bănuiesc că atunci când ești alb și votezi cu cine trebuie nu faci NULL dereference-uri.

Rewrite it in Rust

Pentru cei care nu știu, Rust este un limbaj de programare foarte încâlcit anti-programator pe care toți programatorii care vor să fie trendy îl bagă pe gât oamenilor ca fiind viitorul. Motivul? Spre deosebire de C și C++, nu poți face anumite erori de programare foarte ușor. Sau le poți face, dar dacă le faci vei genera o eroare care va fi prinsă și se va porni ceea ce se numește un eveniment de „panică” ce va opri execuția programului…

… adică fix ce s-a întâmplat în cazul acestui modul al nucleului de Windows. Adică nu, nu ar fi fost nimic diferit, poate cel mult mesajul afișat ar fi fost altul.

Rust e pus în față de fiecare dată când apar ceva probleme, și, pentru că nu puteau să lipsească de la conspiratorii ăștia din programare care deodată aveau câteva ore libere, a apărut teoria că este o conspirație de-a comunității Rust pentru a promova programarea în Rust ca alternativă sigură pentru C++… Și rar am auzit ceva mai stupid. Nu văd de ce o companie și-ar distruge reputația doar pentru a adopta un limbaj de programare. În fine, e plin de conspirații pentru că informația reală e foarte puțină.

Ce se poate face pe viitor?

Sincer, se pot face multe. Scott Hanselman sugera (sau a dat retweet la o sugestie) să se pună logo-ul companiei în fiecare modul încărcat de nucleul Windows, și când crapă să pună poza companiei producătoare în loc de logo-ul Windows. Măcar se dă vina pe cine trebuie.

Dincolo de „rewrite it in Rust” care nu ar rezolva nimic, nu am auzit nimic despre soluții la problema asta. Cel mai probabil corporațiile o să continue să folosească produsele CrowdStrike pentru că după ce și-au eliminat mare parte din staff-ul tehnic care făcea ceea ce face CrowdStrike, nici nu au o soluție alternativă pentru facilitățile pe care le oferă (când le oferă) CS. Cu alte cuvinte, sunt ostatice, dar sunt ostatice într-o situație relativ comodă. Niciun CTO nu o să angajeze 5000 de oameni pe partea de IT și infrastructură ca să înlocuiască ceva prost dar măcar clar cu o nebuloasă pe care nu are curaj să o exploreze. Niciun contabil nu ar da aprobarea pentru așa ceva. În ciuda faptului că o astfel de mișcare ar trebui să falimenteze CrowdStrike… nu se va întâmpla nimic.

Deci probabil că cine știe treaba asta cumpără acțiuni la CS și știe că e o companie care poate să dea peste cap toți giganții tehnologiei. Cum să nu investești în așa ceva? Mai ales când primești azi acțiunile cu un discount?

Cât timp e despre bani și profit, nu se poate face nimic.