Mitä Heartbleed tarkoittaa netinkäyttäjälle

Lu­ke­mat­to­mat verk­ko­pal­ve­lut − niin isot kuin pie­net − ovat ol­leet alt­tii­na mm. käyt­tä­jien tie­to­jen vien­ni­lle Heart­bleed-ni­mi­sen tie­to­tur­va-au­kon ta­kia. Ne­tin­se­laa­jan­kin täy­tyy ryh­tyä ko­viin toi­men­pi­tei­siin.

Kuva: Heartbleed logo, CC0

Viime päivät ovat olleet verkkopalvelujen pyörittäjille vaikeita. Mylläkkä sai alkunsa, kun Googlen turvallisuusyksikössä työskentelevä Neel Mehta huomasi, ettei verkkoliikenteen salauksessa usein käytetty OpenSSL-ohjelmistokirjasto toimii pahasti väärin: pahantahtoinen käyttäjä voisi laatia kyselyn, jolla saisi palvelimen lähettämään hänelle ohjelmiston muistista dataa, esimerkiksi yksityisiä viestejä ja salasanoja. Haavoittuvuus sai kutsumanimekseen Heartbleed, sydänvuoto.

IT-piireissä uutinen levisi kulovalkean tavoin, ja järjestelmänvalvojat kiirehtivät paikkaamaan ohjelmistojaan. Harmi vain, että vahinko oli jo ehtinyt tapahtua: pahimmassa tapauksessa noin 80 prosenttia verkkopalveluista on ollut haavoittuvaisia viimeiset pari vuotta. Sitä, kuinka monesta palvelusta on tietoja viety, ei tiedä kukaan.

Näin äkkiseltään ei tule mieleen pahempaa tietoturva-aukkoa: voidaan sanoa, että Heartbleed-haavoittuvuus koskee jok’ikistä Internetin käyttäjää. Pahimmassa tapauksessa siis kaikkien Internet-käyttäjien tietoja on viety. Tilanne on paha ennen kaikkea käyttäjien kannalta, joten toimettomaksi ei kannata jäädä.

Heartbleed-haavoittuvuuden toimintatapa

Johtuen ohjelmointivirheestä OpenSSL-kirjastossa, voi tietynlaisella pyynnöllä saada kirjaston lukemaan muistiaan vastaukselle varatun tilan yli, ja lähettämään tuon datan paluupostissa. Vastaukselle varatun muistitilan jälkeen ohjelman muistissa voi olla mitä tahansa, ja tuota ”mitä tahansa” voidaan pyytää jopa 64 kilotavua. Hyökkääjä voi lähettää pyyntöjä yhä uudelleen ja uudelleen, saaden aina uuden siivun muistia tutkittavakseen.

Ohjelman muistissa voi olla esimerkiksi itse salaukseen käytetty yksityinen avain tai käyttäjien salasanoja, mutta myös mitä tahansa muuta. Hyökkäyksestä ei tyypillisesti jää uhripalvelimeen mitään jälkiä, joten jälkikäteen ei voida sanoa, onko palvelua vastaan hyökätty vai ei. Tietoturva-asioissa kannattaa kuitenkin lähteä pahimmasta mahdollisesta tilanteesta, eli olettaa kaiken arkaluonteisen olevan hyökkääjän tiedossa.

Haavoittuvuuden aiheuttanut OpenSSL:n ohjelmointivirhe on sittemmin korjattu, ja kaikki valveutuneet verkkopalvelujen ylläpitäjät ovat asentaneet korjauspäivityksen. Enää tietojen vienti ei siis enää ole mahdollista. Sen sijaan jo viedyt tiedot on menetetty, eikä verkkoliikenteen salauskaan ole luotettavaa, ennen kuin palvelu vaihtaa salausavaimensa.

Haavoittuvuudesta kärsineet palvelut

Kirjoitushetkellä varsin harva palvelu on julkisesti kertonut, koskettaako haavoittuvuus sitä. Tämä voi johtua muun muassa seuraavista:

  • Palvelu ei käyttänyt haavoittuvaista versiota, eikä näin näe tarvetta tiedottaa käyttäjiään.
  • Palvelun tuottaja ei tiedä, koskettaako haavoittuvuus heitä.
  • Palvelun tuottaja tietää, että palvelu on (ollut) haavoittuvainen, muttei halua tiedottaa käyttäjiään.

Esimerkiksi Mashable on koonnut luetteloa palveluista, jotka ovat varmuudella olleet uhattuna. Listalla ovat mm. Pinterest, Tumblr, Google ja Yahoo.

