» »

Odkrita ranljivost v SSL 3.0

Odkrita ranljivost v SSL 3.0

Slo-Tech - Googlovi raziskovalci Bodo Möller, Thai Duong in Krzysztof Kotowicz so odkrili ranljivost v šifrirnem protokolu SSL 3.0, ki napadalcu omogoča izluščiti podatke, čeprav se ti prenašajo po varni povezavi, če uspe nadzorovati promet med strežnikom in uporabnikom (man-in-the-middle). Imenuje se POODLE (Padding Oracle On Downgraded Legacy Encryption).

SSL 3.0 je poldrugo desetletje star protokol, ki ima cel kup ranljivosti in problemov. Uporablja tokovno šifro RC4 ali blokovno šifro (CBC) in za RC4 je znano, da pri uporabi iste skrivnosti sčasoma uhajajo podatki, ki jih lahko napadalec izkoristi. Kljub temu je še lani 40 odstotkov spletnih povezav uporabljalo RC4. Vse to so razlogi, da se SSL 3.0 dandanes skorajda ne uporablja več, saj so ga nadomestili varnejši TLS 1.0, TLS 1.1 in TLS 1.2.

Odjemalec in strežnik uporabita najvišjo (zadnjo) različico, ki je obema poznana, zato načeloma SSL 3.0 ne bi smel biti več aktualen. Problem nastopi, kadar odjemalec uporablja downgrade dance, kakor se imenuje trik, ki ga nekateri odjemalci uporabljajo za izogibanje hroščem. Če je vzpostavljanje povezave (handshake) neuspešno in odjemalec ne prejme odziva strežnika, v katerem mu ta sporoči najvišjo podprto verzijo TLS, odjemalec v tem primeru sam poizkuša vzpostaviti povezavo z nižjimi verzijami. Napadalec, ki nadzoruje promet, lahko poskrbi za neuspelo vzpostavitev povezave s TLS 1.2, 1.1 in 1.0, kar odjemalca prisili v poskus s SSL 3.0. Strežnik, ki je šele sedaj dejansko prejel zahtevo za vzpostavitev povezave, pa tako vidi, kakor da je SSL 3.0 najvišji podprt protokol na strani odjemalca.

Potem lahko izkoristi odkrito ranljivost, ki so jo poimenovali POODLE. V vrivanjem JavaScripta lahko napadalec poskrbi, da brskalnik poizkuša znova in znova prenesti isto sliko, pri čemer vsakokrat pošlje sejni piškotek. Če so zahtevki primerni skonstruirani, lahko tako izlušči piškotek, ki mu omogoča ugrabitev seje. Tako se strežniku predstavlja kot odjemalec, odjemalcu pa kot strežnik, čeprav naj bi bila povezava med njima šifrirana.

Napake ni mogoče odpraviti, ne da bi podrli združljivost SSL 3.0. Google zato priporoča, da na odjemalcih onemogočimo uporabo SSL 3.0, na strežnikih pa poskrbimo za dosledno uporabo funkcije TLS_FALLBACK_SCSV, ki prepreči vsiljeno uporabo nižje verzije. Na ta način bodo SSL 3.0 uporabljali samo še tisti prastari odjemalci, ki res ne podpirajo ničesar višjega. Ali je vaš brskalnik ranljiv, lahko preverite na tej strani.

Mozilla je že napovedala, da bo v Firefoxu 34, ki izide 25. novembra onemogočila uporabo SSL 3.0 (ročno pa to že lahko storite). Izklop je priporočljiv tudi v Internet Explorerju in v Chromu.

15 komentarjev

fiction ::

Mogoče malo neroden opis. Ni nujno, da se zahteva sliko.

Fora je v tem, da se ti lahko naloži JS z ene strani in ta dela (HTTPS) requeste na nek čisto drug host. Zaradi same-origin-policya zlobna koda ne more videti odgovora. Lahko pa naredi poljuben request (tako da je URL - plain-text znan). Browser bo zaradi HTTP protokola poslal avtomatsko zraven (ustreznemu hostu) še Cookie header. Tega jasno napadalčev JS ne more videti. Ker je povezava šifrirana pa tudi človek, ki prestreza komunikacijo ne. (Do tukaj je zadeva podobna kot BEAST ali CRIME).

