Uus turvaviga DROWN: sama kaalukas mure kui enne Heartbleed või Poodle

 (8)
Uus turvaviga DROWN: sama kaalukas mure kui enne Heartbleed või Poodle
Foto: tootja

Sel nädalal avalikustati veebiservereid puudutav turvaviga DROWN. Tegemist on peaaegu sama kaalukategooria murega nagu 2014. aasta suursündmused HeartBleed ja Poodle ning probleem on mõnevõrra sarnane OpenSSL vähemmõjusa turvaauguga.

Uue turvaaugu nimi pärineb lühendist DROWN: Decrypting RSA with Obsolete and Weakened eNcryption. Rünnak kasutab samaaegselt ära nii mitut turva-alast võtet ja trikki, et neist arusaamiseks tuleb eelnevalt anda pisut taustainfot, kirjutab RIA blogi.

SSL või TLS avang

Krüpteeritud sideühendused on täna üleüldine käitumisnorm. Isegi Facebooki minnakse turvalise ühendusega: sellisega, et sirviku aadressribal paistab "https://".

Krüptitud sideühenduste kasutamine on siiski oluliselt laiem, sest sageli on salasilma eest krüptograafiliselt peidetud ka meiliserverite liiklus (protokollid IMAP ja SMTPS).

Päris sideühenduse alguses, kui klient alles pöördub turvalise veebiserveri poole (säärase, mille aadressi alguses paistab "https://"), lepivad kliendi sirvik ja serveri krüptomoodul omavahel kokku šifri. Nimetagem seda kokkuleppimise protsessi esmaseks käepigistuseks või avanguks.

Vaid šiffer takistab pealtkuulajal sidekanalit pealt kuulata, näha lahtise tekstiga seal liikuvat infot (paroolid, ärisaladused, delikaatne vestlus) ning saadud infot kuritarvitada. Ühesõnaga, kui krüpto ei pea, on see paras katastroof.

Seotud lood:

Polsterdusoraakel

Delfi oraaklit teavad ajalookursusest kõik. See oli tegelane, kes suutis anda õigeid vastuseid suvalistele küsimustele.

Krüptograafias kasutatakse säärast terminit nagu polsterdusoraakel, eesti keeles on nähtud ka sõna täidistusoraakel – ingl padding oracle.

Krüptogramm pole ju alati sama pikk kui plokkšifri võtmepikkus, vahel jääb krüptogrammi lõpuosast märke puudu ning siis täidetakse tühjus lihtsalt mingi prahiga. Häda nüüd selles, et kui praht on iga krüptogrammi puhul sama, siis Oraakli käest ülearu palju kordi küsides võib tõele (ehk siis ka krüptogrammi enda sisule) liiga lähedale jõuda.

Kes tahab näha polsterdusoraaklit praktikas tegutsemas, vaatab blogianimatsiooni.

Üleliigne pole meenutada, et ka Eesti ID-kaardi osas on varemalt tõstatatud polsterdusoraakli küsimus, kuid tänu ID-kaardi väga selgele kasutusviisile seekord turvaauku ei tekkinud (loe: polsterdusoraakel on väga moodne teema).

Nudikrüptograafia

Poliitiliselt tundlikel ajaperioodidel tootis USA kaht eri kangusega krüptot – üht iseendale, teist (export grade) ülejäänud maailmale.

Vahepeal on poliitiline kliima küll paranenud, kuid mõlemad avangumallid (nii “õige” kui “lahjendatud” export-grade kraam) lähevad installipaketis kaasa enamike teenuseserveritega.

Serveri peremees peaks selle export grade värgi kohe alguses välja viskama ja SSLv2 koos sellega, kuid laiskusest või mingil pärandpõhjusel ta sageli ei tee seda.

Avanguprotokollid TLS ja SSLv2

Kasutaja sirvik saab serveriga avanguid kokku leppida mitmes eri “keeles”. Vanem keel on SSL, kusjuures juurde märgitakse versiooninumber (v1, v2 või v3). Uuema aja standard on TLS.

SSL – Secure Sockets Layer
TLS – Transport Level Security

Põhjusel või teisel (maksimaalne ühtesobivus!) kipuvad veebiserverid toetama mõlemat
avanguprotokolli korraga.

Rünnaku eeltingimused

Rünnaku kõige tähtsam eeltingimus on, et kurjami käsutuseks oleks võimalus sideliini pealt kuulata. Eks eri maade arvukad luurekeskused teritavad kõrvu igapäevaselt, kuid enamasti nad ei lähe saadud infoga vargile.

Seevastu kurjategijate ligipääs minu ja näiteks pangaserveri vahelisele liiklusele on vähetõenäoline. Kui just keegi kusagil Kapa-Kohilas oma netiühendust naabritele ei jaga ja omaenda kliente pealt ei kuula.

