Raportti 1 (9) 30.4.2014 OpenSSL Heartbleed-haavoittuvuus 1 Taustaa 1.1 Haavoittuvuuden toimintaperiaate Tässä Viestintäviraston Kyberturvallisuuskeskuksen laatimassa raportissa käsitellään OpenSSL-haavoittuvuuden toimintaperiaatetta ja sen vaikutuksia Suomessa ja maailmalla. OpenSSL on avoimen lähdekoodin ohjelmistokirjasto, jota käytetään yleisesti eri käyttöjärjestelmien ja palvelinohjelmistojen osana tuottamaan salattu verkkoyhteys. OpenSSL-kirjastosta on paljastunut haavoittuvuus, jota hyväksikäyttämällä kolmannen osapuolen on mahdollista saada haltuunsa palvelimen muistissa sillä hetkellä olevia tietoja kuten käyttäjätunnuksia, salasanoja, sähköposteja, tiedostoja tai pikaviestejä. Haavoittuvuuden avulla myös palvelimen salaiset avaimet saattavat vuotaa hyökkääjälle. Haavoittuvuus on sisältynyt OpenSSL:n ohjelmakoodiin kahden vuoden ajan. Ongelmaa pahentaa se, että haavoittuvuuden hyödyntäminen ei jätä palvelimelle jälkiä joten takautuvasti on erittäin vaikea tietää, onko haavoittuvuutta tänä aikana hyödynnetty. Julkisuudessa haavoittuvuutta on alettu kutsua nimellä "Heartbleed". Haavoittuvuus perustuu OpenSSL-ohjelmakirjastossa olevaan ohjelmointivirheeseen. Ohjelmointivirheen seurauksena tietyllä tavalla muotoillut kutsut palauttavat palvelimen muistissa sillä hetkellä olevaa tietoa kutsun tekijälle. Tällaisen ns. Heartbleedkutsun voi tehdä kuka tahansa, ilman käyttäjätunnusta, salasanaa tai muuta aiempaa asiakassuhdetta palvelimeen. Palvelimen palauttamat vastaukset sisältävät palvelimen työmuistissa käsiteltyä tietoa, joka voi olla esimerkiksi käyttäjätunnuksia, salasanoja, pikaviestejä tai muuta sisältöä. Myös toisen käyttäjän palvelimelle muodostama salattu sessio voidaan kaapata. Salaisen avaimen mahdollinen vuotaminen tekee haavoittuvuudesta erityisen vaarallisen. Jos hyökkääjä saa salaisen avaimen haltuunsa, hän voi avata minkä tahansa palvelimen julkisella avaimella salatun viestin, sähköpostin, internetpuhelun, dokumentin tai muun tiedon. Haavoittuvuuden hyödyntäminen ei jätä jälkiä palvelimen lokitiedostoon, jonka vuoksi sen huomaaminen on vaikeaa.
2 (9) 1.2 Hyökkäysvektorit 1.3 Haavoittuvuuden aikajana Käytännössä haavoittuvuuden hyödyntämisyrityksen voi huomata vain seuraamalla palvelimen verkkoliikennettä. Haavoittuvuutta voidaan käyttää hyökkäyksessä hyödyksi usealla eri tavalla. 1. Lähettämällä palvelimelle haitallisesti muodostettuja Heartbeat-kutsuja, joihin haavoittuva palvelin vastaa vuotamalla sen muistissa sillä hetkellä olevia tietoja. Näiden tietojen joukossa saattaa olla esimerkiksi salasanoja, käyttäjätunnuksia, sähköposteja, pikaviestejä, dokumentteja tai pahimmassa tapauksessa palvelimen salainen avain. Hyökkäys ei jätä palvelimelle jälkiä, joten sen toteaminen jälkikäteen on haastavaa. 2. Jos salainen avain kyetään edellä kuvatulla tavalla varastamaan, sitä voidaan käyttää jatkohyökkäyksessä kahdella eri tavalla: a. Hyökkääjä voi avata palvelimelle saapuvaa salattua liikennettä varastettua salaista avainta apuna käyttäen. Liikenteen avaaminen vaatii kuitenkin että hyökkääjä pääsee palvelimelle saapuvaan liikenteeseen käsiksi, eli on verkkotopologiassa sellaisessa asemassa että palvelimelle saapuvat paketit voidaan kaapata. Jos hyökkääjä on kyennyt tallentamaan palvelimelle aiemmin saapunutta liikennettä, voidaan se avata vuotaneen salaisen avaimen avulla. b. Salaisella avaimella hyökkääjä voi myös tehdä man-in-the-middle-hyökkäyksen. Tämä hyökkäys edellyttää, että hyökkääjä pääsee ohjaamaan uhrin verkkoliikenteen omalle haitalliselle palvelimelleen esimerkiksi julkista langatonta verkkoa käytettäessä. Salatun avaimen avulla man-in-the-middle hyökkäys voidaan naamioida niin uskottavasti, että uhrin on erittäin vaikeaa tietää ettei hän asioi oikean palvelimen kanssa. Haavoittuvuuden koordinointi ei onnistunut täydellisesti, koska OpenSSL-kehittäjäryhmä julkaisi haavoittuvuustiedotteen ennenaikaisesti, ilman että ylläpitäjiä ehdittiin varoittaa tulevasta päivityksestä. Ennenaikainen julkaisu johtui siitä että haavoittuvuus löydettiin kahdessa eri yrityksessä toisistaan tietämättä. Eri lähteistä tulleet haavoittuvuusilmoitukset saivat OpenSSL-kehittäjät epäilemään, että tieto haavoittuvuudesta on päässyt
3 (9) vuotamaan, jonka vuoksi he kiirehtivät haavoittuvuustiedotteen julkaisussa. Alla olevaan taulukkoon on hahmoteltu haavoittuvuuden löytämiseen ja tiedottamiseen liittyvää aikajanaa. Aikajanan kellonajat on ilmoitettu Suomen ajassa. Aikajanan lähteinä ovat Viestintäviraston Kyberturvallisuuskeskuksen omat tiedot sekä The Sydney Morning Heraldin artikkeli 1. Aikajanassa kaksi eri haavoittuvuuden löytänyttä yritystä on erotettu eri väreillä (Google vihreällä ja Codenomicon sinisellä). Taulukko 1 Haavoittuvuuden aikajanan tärkeimmät tapahtumat Päivä Tapahtuma 21.3.2014 tai aiemmin Google löytää haavoittuvuuden. 1.4.2014 Google Security raportoi haavoittuvuuden OpenSSLprojektille. 3.4.2014 klo 9:30 Codenomicon löytää haavoittuvuuden. 3.4.2014 klo 14:30 Codenomicon ilmoittaa haavoittuvuudesta Kyberturvallisuuskeskukselle. 3.4.2014 klo 20:30 Kyberturvallisuuskeskus todentaa haavoittuvuuden olemassaolon. 4.4.2014 klo 2:30 Kyberturvallisuuskeskus todentaa palvelimen salaisten avainten vuotamismahdollisuuden. 4.4.2014-6.4.2014 Kyberturvallisuuskeskus valmistautuu haavoittuvuuskoordinoinnin aloitukseen. 7.4.2014 klo 8:56 OpenSSL raportoi haavoittuvuuden Linux-jakelija Red Hatille, joka alkaa jakamaan tietoa muille Linuxjakeluille. 7.4.2014 klo 18:19 Kyberturvallisuuskeskus raportoi haavoittuvuuden OpenSSLprojektille. 7.4.2014 klo 20:27 Kyberturvallisuuskeskuksen tekemän raportin johdosta OpenSSL:n kehittäjät arvelevat tiedon haavoittuvuudesta vuotaneen, ja päättää julkaista 1 http://www.smh.com.au/it-pro/security-it/heartbleed-disclosure-timeline-who-knew-whatand-when-20140415-zqurk.html
4 (9) haavoittuvuustiedotteen ennenaikaisesti. 8.4.2014 klo 9:45 Kyberturvallisuuskeskus julkaisee oman haavoittuvuustiedotteen. 1.4 Haavoittuvuuden todentaminen Oman järjestelmän haavoittuvuuden testaamiseen on olemassa valmiita työkaluja. Niillä voi nopeasti testata onko oma järjestelmä altis Heartbleed-haavoittuvuudelle. Eräs hyvä ja helppokäyttöinen skannerityökalu on Heartbleed test, joka löytyy osoitteesta: https://filippo.io/heartbleed/ 2 Haavoittuvuuden vaikutukset 2.1 Haavoittuvuustilanne maailmalla 2.2 Haavoittuvuustilanne Suomessa Tietoturva- ja internettutkimusyritys Netcraftin tekemän kyselyn mukaan heartbeat-ominaisuutta tuki 17.5 % kaikista SSL-salausta tukevista www-palvelimista 2. Yhteensä näitä palvelimia on Netcraftin mukaan noin 500 000, mutta kaikissa palvelimissa ei kuitenkaan ole haavoittuvaa versiota heartbeattoteutuksesta. Haavoittuvuus koskee myös suuria palveluntarjoajia. Julkisuudessa olevien tietojen mukaan esimerkiksi Google, Facebook, Amazon Web Services, Instagram, Pinterest, Tumblr, Yahoo, Dropbox, GitHub, SoundCloud ja Wikipedia ovat olleet haavoittuvia. Näistä palveluista on OpenSSL haavoittuvuuden avulla voitu kaapata esimerkiksi käyttäjien käyttäjätunnuksia, salasanoja ja heidän käsittelemää sisältöä. Kyberturvallisuuskeskus on koonnut listan haavoittuvista palveluista, ja viestinyt niistä teleoperaattoreiden välityksellä palvelujen ylläpitäjille. Kyberturvallisuuskeskus ei voi julkaista listaa kokonaisuudessaan, koska se sisältää edelleen haavoittuvia järjestelmiä. Toisaalta korjatuista järjestelmistä tiedottaminen on jätetty palvelun ylläpitäjien vastuulle. Kyberturvallisuuskeskuksen ylläpitämään listaan on sisällytetty vain ne palvelut, jotka ovat itse tiedottaneet asiakkaitaan korjatusta tietoturvaongelmasta. Lista löytyy osoitteesta: https://www.cert.fi/tietoturvanyt/2014/04/ttn201404171415.ht ml 2 http://news.netcraft.com/archives/2014/04/08/half-a-million-widely-trusted-websitesvulnerable-to-heartbleed-bug.html
5 (9) Kyberturvallisuuskeskus pyytääkin palvelun ylläpitäjiä olemaan yhteydessä Kyberturvallisuuskeskukseen (cert@ficora.fi), jotta tieto korjatuista palvelimista saadaan myös Kyberturvallisuuskeskuksen ylläpitämälle julkiselle listalle. 2.3 Kyberturvallisuuskeskuksen tekemien tutkimusten tulokset Kyberturvallisuuskeskus on käyttänyt merkittävän määrän henkilötyötunteja haavoittuvuuden etsintään ja korjaaviin toimenpiteisiin. Ensimmäisen vaiheen jälkeen etsintää on laajennettu muihin mahdollisesti haavoittuviin palvelimiin kuten sähköpostipalvelimiin. Tästä syystä haavoittuvien järjestelmien kokonaismäärä on kasvanut sekä 11.4. että 24.4. Haavoittuvien www-palvelinten lukumäärä on pienentynyt alun noin 2500 palvelimesta alle 750 palvelimeen 30.4. mennessä (Kuva 1). 30.4. salausta tukevista www-palvelimista haavoittuvia on noin 0.7 %, kun se 8.4. oli noin 3.5 %. (Kuva 2). 4000 3500 3000 2500 2000 1500 1000 Haavoittuvia palvelimia yhteensä Salattu www-liikene (HTTPS) Muut palvelut 500 0 8.4.2014 10.4.2014 12.4.2014 14.4.2014 16.4.2014 18.4.2014 20.4.2014 22.4.2014 24.4.2014 26.4.2014 28.4.2014 30.4.2014 Kuva 1 Haavoittuvia palvelimia Suomessa (kappalemäärä)
6 (9) 4,00 % 3,50 % 3,00 % 2,50 % 2,00 % 1,50 % 1,00 % 0,50 % 0,00 % Salattu www-liikenne (HTTPS) Muut palvelut Haavoittuvia palveluita yhteensä Kuva 2 Haavoittuvia palvelimia Suomessa (prosenttia kaikista SSL-salausta tukevista palvelimista) Yleisin haavoittuva palvelu on salausta tukeva selainliikenne (HTTPS), jonka osuus löydetyistä haavoittuvista palvelimista oli 30.4. 49 % (Kuva 3). Lopuista palveluista suurin osa liittyy salatun sähköpostiyhteyden luontiin (IMAPS, POP3S, SMTP). Portti 4443 Portti 4433 FTPS Haavoittuvuustilanne 30.4. Portti 8000 Portti 8080 SIP over TLS POP3S (995) LDAPS IMAPS (993) SMTP (587) Salattu wwwliikene (HTTPS) SMTP over SSL SMTP (25) Kuva 3 Haavoittuvat palvelut palvelutyypeittäin (30.4. tilanne) 2.4 Sulkulista ja varmenteiden peruminen Varmenteita käytetään palvelun tietoliikenteen salaukseen ja palvelimen tunnistamiseen. Varmenne sisältää muun tiedon
7 (9) salaista avainta vastaavan julkisen avaimen. Jos palvelimen salainen avain on vuotanut, ei varmenne ole enää luotettava. Jos palvelimen salaisten avainten epäillään vuotaneen OpenSSL-haavoittuvuuden seurauksena, tulisi ylläpitäjien: 1. Vaihtaa palvelimen salainen avain 2. Hakea uusi varmenne joka käyttää uusittua salaista avainta 3. Ottaa uusi varmenne ja salainen avain käyttöön, ja perua (revocate) vanha varmenne. Alla on Netcraftin luoma kuva (Kuva 4) peruttujen varmenteiden lukumäärästä tunneittain. 15.4. mennessä varmenteita oli peruttu noin 80 000 kappaletta, joka on 16 % kaikista Netcraftin mukaan mahdollisesti altistuneista varmenteista (500 000 kappaletta). Kuva 4 Peruttujen varmenteiden lukumäärä tunneittain. Lähde: Netcraft (http://news.netcraft.com/archives/2014/04/15/revoke-the-time-is-nigh.html) 3 Ylläpitäjille suositeltavat toimenpiteet 1. Riskiarvio oman verkkopalvelun haavoittuvuuden vaikutuksista Organisaation tulee käynnistää riskiarviointi jos omat verkkopalvelut osoittautuvat haavoittuviksi. Organisaation tulee arvioida millaisia vaikutuksia salaisten avainten joutumisella vääriin käsiin on organisaation ja sen yhteistyökumppanien tiedolle ja tietoturvalle. Riskiarviota tehdessä on hyvä huomioida, että haavoittuvuus on ollut mukana ohjelmakoodissa kahden vuoden ajan.
8 (9) 2. Haavoittuvan ohjelmiston päivittäminen Ohjelmistot palvelimissa ja muissa laitteistoissa tulee päivittää. Viestintäviraston saamien tietojen ja omien havaintojen mukaan internetin IP-osoitteita käydään systemaattisesti läpi useiden toimijoiden toimesta haavoittuvien koneiden löytämiseksi ja hyödyntämiseksi. 3. Sisäverkon palveluiden tarkistus Haavoittuvuuden vaikutukset eivät rajoitu vain julkiseen internetiin tarjottaviin palveluihin kuten www- ja sähköpostipalveluihin. Myös mahdolliset haavoittuvat sisäverkon palvelut ja palvelinohjelmistot tulee päivittää. 4. Varmenteiden vaihtaminen Haavoittuvuuden onnistunut hyväksikäyttö ei jätä jälkiä palvelimen lokitietoihin. Tämän vuoksi palvelussa käytettävä varmenne ja siihen liittyvä salainen avain tulee vaihtaa, jos niillä on oleellista merkitystä käyttäjien tietoturvan tai tiedon luottamuksellisuuden säilyttämiselle. Lisäksi vanha varmenne tulee perua. 5. Tiedottaminen ja käyttäjien salasanojen vaihto Palveluiden käyttäjiä tulee ohjeistaa vaihtamaan salasanansa palveluun kun palvelu on päivitetty ja palvelun varmenteet on vaihdettu Käyttäjien ohjeistamiseen tulee kiinnittää huomiota esimerkiksi ohjeistamalla käyttäjät menemään verkkopalveluun ja tilaamaan sieltä uusi salasana. On todennäköistä, että rikolliset tulevat käyttämään haavoittuvuuteen liittyvää uutisointia käyttäjätunnusten ja salasanojen kalastelussa verkon käyttäjiltä. 4 Yhteenveto OpenSSL:n Heatbleed-haavoittuvuus on yksi vakavimpia löydettyjä tietoturvaongelmia. Haavoittuvuudesta tekee erityisen vakavan sen vaikea todennettavuus, helppo hyödynnettävyys ja suuri potentiaalien hyöty. Haavoittuvuudelta suojautuminen edellyttää ohjelmistopäivitystä jonka jälkeen salaisten avainten vaihtaminen on suositeltavaa. Salaisten avainten vaihtamisen jälkeen ylläpitäjien tulisi tiedottaa käyttäjiä
9 (9) tietoturvaongelmasta, jotta he voivat vaihtaa salasanansa palveluun ja tehdä riskiarvion mahdollisesti varastetusta tiedosta. Suomessa haavoittuvia www-palvelimia oli aluksi noin 3.5 %, mutta niiden lukumäärä on laskenut ylläpitäjien suorittaman palvelinten päivitystyön ansiosta. Kyberturvallisuuskeskus on viestinyt operaattoreiden välityksellä haavoittuneiden palvelinten ylläpitäjille tietoturvaongelmasta.