Ampak aktiven napadalec v sredini lahko podatke od browserja spremeni preden jih pošlje naprej HTTPS strežniku. Pri POODLE šifriran Cookie napiše namesto šifriranega paddinga (ker je sam preko JS povzročil request, točno ve kje se kaj nahaja, čeprav je zadeva šifrirana).

Padding mora biti pri SSL 3.0 v plain-textu točno določene oblike ...7. V 1/256 primerih je in s tem je napadalec ugotovil 1 bajt cookija. Potem njegov JS del naredi malo drugače "zamaknjen" request in aktivni MiTM del naredi spet bruteforce - 256 poskusov (sprememba enega bajta v skopiranem encryptanem cookiju), da pridobi še en bajt. Dokler ne pridobi npr. celotnega session tokena s katerim napadalec lahko prevzame sejo žrtve.

vostok_1 ::

A je za obične uporabnike to nujno storiti pred updejtom? Man in the middle trik v mojem omrežju najbrž ni fizično mogoč.

Mesar ::

Ma hebeš odjemalce, ki ne podpirajo višje od SSL 3.0... :D

vostok_1 je izjavil:

A je za obične uporabnike to nujno storiti pred updejtom? Man in the middle trik v mojem omrežju najbrž ni fizično mogoč.


Na tvojem omrežju?
Your turn to burn!

SeMiNeSanja ::

Vprašanje, če sploh bo kakšen popravek, oz. za katere sisteme bo ustrezen popravek na voljo.
Kot kaže, se priporočila bolj nagibajo v smeri izklapljanja podpore zastarelega SSL 3.0 in 'dosledno uporabo funkcije TLS_FALLBACK_SCSV'.

Mesar ::

Kakšen popravek? In za katere sisteme? Od tistih, ki imajo cliente, ki ne podpirajo višje kot SSL 3.0 je težko pričakovat, da bodo kaj nadgrajevali/patchali... Google pač priporoča, da clientom, ki podpirajo TLS forsiraš le tega, ostalim pa pač ponudiš SSL 3.0 če ti ni prioriteta, da lahko ogrozijo podatke.
Your turn to burn!

fiction ::

BEAST cilja na TLS 1.0. Tam je težava to, da se ciphertext od prejšnjega paketa uporabi kot IV naslednjega. Napadalec ve, kaj se bo uporabilo kot IV še preden pošlje paket, kar pomeni, da lahko prilagodi svoj plain-text, ki ga npr. emita zloben JS (in tako rekoč "nevtralizira" IV).

