Anto Veldre, RIA analüütik
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.
SSL või TLS avang
Krüpteeritud sideühendused on täna üleüldine käitumisnorm. Isegi Facebook’i minnakse turvalise ühendusega, st 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 (IMAP ja SMTPS protokollid).
Sideühenduse päris 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.
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. k. 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 ka 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) oleks samaaegselt kasutusel nii TLS kui ka SSLv2 protokolli kaudu. Mõlemat on vaja, sest rünnaku esimene osa hangib infot TLS avangust, rünnaku teine osa aga kuritarvitab SSLv2 protokolli iseärasusi. Servereid, mis pakuvad üheaegselt nii protokolle TLS kui ka SSLv2, on maailmas hinnanguliselt 17% (kõigist teenuseserveritest).
Kuid sertifikaat maksab raha. Teenusepakkujad hoiavad raha kokku – tarvitades ühtsama RSA võtit ja ühtsama serverisertifikaati mitmel masinal paralleelselt. Näiteks avatakse vasakus masinas (kus pärandkompatiiblus on oluline) vaid SSLv2, paremas (turvalisemas) masinas aga üksnes TLS. Teadustööst selgub, et vahet pole, kas sama privaatvõtmega teenindatakse ühe masina kahest eraldi pordist või hoopis mitmest eraldi masinast. Kui sama salajane võti on paralleelkasutuses nii TSL teenindusluugis kui ka SSLv2 teenindusluugis, siis DROWN rünnaku salakaval matemaatika töötab! Säärast tingimust rahuldab aga juba tervelt 33% maailma teenusserverite koguarvust. Lühilausena – DROWN-rünnaku eeltingimusena peab sama privaatvõti/kasutajasertifikaat olema korraga kasutusel nii TLS kui SSLv2 protokolliga. Häda serveriomanikele, kel nii 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 1000 komplekti avanguid 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) ning 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
Q1 Mida saab kasutaja ära teha?
A1: Mitte midagi. Vaid serveriomanik saab. Kasutaja saab teda tülitada, kuniks asjad korras.
Q2: Kust saan teada, kas minu tarvitatav teenus on mulguline?
A2: Päris kindlat garantiid ei anta, kuid testimisvorm asub lehe keskel.
Q3: Kas minu lemmikteenuseserver on ohustatud?
A3: Lase oma itimehel testida. DROWNi publitseerimise hetkel oli ohustatud neljandik internetis teenust pakkuvatest serveritest.
Q4: Kas minu sideliin läheb otse usaldusväärse ISP sidevõrku või jääb vahepeale mõni kahtlasem koht?
A4: Traceroute päring abiks. Samas, passiivset pealtkuulamist pole kahjuks kuidagi võimalik eemalt kindlaks teha. Siiski: kahtekümment tuhandet libapäringut peaks sinu serveriomanik ehk suutma märgata. Küsi temalt endalt!
Q5: Kuidas see tantsukutsete väljaarvutamine täpselt käibki?
A5: 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.
Viited
- Rahvalik käsitlus (inglise keeles): https://drownattack.com/
- Teaduslik käsitlus
- Soome CERTi tormihoiatus