Uskon, että monet edellä mainittuja pienemmät toimijat (mm. kotimaiset verkkokaupat, yliopistot, hosting-yritykset…) ovat niin ikään käyttäneet reikäistä OpenSSL-versiota.

Ohjeita käyttäjälle (eli kaikille)

Kannattaa seurata sähköpostia ja verkkosivujen tiedotteita, ja vaihtaa salasana heti, jos verkkopalvelun ylläpito niin suosittelee. Verkkokauppojen asiakkaiden kannattaa myös seurata tiliotteitaan, ja mitätöidä maksukortti, jos outoja maksutapahtumia ilmestyy.

Salasanaansa ei kannata vielä vaihtaa joka paikkaan, sillä kaikki palvelut eivät vielä ole päivittäneet ohjelmistojaan − muuten riskinä on, että uusikin salasana joutuu ulkopuolisten käsiin. Jos verkkopalvelu ei aiemmin pyydä niin tekemään, suosittelen vaihtamaan kaikkien verkkopalvelujen salasanat huhtikuun viimeisellä viikolla.

Mitään sellaista verkkopalvelua2 ei pidä käyttää, jolle seuraavat kriteerit täyttyvät:

  • palvelu vaatii käyttäjätunnuksen tai muun tunnistautumisen, ja
  • palvelu on ollut haavoittuvainen tai haavoittuvaisuustilanne ei ole tiedossa, ja
  • palvelun varmenne1 on julkaistu aiemmin kuin 9.4.2014.

Palvelua voi käyttää, kun varmenne on korvattu uudella. Tällöin kannattaa ensi töikseen vaihtaa salasanansa. Sanomattakin lie selvää, ettei samaa salasanaa kannata käyttää eri paikoissa.


1) Varmenteen tietoja pääsee useimmissa selaimissa katsomaan klikkaamalla salauksesta kertovaa lukonkuvaa ja sitten sopivia painikkeita painelemalla.
2) Joo, netin käytöstä tuli juuri aika paljon ikävämpää. Tai sitten vetelet riskillä ja toivot parasta.

Näin suojaudut Java-aukolta

Oraclen Java 7:ssä ole­va auk­ko on va­ka­va, mut­ta oman ko­neen suo­jaa­mi­nen on help­poa.

Kuva: Java-logo/ Oracle

Viestintäviraston CERT-FI-viranomainen tiedotti eilen Sunin1 Oraclen Javan nollapäivähaavoittuvuudesta:

Java 7:n kaikki versiot sisältävät korjaamattoman haavoittuvuuden.
Haavoittuvuutta tiedetään käytetyn hyväksi kohdistetuissa hyökkäyksissä.
Koska korjausta ei ole, verkon käyttäjät voivat suojautua mahdollisilta
drive-by haittaohjelmatartunnoilta esimerkiksi poistamalla Javan
käytöstä selaimissaan.

Haavoittuvuus on varsin vakava: Java on asennettuna lähes kaikille koneille, eikä haavoittuvuuden hyväksikäyttö vaadi käyttäjän toimenpiteitä. Teoriassa siis Javan käyttäjät ovat jo voineet tietämättään saastuttaa koneensa.

Koska ohjelmistojätti Oracle ei ainakaan kirjoitushetkeen mennessä ole julkaissut korjauspäivitystä, ei aukkoa voi niin vain peittää. On olemassa kuitenkin ratkaisuja, joilla haavoittuvuuden vaikutusta omaan tietoturvaan voi rajoittaa. CERT-FI julkaisi varsin sekavan selityksen asiasta Facebook-sivullaan, joten tässä kirjoituksessa yritän kertoa asian hieman selkeämmin ja kuvien kera. Ohjeet ovat Windowsia tai Linuxia käyttäville Chrome-, Chromium-, Firefox- ja Opera-käyttäjille.

Päivitys 31.8.: Oracle on julkaissut haavoittuvuuden korjaavan päivityksen. Päivitetyn Java 7:n voi ladata Oraclen sivustolta.

Päivitys 1.9.: The Register kertoo, että tietoturvayhtiö Security Explorationsin mukaan Oraclen vasta julkaisemassa Java 7 Update 7 -päivityksessä on myös haavoittuvuus, joten suojautumistoimenpiteet ovat edelleen tarpeen, vaikka haavoittuvuutta ei vielä aktiivisesti hyväksikäytettäisikään.
Päivitys 1.2.2013: Tämä artikkeli saa kovasti Google-osumia! Koska kirjoitus on jo puolisen vuotta vanha, ja käsittelee jo korjattua aukkoa, täytyy ohjeita hieman soveltaa. Pääperiaatteet ovat kuitenkin samat. Saatan kirjoittaa jossain vaiheessa päivitetyn ohjeen, jolloin linkitän sen tästä kirjoituksesta.

