Ads 468x60px

torstai 10. huhtikuuta 2014

Heartbeat-haavoittuvuus - mitä sinun pitäisi tietää?



Tietoturvatutkijat julkaisivat 8.4. tiedot vakavasta aukosta OpenSSL-kirjastossa. Haavoittuvuus on erittäin mielenkiintoinen kahdesta syystä. Ensimmäiseksi OpenSSL-kirjastoa käytetään hyvin laajasti, mm. monessa kaupallisessa tuotteessa. Erittäin suosittu se on luonnollisesti avoimen lähdekoodin sovelluksissa. Joidenkin arvoiden mukaan kaksi kolmasosaa SSL/TSL-salatuista palveluista käyttää OpenSSL-kirjastoa. Toiseksi haavoittuvuus mahdollistaa haavoittuvan palvelimen muistin lukemisen. Haavoittuvuus ei siis mahdollista suoraan palvelimelle murtautumista. Tästä syystä sen CVSS-pisteytys ei ole järin korkea: 5.0. Tietoturva-ammattilaisen näkökulmasta bugi on kuitenki merkittävimpiä viime aikoina julkaistuja haavoittuvuuksia.

Heartbleediksi nimetty haavoittuvuus vuotaa siis palvelimen muistia. Vika on TLS-protokollan heartbeat-toimminnallisuudessa. Tämän avulla voidaan pitää TLS-yhteyksiä auki, ilman että aikaa vievää kättelyä ja salauksen uudelleen neuvottelua tarvitsee käydä läpi. Käytännössä haavoittuvuuden avulla pystyy lukemaan 64 kilotavua OpenSSL:n käyttämää muistia. Alla on linkitetty video, jossa haavoittuvuus, sen syyt ja vaikutus käydään läpi erittäin selkeässä esityksessä.

Muistin luku rajoittuu luonnollisesti vain OpenSSL-kirjaston varaamaan muistiin - kaikkea palvelimen muistia sillä ei voi lukea. Luetun alueen sijainti ei myöskään ole kontrolloitavissa. Tästä johtuen yksi lukukerta ei vielä välttämättä johda mielenkiintoisen tiedon vuotamiseen. Hyökkäys on kuitenkin erittäin nopea tehdä ja helposti toistettavissa useita kertoja. Käytännössä voidaan olettaa, että lähes kaikki OpenSSL-kirjaston muistista on luettavissa, ennemmin tai myöhemmin. Testeissä tutkijat ovat onnistuneet lukemaan haavoittuvuuden avulla sertifikaattien avaimet, muita salausavaimia ja käyttäjien salasana- ja tunnuspareja. Näistä merkittävin on tietysti sertifikaatin avaimet. Tämän avulla hyökkääjä pystyy avaamaan kaiken palvelimen ko. sertifikaatilla salaaman liikenteen - sekä menneisyyteen että tulevaisuuten. Mikäli hyökkääjä olisi esimerkiksi onnistunut tallentamaan liikennettä jo pitkältä ajalta, olisi se nyt kaikki luettavissa. Käyttäjätunnuksilla pystyy tietenkin kirjautumaan ko. palveluun uhrin oikeuksin.

I looked at some of the data dumps from vulnerable sites, and it was ... bad. I saw emails, passwords, password hints. SSL keys and session cookies. Important servers brimming with visitor IPs. Attack ships on fire off the shoulder of Orion, c-beams glittering in the dark near the Tannhäuser Gate. I should probably patch OpenSSL.

©Randal Munroe / XKCD.com


Haavoittuvuuden vaikutuksen rajoittaminen on hyvin hankalaa. Protokollan määritysten vuoksi heartbeat-viestin voi lähettää ennen varsinaista tunnistautumista (jos käytetään asiakassertifikaatteja). Hyökkäyksestä ei myöskään jää jälkiä lokeihin, joten sen havaitseminen on hankalaa. Jotkut valmistajat ovat tosin jo päivittäneet IDS/IPS-ratkaisunsa, ja riippuen toteutuksesta ne voivat joko estää tai ainakin havaita hyökkäykset.

Haavoittuvuuden korjauksen jälkeen on myös vaihdettava kaikki haavoittuvassa palvelussa käytössä olleet sertifikaatit. OpenSSL v1.0.1g sisältää korjauksen mm. tähän bugiin. Vanhimmat toteutukset eivät ole puolestaan sisältäneet bugia, eli ennen joulukuuta 2011 tehdyt asennukset eivät ole haavoittuvaisia. Sinänsä olisi toivottavaa, että kirjastoa olisi päivitetty tämän jälkeen, mutta mikäli näin ei ole, ei palvelu ole haavoittuvainen.

Hollannin kyberturvallisuusviranomainen NCSC suosittelee myös kaikkien salasanojen vaihtamista, joita on käytetty haavoittuvan palvelun yli. Tämä voi olla käytännössä erittäin merkittävä urakka. Organisaatioiden onkin tehtävä riskiarvio, kannattaako siihen ryhtyä. Myös muita avaimia, salasanoja tai vastaavia on voitu siirtää haavoittuvan palvelun yli, mutta kaikkien näiden selvittäminen ja vaihtaminen voi olla käytännössä mahdotonta.

Yksi ala kuitenkin varmasti tästä riemuitsee. Sertifikaattien myöntäjillä lienee kauppa käynyt viimeisten parin päivän aikana, kun suuri osa asiakkaista uusii sertifikaattejaan. Kaikki eivät tästä laskuta, mutta useimmilla myöntäjillä lienee vähintään pieni maksu sertifikaattien kumoamisesta ja uudelleen myöntämisestä.

-Antti Alestalo

Lisätietoja:

Heartbleed.com
Kyberturvallisuuskeskuksen tiedote Heartbleed-haavoittuvuudesta.
Heartbleed-testaustyökalu - HUOM! Mieti, onko tämän tiedon jakaminen välttämättä viisasta. Emme tiedä, kuka on tämän sivun pystyttänyt. Tekijä voi myös helposti kerätä täältä haavoittuvia kohteita. Testi sinänsä vaikuttaa toimivalta.
Python-työkalu testaamiseen - Tällä testasimme mm. KPMG:n omia palvelimia
Tech Crunchin video haavoittuvuudesta
Ars Technican artikkeli aiheesta
XKCD:n näkemys aiheeseen
XKCD:n selitys bugin toiminnasta - nerokkaan yksinkertaista, loppujen lopuksi!

2 kommenttia:

Jari Tenhunen kirjoitti...

"Muistin luku rajoittuu luonnollisesti vain OpenSSL-kirjaston varaamaan muistiin" <- Asia ei kai liene ihan noin, vaan muistin luku rajoittuu tyypillisesti muistiin (heap), jonka on varannut se prosessi missä OpensSSL-kirjaston koodia suoritetaan.

Antti Alestalo kirjoitti...

Jari, juurikin näin. Tässä pohdittiin myös tiimipalaverissa, jossa demosin tätä, että johtuuko muistin vuoto liian pitkästä lukuoperaatiosta vai liian isosta malloc()-kutsusta, jossa on jotain vanhaa dataa sitten sisällä. Ainakin artikkelien perusteella kuvittelisin, että kyse on ensimmäisestä. Saishan tuonkin selville, jos lataisi sen vanhan koodin jostain...

Lähetä kommentti