Veel on rünnaku läbiviimiseks vaja, et sama serverisertifikaat (ja vastavalt siis ka võti) teenindaksid kliente nii TLS kui ka SSLv2 protokolliga. Servereid, millel on käepigistus-avanguks samaaegselt lubatud nii TLS kui ka SSLv2 nudikrüpto avanguks, on maailmas hinnanguliselt 17%.

Kuid sertifikaat maksab. Teenusepakkujad hoiavad raha kokku ning tarvitavad ühtsama RSA võtit ja ühtsama serverisertifikaati mitmel masinal korraga. Näiteks ühel teenusel/masinal (kus pärandkompatiiblus on oluline) on avatud vaid SSLv2, teisel (turvalisemal) vaid TLS.

Teadustööst selgub, et pole vahet, kas sama privaatvõtmega teenindatakse nn kahest eraldi pordist või hoopis eraldi masinast, kuid kui sama võtmega teenindatavad mõlemad protokollid on korraga külalistele lahti (sääraseid servereid on netis juba 33% koguarvust), siis ongi DROWN rünnak kenasti rakendatav.

Lühilausena – DROWN-rünnaku eeltingimusena peab sama privaatvõti/kasutajasertifikaat olema korraga kasutusel nii TLS kui SSLv2 protokolliga. Häda serveriomanikele, kel on!

Ründe kirjeldus

Koledad matemaatilised valemid jätame vahele, igaüks saab neid ise lugeda teadustööst.

Mida kurikael ründamiseks teeb?

a) Kuulates pealt mõnd tihedasti pruugitavat sideühendust, kogub ta umbes 1000 sessiooni TLS avanguid. Mõne keskse sotsiaalvõrguteenuse ääres pealt kuulates koguneksid need kõigest mõne sekundiga. Ise midagi saata pole vaja, piisab passiivsest pealtkuulamisest.

b) Nüüd arvutab kurikael neist tuhandest avangust kakskümmend tuhat tantsukutset, millega õrritab kas sama serverit või sama võtit kasutavat sõberserverit, kuid SSLv2 protokolli abil.

Et olmetermineid pisutki teadusterminitega kokku viia, kujutleme naljatlevaid poisikesi, kes on Delfi oraaklile ligi hiilinud, loobivad teda 20 000 korda järjest prügiga, ise iga kord küsides – ja mis see on? Vaene server (oraakel) siis iga kord vastab neile midagi.

c) Kurjam kogub saadud 20 000 vastust kokku (jätame keerulise matemaatika siinkohal vahele) ja voilaa! – teadlased leiutasid valemi, millega üks sideseanssidest lahti dešifreerida.

Et hästi selge oleks – 1000 kliendi avanguid pealt kuulates ja pärast 20 000 ajuloputuspäringut (teise teenusesse) on kurjamil siiski võimalik lahti muukida vaid üks sideseanss 1000-st.

Serveri poolel ühtlasi ehk ka märgatakse, et keegi tülitab serverit lihtsalt niisama, pulli pärast. Aga kui majas ollakse hooletud, ehk ei märgatagi…

Kes on ohustatud?

Suisa koduperenaised ohustatud ei ole. Rünnak on kallis – üheainsa sideühenduse mahavõtmiseks (tõsi, sealt seest saab parooli, millega juba edasi sisse murda) kulub mitusada kuni kakskümmend tuhat raha.

Seevastu sihitud rünnakuobjektid – advokaadid, kirikuhärrad, ärimehed, raamatupidajad, riigiametnikud, sõjaväelased – ehk siis kõik need, kelle käsutuses on mingit hinnalist infot, peaksid vägagi ette vaatama, mitte pruukima kahtlasi SSL/TLS ühendusi.

Muud küsimused

Mida saab kasutaja ära teha? Mitte midagi. Vaid serveriomanik saab. Kasutaja saab teda tülitada, kuniks asjad korras.

Kust saan teada, kas minu tarvitatav teenus on mulguline? Päris kindlat garantiid ei anta, kuid testimisvorm asub drownattack.com lehe keskel.

Kas minu lemmikteenuseserver on ohustatud? Lase oma itimehel testida. DROWNi publitseerimise hetkel oli ohustatud neljandik internetis teenust pakkuvatest serveritest.

Kas minu sideliin läheb otse usaldusväärse ISP sidevõrku või jääb vahepeale mõni kahtlasem koht? Traceroute päring abiks. Samas, passiivset pealtkuulamist pole kahjuks kuidagi võimalik eemalt kindlaks teha. Siiski: 20 000-t libapäringut peaks sinu serveriomanik ehk suutma märgata. Küsi temalt endalt!

Kuidas see tantsukutsete väljaarvutamine täpselt käibki? Ründajal peab kodus olema arvutusvõimsust tasemel 250. Paar kiiret (Bitcoini arvutamiseks mõeldud) graafikakaarti koguhinnaga mõni tuhat dollarit või pilveraali üür mõnesaja dollari eest lahendavad arvutusvõimsuse probleemi. Ülejäänut loe ise algsest teadustööst.