Oletko vaarassa?

Vaikka maailmalla huudellaan, että kaikki tietokoneet olisivat yhtäkkiä vaarassa, ei tämä aivan pidä paikkaansa. Vain Oraclen ”virallinen” Java on haavoittuvainen, eikä esimerkiksi avoimen IcedTea-liitännäisen käyttäjien tarvitse ryhtyä mihinkään toimenpiteisiin. Aukko ei myöskään koske Oraclen Javan vanhemman 6-version käyttäjiä.

Jos et tiedä, mikä versio sinulla on käytössä, ota asiasta selvää:

  • Firefox: Vieraile Mozillan Tarkista liitännäisesi -sivulla. Jos luettelosta löytyy Java(TM) Platform SE 7 -alkuinen rivi, käytät haavoittuvaista Javaa, ja toimenpiteitäsi tarvitaan. Sillä, mikä päivitysversio Java 7:stä on käytössä, ei ole merkitystä.
    Haavoittuvainen Java-liitännäinen näkyy Firefoxin liitännäistarkistussivussa tähän tapaan.

    Kuva: Kuvakaappaus Mozillan Tarkista liitännäisesi -sivusta

  • Chrome ja Chromium: Siirry Chromen/ Chromiumin liitännäisten hallintaan syöttämällä chrome://plugins osoitekenttään. Laajenna tietoja valitsemalla sivun oikean yläkulman ”+ Tiedot” -linkki. Siirry Java -kohtaan. Jos Nimi-sarakkeen teksti alkaa ”Java(TM) Platform SE 7”, on käytössäsi haavoittuvainen versio. Tarkalla päivitysversiolla (U-jotakin) ei ole merkitystä.
    Chromen ja Chromiumin liitännäishallintapaneelista vaarallisen Java-liitännäisen tunnistaa tästä.

    Kuva: Kuvakaappaus Chrome-selaimen liitännäishallinnasta.

  • Opera: Siirry Operan Lisäosat -sivulle syöttämällä opera:plugins osoitekenttään. Jos luettelossa on rivi, joka alkaa ”Java(TM) Platform SE 7”, on käytössäsi haavoittuvainen Java-versio.
    Operan liitännäisissä vaarallinen Java 7 näkyy näin.

    Kuva: Kuvakaappaus Operan Liitännäiset-sivusta.

Jos Javan vaarallinen versio on selaimellasi käytössä, voit suojata itsesi muutamallakin tavalla:

  • Jos et tarvitse Javaa, poista se kokonaan (ohje 1).
  • Jos tarvitset Javaa, harkitse nykyisen Java 7:n poistamista ja vanhemman Java 6:n asentamista sen tilalle (ohje 2). Linux-käyttäjät voivat harkita myös esim. IcedTean asentamista (ohje 3).
  • Jos et tarvitse Javaa hetkeen, voit ottaa selaimen Java-liitännäisen pois käytöstä siksi aikaa kun Oracle valmistelee korjauksen siihen (ohje 4).
  • Jos välttämättä tarvitset Javan 7-versiota, on tilanne mutkikkaampi. Operan, Chromen ja Chromiumin käyttäjät voivat asettaa selaimensa toiminnolla Javan käyttöön vain niille sivustoille, joissa se on pakollista (ohje 5). Firefox-käyttäjien pitää käyttää esimerkiksi NoScript-lisäosaa saavuttaakseen saman lopputuloksen.

Riippuen tilanteestasi seuraa jotakin seuraavan kohdan ohjetta.

Ratkaisuohjeet

1. Javan poistaminen

  • Windows-käyttäjät: Javan voi poistaa avaamalla Ohjauspaneelin Ohjelmat » Ohjelmat ja toiminnot -ikkunan, valitsemalla Java 7 Update 6 -rivin (tai vastaavan), valitsemalla Poista asennus ja seuraamalla ohjeita.
  • Linux-käyttäjät: Java 7:ää ei vaikuttaisi olevan Ubuntun tai Debianin pakettivarastoissa. Muissa jakeluissa näin voi olla, ja poistaminen tapahtuu jakelun ohjeiden mukaan. Jos Java on asennettu paketinhallinnan ohi Oraclen ohjeiden mukaan, täytyy Javan kansio poistaa. Jos selaimille on luotu omat kopiot Java-pluginista (ei siis symbolisia linkkejä), tulee nämä myös poistaa. Lisätietoja on Oraclen sivustolla.

