Sosiaalinen manipulointi aseena
XZ-projektin takana on suomalainen kehittäjä Lasse Collin. Hän on ylläpitänyt tätä kriittistä avoimen lähdekoodin kirjastoa vapaaehtoispohjalta jo vuosia. XZ Utils on lähes jokaisen Linux-järjestelmän kulmakivi, mutta sen ylläpito oli pitkään puhtaasti yhden miehen harteilla.
Hyökkääjä, nimimerkillä Jia Tan, ei murtautunut Collinin järjestelmiin. Hän murtautui hänen luottamukseensa. Operaatio alkoi luomalla paineen tunteen. Useat, todennäköisesti hyökkääjän itsensä luomat tekaistut käyttäjätilit alkoivat painostaa Collinia julkisilla foorumeilla syyttäen häntä päivitysten hitaudesta. Samaan aikaan Jia Tan astui esiin ja tarjoutui auttamaan. Hän rakensi luottamusta tekemällä täysin legitiimejä ja hyödyllisiä korjauksia koodiin yli kahden vuoden ajan. Uupunut Collin antoi lopulta Jia Tanille laajemmat oikeudet ja ylläpitovastuun. Tämä oli hyökkäyksen kriittisin hetki, luottamus oli saavutettu.
Miksi takaovi oli niin vaarallinen?
Kyseessä ei ollut pelkkä ohjelmointibugi, vaan koodin sisään tarkoituksella rakennettu salainen sisäänkäynti. Hyökkääjä piilotti takaoven monimutkaisesti osaksi projektin testitiedostoja, jolloin haittakoodi ei näkynyt suoraan varsinaista lähdekoodia selatessa.
Takaovi oli suunniteltu murtamaan Linux-palvelimien SSH-yhteyden todennus. Tämä tarkoittaa, että hyökkääjä olisi voinut kirjautua sisään lähes mihin tahansa asennettuun Linux-palvelimeen maailmassa ilman salasanaa. Hyökkääjä olisi saanut korkeimmat mahdolliset oikeudet (root) järjestelmään. Hän olisi voinut varastaa tietoja, asentaa muita haittaohjelmia tai sulkea kokonaisia kriittisiä verkkoja jättämättä jälkiä. Koska XZ Utils on esiasennettu melkein kaikkialle Linux distribuutioille, hyökkäys olisi saattanut koskettaa globaalisti pankkeja, sähköverkkoja ja hallitusten infrastruktuuria.
Pelastus oli hiuskarvan varassa
Pelottavinta tapauksessa on se, ettei takaovi paljastunut missään virallisessa tietoturvaskannauksessa. Maailman pelasti Microsoftin insinööri Andres Freundin ammatillinen uteliaisuus. Freund huomasi SSH-kirjautumisessa täysin mitättömän, korkeintaan 0.5 sekunnin viiveen ja järjestelmän hieman kohonneen suorittimen käytön. Tämä pieni havainto johti langanpäähän, jota vetämällä koko salaliitto paljastui, juuri ennen kuin haitallinen versio ehti levitä laajasti tuotantokäytössä oleviin vakaisiin Linux-jakeluihin.
Mitä ohjelmistokehityksen on opittava?
XZ-läheltä piti -tilanne pakottaa koko IT-alan arvioimaan uudelleen, miten hallitsemme koodiriippuvuuksia. Maailman kriittisin infrastruktuuri ei voi levätä yhden uupuneen vapaaehtoisen, kuten Lasse Collinin, varassa ilman tukea ja valvontaa. Meidän on tiedettävä tarkalleen, kuka hallitsee niitä tuhansia pieniä palasia, joista ohjelmistomme rakentuvat. Pitkäaikainenkaan osallistuminen projektiin (kuten Jia Tanin kahden vuoden historia) ei saa tarkoittaa koodin sokeaa hyväksymistä tarkastamatta.
Ei vain avoimen lähdekoodin ongelma
On helppoa osoittaa sormella avointa lähdekoodia (Open Source) ja vapaaehtoistyön riskejä, mutta XZ-tapauksen opetus on universaali. Mikään ei estä vastaavan soluttautumisen tapahtumista suuryrityksen sisällä tai suljetun koodin tuotteessa. Päinvastoin avoimessa lähdekoodissa meillä on sentään teoreettinen mahdollisuus, että joku ulkopuolinen, kuten Andres Freund, tarkastaa koodin toimintaa ja löytää virheen. Suljetussa yritysympäristössä sisäpiirin uhka voi olla jopa vaarallisempi, koska koodia ei valvo kukaan yrityksen ulkopuolinen.
Teknologia on harvoin tietoturvan heikoin lenkki; se on lähes aina ihminen ja puutteellinen prosessi. XZ-tapaus muistuttaa, että turvallisuus ei ole pelkkiä palomuureja, vaan jatkuvaa valppautta ja prosessia, jossa kenenkään koodia ei hyväksytä pelkän ”hyvän tyypin” maineen perusteella.

