Juha-Matti Tilli ei saanut unta – sen sijaan hän sai idean, joka vei Linuxin haavoittuvuuksien jäljille

31.10.2018

Juha-Matti Tilli päätti tutkia, voisiko hänen jatko-opintoaiheeseensa liittyvän ongelman ratkaista paremmin. Samalla hän ymmärsi, että aiemmat ratkaisutavat saattoivat muodostaa tietoturva-aukon.

Työskennellessään verkon tietopaketteja käsittelevien jatko-opintojensa parissa Juha-Matti Tilli kiinnostui harvinaisesta tavasta pilkkoa internetissä liikkuvia suuria tietomääriä verkon yli lähetettäviin palasiin eli IP-fragmentteihin. Hän ryhtyi selvittämään, miten olemassa olevat Linuxin kaltaiset open source -käyttöjärjestelmät kokosivat lähetettyjä fragmentteja tietopaketeiksi ja oli tyytymätön näkemäänsä.

Lähes kaikki järjestelmät näyttivät käyttävän fragmenttien kokoamiseen linkitettyä listaa. Se on tietorakenne, joka tietokoneen on pahimmassa tapauksessa käytävä kohta kohdalta läpi halutun tiedon löytämiseksi. Tietokone pystyy kuitenkin suorittamaan vain tietyn määrän operaatioita sekunnissa. Tietopakettien käsittely saattaa siten vaatia niin monta operaatiota, että pieni määrä mahdollisen hyökkääjän sopivasti luomia paketteja voi saada tietokoneen käyttämään kaiken ajan linkitetyn listan läpikäymiseen, eikä se enää ehdi käsitellä hyödyllistä liikennettä lainkaan.

”Perinteinen palvelunestohyökkäys vaatii noin 100 tietokonetta per hyökkäyksen kohde. Koska harvalla on varaa hankkia tällaista määrää tietokoneita hyökkäystarkoitukseen, hyökkääjä saastuttaa 100 tavallisten käyttäjien tietokonetta. Hyökkäystarkoitukseen luodut IP-paketit vaativat kuitenkin vain noin kolme tietokonetta per kohde eli hyökkäys on jopa 30 kertaa tehokkaampi kuin aiemmin tunnetut hyökkäystavat”, hän havainnollistaa.

”Tällaisen haavoittuvuuden löytäminen tuntui merkittävältä, mutta samalla hämmästelin sitä, miten se oli ylipäätään päästetty syntymään.”

”Eräänä yönä viime kesänä, yrittäessäni nukahtaa, sain radikaalin idean: mitä jos pakettien yhdistelyssä käytetty linkitetty lista korvattaisiin tasapainotetulla hakupuulla? Sen pitäisi olla huomattavasti nopeampi, kuin linkitetty lista, joka saattoi hitautensa vuoksi olla jopa palvelunestohyökkäyksille altistava tietoturvariski.”

Tillin saama idea tasapainotetun hakupuun käyttämisestä pilkotun tiedon uudelleenkokoamiseen tarkoittaa sitä, että palat jaetaan kahteen joukkoon, jotka jaetaan edelleen kahden joukkoihin, kunnes joukoissa on enintään yksi tietue. Esimerkiksi 64 tietueen muodostaman joukon tapauksessa jokaisen yksittäisen tietueen läpikäymisen sijaan joukolle on tehtävä kuusi ”vasemmalle vai oikealle” -päätöstä. 64 operaation sijaan tietokone siis suorittaa vain kuusi operaatiota ja suoriutuu tehtävästä siten yli kymmenen kertaa nopeammin kuin linkitettyä listaa käyttämällä. Saavutetun nopeuden ansiosta tietokoneeseen kohdistettu palvelunestohyökkäys vaatisi niin suuren tietopakettimäärän, että se olisi vaikea toteuttaa.

Tilli ryhtyi testaamaan Linuxin nopeutta ja havaitsi, että hänen kehittämänsä idea tasapainotetusta hakupuusta oli huomattavasti käytössä olevaa linkitettyä listaa nopeampi, aivan kuten hän oli arvellutkin. Tehdessään testauksia Tilli havaitsi myös toisen haavoittuvuuden, joka liittyy yleisimpään tapaan pilkkoa tietoa eli TCP-segmentointiin. Hän välitti tiedon havaitsemistaan uhista muun muassa Viestintävirastolle ja Linus Torvaldsille. Myöhemmin paljastui, että osa haavoittuvuuksista koski myös Microsoftin Windows-käyttöjärjestelmää. Sekä Windowsin että Linuxin haavoittuvuudet on nyt korjattu.

Aiheet