Ads 468x60px

keskiviikko 15. lokakuuta 2014

Uusi POODLE-haavoittuvuus SSL:ssä - aika hankkiutua eroon vanhoista salausmekanismeista.

Google on tänään julkaissut uuden haavoittuvuuden SSLv3-protokollassa. Haavoittuvuuden avulla hyökkääjä pystyy selvittämään salattujen viestien sisältöä - joskin toteutus vaatii man-in-the-middle -hyökkäyksen tekemistä uhria vastaan. Olennaista kuitenkin on, että hyökkäys hyödyntää sivukanavana normaalia HTTP-yhteyttä johonkin toiseen palvelimeen. Lisäksi on kuunneltava uhrin liikennettä varsinaiseen kohdepalvelimeen ja pystyttävä muokkaamaan tätä liikennettä.

Ongelmat eri TLS/SSL-versioissa ovat olleet suhteellisen yleisiä. Viime vuosina on julkaistu useita hyökkäysiä, kuten BEAST, CRIME ja Lucky-13. Useat hyökkäykset johtuvat SSL:n tavasta käyttää lohkosalaimia ketjussa (cipher block chaining). Tästä on kyse myös POODLE (Padding Oracle on Downgraded Legacy Encryption) haavoittuvuudessa. Yleisesti Padding Oracle -tyyppiset haavoittuvuudet mahdollistavat arvauksien tekemisen salatun tekstin sisällöstä. Arvaus toimii ainoastaan SSLv3:ssa, sillä siinä salaamattomaan tekstiin lisätään satunnaisia tavuja, jotta lohkosalaimen vaatima koko täyttyy. TLSv1.0:ssa tämä on korjattu ja täytteenä käytetään täytteen kokoa - esimerkiksi 3 tavun täytteellä käytetään siis tavua 0x03 täytteenä. Erinomainen teknisiin yksityiskohtiin menevä selitys löytyy täältä.

Hyökkäyksen toteutus vaatii, että hyökkääjällä on kyky tehdä man-in-the-middle -hyökkäys uhrin verkossa. Tässä hyödynnetään jotakin salaamatonta web-sivustoa, jonka liikenteeseen hyökkääjä injektoi näkymättömän iframe-komponentin. Tämä komponentti sisältää javascriptiä, joka latautuu uhrin koneelle. Tämä komponentti tekee jatkuvia pyyntöjä sivustolle, jonka liikenne halutaan avata. Selain lähettää automaattisesti injektoidun komponentin pyynnöissä myös evästeet. Hyökkäyksessä pyritään avaamaan juuri evästeet, sillä sessiotunnisteen avulla hyökkääjä voi lopulta kirjautua uhrina kohdepalveluun.

Näitä injektoituja pyyntöjä muokataan hyökkäyksessä siten, että hyökkääjällä on 1:255 mahdollisuus arvata yksi tavu tietystä kohdasta salattua viestiä. Hyökkääjän on siis tiedettävä, missä kohdin pyyntöä on haettu sessioavain. Arvauksia voi toki tehdä riittävän paljon, jotta myös tämän saa selville.

Entä jos selain ja palvelin tukevat myös TLS:ää? Siinä tapauksessa yhteys ei muodostu SSL-protokollalla. Hyökkäjä voi kuitenkin katkaista yhteyden kättelyvaiheessa. Tämä johtaa lopulta riittävän monen epäonnistumisen jälkeen ns. connection downgrade -tilaan, jossa siirrytään käyttämään SSL-protokollaa. Tämän jälkeen hyökkäys on mahdollinen.

Mielestäni tämä haavoittuvuus ei ole vakavuudessaan lähelläkään yhtä vakava, kuin esimerkiksi Heartbleed-haavoittuvuus. Esiehtoja hyökkäyksen toteuttamiselle on selkeästi enemmän ja tekninen toteutus on hieman haastavampi. Mikäli hyökkääjällä on kyky man-in-the-middle -hyökkäykseen, on kyseessä jo suuremman luokan ongelma kuin SSLv3:n käyttö.

Korjaus

Ainut varma keino korjata tämä ongelma on lopettaa SSLv3:n tukeminen kokonaan - sekä selaimissa että palvelimissa. SSLv3 julkaistiin vuonna 1996 ja aika on tehnyt tehtävänsä: SSL:n ja TLS:n eri versioista on löytynyt lukuisia eri haavoittuvuuksia, joista useat johtuvat suunnitteluvirheistä.

Viestintävirasto suosittelee korjaamaan ongelman käyttämällä TLS_FALLBACK_SCSV-ominaisuutta - valitettavasti tätä ominaisuutta ei ole vielä toteutettu laajasti TLS/SSL-kirjastoihin. Toistaiseksi se on IETF-draft vaiheessa. Se ei myöskään korjaa SSLv3:n vikaa, vaan estää TLS-yhteyksien pakottamisen SSLv3-yhteyksiksi hyökkääjän toimesta. Tämän ominaisuuden toteutusta saadaan myös varmaan odottaa jonkin aikaa.

Siirtyminen pelkän TLSv1.2:n käyttöön ei olisi huono idea - Wikipedian mukaan kuitenkin vain n. 45% web-palvelimista tukee TLS:n versioita 1.0:n jälkeen. SSLv3 ja TLS1.0 ovat molemmat tuettuina n. 99% palvelimista. Selaimissa tilanne lienee sinänsä parempi - IE6 ei enää ole käytössä suuressa määrin 

-AnttiA

Viitteet:
Hyvä Englanninkielinen selitys haavoittuvuudesta: https://www.dfranke.us/posts/2014-10-14-how-poodle-happened.html
Ehdotettu korjaus (TLS_FALLBACK_SCSV): https://tools.ietf.org/html/draft-bmoeller-tls-downgrade-scsv-02
Googlen haavoittuvuusjulkaisu: https://www.openssl.org/~bodo/ssl-poodle.pdf

Ei kommentteja:

Lähetä kommentti