Varmista lopuksi, että Java on varmasti poistettu. Helpoiten sen voit tarkistaa samalla tavalla kuin aluksi tarkistit sen version – tässä tapauksessa Java-liitännäistä ei pitäisi olla listattuna lainkaan.

2. Java 6:n asentaminen

Poista aluksi Java 7 edellisen ohjeen mukaisesti. Asenna sitten Java 6:

  • Windows- ja useimmat Linux-käyttäjät: Lataa Java 6 Oraclen verkkosivustolta (Windows, Linux), ja suorita sen asennusohjelma.
  • Osa Linux-käyttäjistä: Jos jakelusi pakettivarastossa on Java 6 saatavilla, se kannattaa tietenkin asentaa ensisijaisesti normaalien pakettienhallintatyökalujen kautta. Esimerkiksi Debian Squeezessa paketti löytyy nimellä sun-java6-plugin.

Varmista lopuksi, että oikea versio on varmasti selaimessa käytössä. Tarkistaminen tapahtuu kirjoitukseni alun ohjeiden mukaan.

3. IcedTean asentaminen

Poista aluksi Java 7 ohjeen 1 mukaan. Asenna sitten IcedTea:

Avoimen lähdekoodin OpenJDK-ympäristöön perustuvan IcedTea-selainliitännäisen voi asentaa useimpiin Linux-jakeluihin, ja joissakin se on jo valmiiksi asennettuna. Ubuntussa paketti on icedtea-7-plugin ja Debianissa icedtea6-plugin. Paketti asennetaan jakelun oman pakettienhallinnan kautta.

Varmista lopuksi, että IcedTea on varmasti selaimessa käytössä. Tarkistaminen tapahtuu kirjoitukseni alun ohjeiden mukaan.

4. Java-liitännäisen käytöstä poistaminen

Liitännäisen käytöstä poistaminen on selainkohtaista:

  • Firefox: Avaa selaimen Lisäosien hallinta -sivu kirjoittamalla osoiteriville about:addons. Siirry sivun osioon Liitännäiset, ja klikkaa kohdassa ”Java(TM) Platform SE 7 …” olevaa Poista käytöstä -painiketta.
  • Chrome ja Chromium: Avaa selaimen Laajennukset-sivu kirjoittamalla osoiteriville chrome://plugins. Etsi luettelosta Java-liitännäinen ja klikkaa sen tietojen lopussa olevaa Poista käytöstä -linkkiä.
  • Opera: Avaa selaimen Lisäosat-sivu kirjoittamalla osoiteriville opera:plugins. Klikkaa ”Java(TM) Platform SE 7 …” -rivin otsikon Poista käytöstä -linkkiä.

5. Java-liitännäisen käytön rajoittaminen

Jos uusinta Javaa välttämättä tarvitaan jollakin tietyllä sivulla, kannattaa selain säätää niin, että Java sallitaan vain tietyille sivuille:

  • Chrome ja Chromium: Siirry Sisältöasetukset-dialogiin kirjoittamalla osoiteriville chrome://chrome/settings/content, ja vaihda Laajennukset-asetus valintaan Estä kaikki. Lisää sitten Javaa tarvitsevat sivustot Hallinnoi poikkeuksia… -dialogissa.
  • Opera: Avaa Asetukset-ikkuna valitsemalla Opera-valikon Asetukset-alivalikosta toiminto Asetukset…. Lisäasetukset-välilehden Sisältö-osiossa poista valinta kohdasta Lisäosat käytössä, ja hyväksy muutokset. Mene sitten sivustolle, joka vaatii Javan, ja valitse kontekstivalikon (klikkaa hiiren 2. painikkeella sivua) toiminto Muokkaa sivustokohtaisia asetuksia…. Valitse aukeavan dialogin Sisältö-välilehden Lisäosat käytössä -valintalaatikko, ja hyväksy muutos OK-painikkeella.


1) Kuka muistaa vielä Innotekin VirtualBoxin?

Skanska ei korjannut haavoittuvuuttaan

Kirjoitin viikko sitten XSS-haavoittuvuuksien tämänhetkisestä tilasta:

Yhdeltä ainoalta sivustolta 20:stä löytyi jonkinasteinen aukko, mutta siinäkin tietynasteista syötteentarkastusta oli havaittavissa. Tämän sivuston ylläpitäjää on informoitu asiasta, ja tulen kertomaan sivuston nimenkin tässä yhteydessä sitten, kun kohtuullisena pitämäni viikon korjausmahdollisuusaika on umpeutunut. Mikäli sivusto korjataan ennen sitä, kerron myös siitä.