V originalnem requestu si shrani dva zaporedna šifrirana bloka (C' in C). Pri čemer je njegov cilj ugotoviti, kaj piše v C. Njegov agent potem pošlje M = IV XOR C' XOR T. IV XOR IV se "izniči", tako da ostane C' XOR T. Torej, ko posniffa šifriran M, ki je enak C od prej, ve da je njegov bruteforce T pravilen. Ponavadi se spet zadeve lahko tako zamaknejo, da T vsebuje samo 1 neznan bajt, potem ko tega ugotoviš, 2 itd.

CRIME oz. varianta BREACH mišljena za HTTP zlorablja to, da se cel request skupaj kompresira (čeprav je del tajen - cookie, del pa izvira od nezaupanja vrednega uporabnika). In po domače, ko JS v URL napiše nekaj podobnega kot je vrednost Cookija napadalec vidi krajši paket, kot pa ko je tam nekaj precej različnega.

fiction ::

Zadeve se ne da "patchati", ker je problem v standardu SSL 3.0, ne v konkretni implementaciji. In popravek je že na voljo: novejši TLS.

Lahko samo s TLS_FALLBACK_SCSV zagotoviš, da se SSL 3.0 ne bo uporabljal, če ne bo nujno in druga stran res ne bi razumela TLS.

V bistvu client s tem označi, "ej, to je moja rezervna izbira zaradi tebe" in potem server, če pozna še kak boljši ciphersuite, reče "WTF" ter disconnecta clienta. To prepreči "downgrade dance" pri katerem bi napadalec vmes enostavno selektivno metal stran pakete.

Odjemalec bi bil nekako v stilu, "aha, nič nisem dobil, strežnik me ne razume, bom poskusil nekaj bolj enostavnega". Strežnik tudi ne bi ničesar dobil, dokler ne bi napadalec enostavno spustil zahtevka z najbolj simpel ciphersuitom, ki ga client še podpira naprej. Strežnik bi verjel in rekel "uf, če je to edino kar client zna, bom moral pa tudi jaz tako govoriti".

Zgodovina sprememb…

  • spremenil: fiction ()

filip007 ::

Smešno vse skupaj, dva dni star brskalnik pa so že našli nekaj.
Pod about:config je security.tls.version.min na 1 (Firefox)

In potem se prikaže drug pes...
Palačinka z Ajvarjem in stopljenim sirom v mikrovalovki.

Zgodovina sprememb…

  • spremenil: filip007 ()

Gandalfar ::

Err, o cem ti to?

stb ::

Pa smo spet tam...
This server is vulnerable to the POODLE attack. If possible, disable SSL 3 to mitigate. Grade capped to C. :
e-uprava.gov.si
storitve-ca.gov.si
sirena.arso.gov.si
nio.gov.si
vpndist.gov.si
evlozisce.sodisce.si
...

Res mi ni jasno zakaj še podpirajo SSL 3, saj že nekaj let TLS nima implementiranega le IE6 (brez podpore, v izumirnanju) na Windows XP (tudi brez podpore). Drugi brskalniki pa pospešeno umikajo podporo protokolu SSL 3.

filip007 ::

Prosim?
Napisal sem kako se deaktivira SSL 3.0, da ne bo treba čakati na FF 34. Mislim halo...
Palačinka z Ajvarjem in stopljenim sirom v mikrovalovki.

Mesar ::

Če pa je pol+ JU na XPjih ;(( velik delež teh pa po možnosti preSP1, torej ravno IE6 :8)

http://www.w3schools.com/browsers/brows... no al pa mogoče ne... več.
Your turn to burn!

stb ::

M.B. ::

NKBM Bankanet isto "This server is vulnerable to the POODLE attack. If possible, disable SSL 3 to mitigate. Grade capped to C" plus še "Signature algorithm SHA1withRSA WEAK"
Identično Abanka

Zanimivo NLB Klik "This server uses SSL 3, with POODLE mitigated. Still, it's recommended that this protocol is disabled." Grade B zaradi: " The server supports only older protocols, but not the current best TLS 1.2. Grade capped to B." plus "Signature algorithm SHA1withRSA WEAK"

Delavska hranilnica Ni ranljiva na Poodle, ker podpira samo TLS 1.0. Tako da Grade B. Je pa spet RSA kot podpisni algoritem.
Everyone started out as a newbie.
Sadly only a handful ever progress past that point.

Looooooka ::

stb je izjavil:

Zanimivo je, da je več uporabnikov IE5 (2.1%) kot IE6 (0.14%), Windows XP se pa držijo pri 15%

Pri teh "analizah" se vendo pozablja, da majo tud programi pač spisan en znan client string, ki ga pošiljajo v http zahtevkih. ko vlečejo kakšne podatke s strežnikov, parsajo strani itd/etc. Tega skoraj nikoli nihče ne spreminja, ker pač program svoje delo opravlja brez problema...statistika jih pa ne zanima, ker to ni nihov problem.

Zgodovina sprememb…

  • spremenilo: Looooooka ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Firefox mi ne dovoli dostopa do NLB Klik

Oddelek: Informacijska varnost
119014 (6317) Twixz
»

UKC Ljubljana kot nova slovenska potemkinova vas za blagor naroda

Oddelek: Novice / Varnost
309061 (6249) Saul Goodman
»

Odkrita ranljivost v SSL 3.0

Oddelek: Novice / Varnost
157009 (5596) Looooooka
»

Google želi reformirati splet s pomočjo brskalnika Chrome

Oddelek: Novice / Brskalniki
196414 (5444) c3p0
»

Odkrita resna ranljivost v SSL in TLS protokolih

Oddelek: Novice / Varnost
104695 (3664) BlueRunner

Več podobnih tem