Už atvirojo kodo programinės įrangos pasaulio ribų tikriausiai nedaug kas būtų girdėjęs apie „XZ Utils“ – nedidelę, bet plačiai naudojamą duomenų suspaudimo „Linux“ sistemose priemonę. Tačiau praėjusios savaitės pabaigoje saugumo ekspertai atskleidė rimtą ir sąmoningą trūkumą, dėl kurio tinkle sujungti „Linux“ kompiuteriai gali tapti pažeidžiami kenkėjiškų atakų.
Vėliau buvo patvirtinta, kad ši spraga yra kritinė, todėl įgudęs įsilaužėlis gali perimti pažeidžiamų „Linux“ sistemų kontrolę.
Kadangi „Linux“ naudojama visame pasaulyje e. pašto ir žiniatinklio serveriuose bei taikomųjų programų platformose, dėl šios spragos užpuolikas galėjo patylomis gauti prieigą prie gyvybiškai svarbios informacijos, esančios viso pasaulio kompiuteriuose – galbūt įskaitant įrenginį, kuriuo dabar naudojatės skaitydami šį straipsnį.
Didelės programinės įrangos spragos, tokios kaip „SolarWinds“ įsilaužimas ir „Heartbleed“ klaida, nėra naujiena, tačiau ši spraga labai skiriasi.
Bandant įsilaužti į „XZ Utils“ buvo pasinaudota tuo, kaip dažnai veikia atvirojo kodo programinės įrangos kūrimas.
Kaip ir daugelis atvirojo kodo projektų, „XZ Utils“ yra labai svarbi ir plačiai naudojama priemonė, kurią daugiausia prižiūri vienas savanoris, dirbantis savo laisvalaikiu.
Ši sistema sukūrė didžiulę naudą pasauliui nemokamos programinės įrangos pavidalu, tačiau ji taip pat kelia unikalią riziką.
Atviras šaltinis ir „XZ“ įrankiai
Dauguma komercinės programinės įrangos, pavyzdžiui, „Windows“ operacinė sistema arba „Instagram“ programėlė, yra uždarojo kodo – tai reiškia, kad niekas, išskyrus jos kūrėjus, negali skaityti ar keisti pirminio kodo. Tuo tarpu atvirojo kodo programinė įranga yra atvirai prieinama ir žmonės gali su ja daryti, ką nori.
Atvirojo kodo programinė įranga yra labai paplitusi, ypač programinės įrangos, kurios vartotojai nemato, ir labai vertinga. Viename neseniai atliktame tyrime apskaičiuota, kad bendra šiuo metu naudojamos atvirojo kodo programinės įrangos vertė siekia 8,8 trilijono JAV dolerių.
Dar maždaug prieš dvejus metus projektą „XZ Utils“ prižiūrėjo programuotojas Lasse Collin. Maždaug tuo metu paskyra, pasivadinusi Jia Tan vardu, pateikė programinės įrangos patobulinimą.
Netrukus po to atsirado keletas anksčiau nežinomų paskyrų, kurios pranešė apie klaidas ir pateikė prašymus dėl funkcijų Collinui, taip darydamos jam spaudimą priimti pagalbininką projektui prižiūrėti. Jia Tan buvo logiškas kandidatas.
Per kitus dvejus metus Jia Tan vis labiau įsitraukė į šį procesą ir, kaip dabar žinome, į programinės įrangos išeities kodą įdiegė kruopščiai paslėptą ginklą.
Pakeistame kode slapta pakeista kita programinė įranga, visur esanti tinklo saugumo priemonė „OpenSSH“, kad ji perduotų kenkėjišką kodą į tikslinę sistemą. Dėl to konkretus įsilaužėlis tikslinėje mašinoje galės paleisti bet kokį jam patinkantį kodą.
Naujausia „XZ Utils“ versija, kurioje yra atgalinių durų virusas (angl. Backdoor), turėjo būti įtraukta į populiarias „Linux“ distribucijas ir išplatinta visame pasaulyje. Tačiau ji buvo užfiksuota pačiu laiku, kai „Microsoft“ inžinierius ištyrė nedidelius atminties pažeidimus savo sistemoje.
Greitas atsakas
Ką šis incidentas reiškia atvirojo kodo programinei įrangai? Na, nepaisant pirminės regimybės, tai nereiškia, kad atvirojo kodo programinė įranga yra nesaugi ar nepatikima.
Kadangi visas kodas prieinamas viešai, viso pasaulio kūrėjai gali greitai pradėti analizuoti atgalines duris ir jų įgyvendinimo istoriją. Šios pastangos galėtų būti dokumentuojamos, platinamos ir dalijamasi jomis, o konkretūs kenkėjiško kodo fragmentai galėtų būti nustatyti ir pašalinti.
Tokio masto atsakas būtų buvęs neįmanomas naudojant uždarojo kodo programinę įrangą.
Norėdamas atakuoti uždarojo kodo įrankį, užpuolikas turėtų laikytis kiek kitokio požiūrio – galbūt ilgą laiką apsimesti įmonės darbuotoju ir pasinaudoti uždarojo kodo programinės įrangos gamybos sistemos trūkumais (pavyzdžiui, biurokratija, hierarchija, neaiškiu pavaldumu ir menku dalijimusi informacija).
Tačiau jei jie vis dėlto pasiektų tokias atgalines duris nuosavybinėje programinėje įrangoje, nebūtų jokių galimybių atlikti didelio masto paskirstytą kodo auditą.
Pamokos, kurias reikia išmokti
Šis atvejis yra vertinga galimybė sužinoti apie kitokio pobūdžio silpnąsias vietas ir pažeidžiamumą.
Pirma, jis parodo, kaip lengvai anoniminių naudotojų ir kūrėjų santykiai internete gali tapti toksiški. Iš tikrųjų ataka priklausė nuo šių toksiškų sąveikų normalizavimo.
Atrodo, kad socialinės inžinerijos atakos dalyje buvo naudojamos anoniminės „sockpuppet“ paskyros, siekiant kaltės jausmo ir emocinės prievartos, kad pagrindinis prižiūrėtojas per kelerius metus sutiktų su nedideliais, iš pažiūros nekenksmingais kodo papildymais ir būtų priverstas perduoti kūrimo kontrolę Jia Tan.
Vienas vartotojas skundėsi: „Jūs ignoruojate daugybę šiame adresatų sąraše pūvančių pataisų.“
Kai kūrėjas prisipažino turįs psichikos sveikatos problemų, kita paskyra susigriebė:
„Atsiprašau dėl jūsų psichikos sveikatos problemų, bet svarbu žinoti savo ribas.“
Atskirai tokie komentarai gali atrodyti nekalti, tačiau kartu jie tampa tarytum visuotiniais.
Turime padėti kūrėjams ir prižiūrėtojams geriau suprasti žmogiškuosius kodavimo aspektus ir socialinius santykius, kurie daro įtaką paskirstytajam kodui, jį palaiko arba diktuoja, kaip jis kuriamas. Reikia daug nuveikti, ypač siekiant geriau pripažinti psichinės sveikatos svarbą.
Antroji pamoka – tai, kaip svarbu atpažinti „obfuscation“ – procesą, kurį dažnai naudoja kibernetiniai įsilaužėliai, siekdami, kad programinės įrangos kodą ir procesus būtų sunku suprasti ar ištaisyti. Daugelyje universitetų to nėra mokoma kaip standartinio programinės įrangos inžinerijos kurso dalies.
Trečia, kai kuriose sistemose vis dar gali būti naudojamos pavojingos „XZ Utils“ versijos. Daugelis populiarių išmaniųjų prietaisų (pvz., šaldytuvai, dėvimi prietaisai ir namų automatizavimo įrankiai) veikia su „Linux“.
Šie prietaisai dažnai sulaukia tokio amžiaus, kai jų gamintojams finansiškai nebeapsimoka atnaujinti programinę įrangą – tai reiškia, kad jie negauna pataisų dėl naujai aptiktų saugumo spragų.
Ir galiausiai, kad ir kas rengtų šią ataką – kai kas spėja, kad tai gali būti valstybės veikėjas – dvejus metus turėjo laisvą prieigą prie įvairių kodų bazių, todėl kruopščiai ir kantriai apgaudinėjo.
Net ir dabar tas priešininkas mokysis iš to, kaip į ataką reaguoja sistemų administratoriai, „Linux“ platintojai ir kodų bazių prižiūrėtojai.
Kur toliau?
Kodo prižiūrėtojai visame pasaulyje dabar strateginiu ir taktiniu lygmeniu galvoja apie savo pažeidžiamumą. Jie rūpinasi ne tik savo kodu, bet ir kodo platinimo mechanizmais bei programinės įrangos surinkimo procesais.