Viikko kului, eikä vastausta kuulunut, saatika aukkoa korjattu. Tulkoon tässä sitten tietoon, miltä sivustolta haavoittuvuus löytyi: Skanskan hakukenttä ei tarkista saamiaan syötteitä riittävällä tasolla, joten on mahdollista upottaa HTML-elementtejä hakuun ja ne ajetaan sellaisenaan Viimeisimmät haut-listaan. En tässä yhteydessä ala sen suurempia käyttöohjeita antamaan, mutta kovin monimutkaista tuollaisen haavoittuvuuden käyttö ei olisi.

Kovin suuresta riskistä ei voida puhua, mutta kuitenkin XSS-haavoittuvuus on kyseessä. Mielestäni Skanska osoittaa suurta välinpitämättömyyttä asiakkaitaan kohtaan, kun se ei ole ryhtynyt mihinkään toimenpiteisiin aukon korjaamiseksi tai edes minulle vastaamiseksi. Skanskalta vastattiin, kts. postauksen loppu ja kommentit.En kuitenkaan kiellä ketään vetämästä omia johtopäätöksiään vapaasti.

Päivitys 25.11.10:  Skanskan verkkopäätoimittaja Sari Perento oikaisi kommenteissa 22.11. sen verran, että he eivät ”suinkaan jättäneet reagoimatta viestii[ni] –”, vaan tekevät töitä aukon korjaamiseksi. Tätä päivitystä kirjoittaessa aukko on yhä hyödynnettävissä.

XSS-haavoittuvuudet suomalaisilla sivuilla vuonna 2010: 5%

Vuonna 2008 kirjoitin blogiini cross-site scripting (XSS-) -haavoittuvuuksista. Nyt, reilun kahden vuoden jälkeen, lienee hyvä hetki tarkastella asian kulkua.

Testasin muutamalla ”pahantahtoisella” hakulauseella 20 verkkosivun hakukenttiä, ja niistä vain yksi oli lievästi XSS-haavoittuvainen. Sivut oli valittu Googlen haulla ja rajattu vain suomalaisiin .fi-verkko-osoitteisiin. Läpi menivät seuraavat verkkosivut:

thl.fi, kommunportalet.fi, ruokatieto.fi, varastokirjasto.fi, tampere.fi, environment.fi, st1.fi, lieksa.fi, itameriportaali.fi, stat.fi, luontoon.fi, cimo.fi, minedu.fi, mediakasvatus.fi, yrittajat.fi, tekes.fi, hse.fi, terve.fi ja lahtienergia.fi.

Se, että käyttämäni hakulauseet eivät saaneet sivuja näyttämään mitään hassua, ei tarkoita sitä, etteivätkö ne voisi olla muuten haavoittuvaisia. En esimerkiksi kokeillut SQL-injektioita lainkaan, enkä lähtenyt jokaista sivuston kenttää kokeilemaan.

Mitä sitten  on tehty, että nykyään verkkosivut eivät ole yhtä reikäisiä kuin ennen? Moni sivu näytti vuonna 2008 hakukentässä tai muualla hakusanat, ja tässä oli iskun paikka. Nykyään noita tietoja ei käyttäjälle enää juurikaan näytetä. Ei ehkä käyttäjäystävällisin ratkaisu, mutta tässä suhteessa pomminvarma.

Osa sivuista oli toteuttanut asian ”oikealla” tavalla, ja muutti HTML:n pahat merkit niiden entiteettimuotoihin. Mutta nämä sivut jäivät selkeästi vähemmistöön.

Yhdeltä ainoalta sivustolta 20:stä löytyi jonkinasteinen aukko, mutta siinäkin tietynasteista syötteentarkastusta oli havaittavissa. Tämän sivuston ylläpitäjää on informoitu asiasta, ja tulen kertomaan sivuston nimenkin tässä yhteydessä sitten, kun kohtuullisena pitämäni viikon korjausmahdollisuusaika on umpeutunut. Mikäli sivusto korjataan ennen sitä, kerron myös siitä.

Selkeästi vuoden 2008 mediamylläkkä sai verkkosivujen ylläpitäjät hereille tällaisista aukoista, sillä nykyinen 5 %:n taso on varsin positiivista. Työtä tosin riittää, ja muunkinlaisia haavoittuvuuksia löytyy verkkosivuista joka hetki. Laput silmillä ei siis kannata kulkea nykyäänkään.