Ranljivost v TLS, ki omogoča določanje ključa za povezave, ki temeljijo na šifrah DH

Razkrito informacije o novem ranljivosti (CVE-2020-1968) v protokolu TLS s kodnim imenom
Rakun in v redkih okoliščinah omogoča določitev predhodnega primarnega ključa (predglavnega), ki se lahko uporabi za dešifriranje povezav TLS, vključno s HTTPS, pri prestrezanju tranzitnega prometa (MITM). Opozoriti je treba, da je napad zelo težko izvesti v praksi in je bolj teoretične narave. Za izvedbo napada je potrebna posebna konfiguracija strežnika TLS in sposobnost zelo natančnega merjenja časa obdelave strežnika.

Težava je prisotna neposredno v specifikaciji TLS in vpliva samo na povezave, ki uporabljajo šifre, ki temeljijo na protokolu za izmenjavo ključev DH (Diffie-Hellman, TLS_DH_*"). Pri šifrah ECDH se težava ne pojavi in ​​ostanejo varne. Ranljivi so samo protokoli TLS do različice 1.2; težava ne vpliva na TLS 1.3. Ranljivost se pojavi pri implementacijah TLS, ki ponovno uporabljajo skrivni ključ DH v različnih povezavah TLS (to vedenje se pojavi na približno 4.4 % strežnikov Alexa Top 1M).

V OpenSSL 1.0.2e in starejših izdajah se primarni ključ DH ponovno uporabi v vseh povezavah strežnika, razen če je možnost SSL_OP_SINGLE_DH_USE izrecno nastavljena. Od OpenSSL 1.0.2f dalje se primarni ključ DH ponovno uporablja samo pri uporabi statičnih šifer DH ("DH-*", npr. "DH-RSA-AES256-SHA"). Ranljivost se ne pojavi v OpenSSL 1.1.1, ker ta veja ne uporablja primarnega ključa DH in ne uporablja statičnih šifer DH.

Pri uporabi metode izmenjave ključev DH obe strani povezave generirata naključna zasebna ključa (v nadaljevanju ključ “a” in ključ “b”), na podlagi katerih se izračunata in pošljeta javna ključa (ga mod p in gb mod p). Ko vsaka stranka prejme javne ključe, se izračuna skupni primarni ključ (gab mod p), ki se uporablja za generiranje ključev seje. Napad Raccoon vam omogoča, da določite primarni ključ z analizo stranskega kanala, ki temelji na dejstvu, da specifikacije TLS do različice 1.2 zahtevajo, da se vsi začetni ničelni bajti primarnega ključa zavržejo pred izračuni, ki ga vključujejo.

Vključno s skrajšanim primarnim ključem se posreduje funkciji generiranja ključa seje, ki temelji na zgoščevalnih funkcijah z različnimi zamiki pri obdelavi različnih podatkov. Natančno merjenje časa ključnih operacij, ki jih izvaja strežnik, omogoča napadalcu, da določi namige (orakelj), ki omogočajo presojo, ali se primarni ključ začne iz nič ali ne. Napadalec bi lahko na primer prestregel javni ključ (ga), ki ga pošlje odjemalec, ga ponovno prenese na strežnik in ugotovi
ali se dobljeni primarni ključ začne od nič.

Definiranje enega bajta ključa samo po sebi ne daje ničesar, toda s prestrezanjem vrednosti »ga«, ki jo posreduje odjemalec med pogajanjem o povezavi, lahko napadalec ustvari nabor drugih vrednosti, povezanih z »ga«, in jih pošlje v strežnik v ločenih sejah pogajanj o povezavi. Z generiranjem in pošiljanjem vrednosti "gri*ga" lahko napadalec z analizo sprememb v zakasnitvah v odzivu strežnika določi vrednosti, ki vodijo do prejemanja primarnih ključev od nič. Ko določi takšne vrednosti, lahko napadalec ustvari nabor enačb za Rešitve težave s skritimi številkami in izračunajte izvirni primarni ključ.

Ranljivost v TLS, ki omogoča določanje ključa za povezave, ki temeljijo na šifrah DH

Ranljivosti OpenSSL dodeljena nizka stopnja nevarnosti, popravek pa se je zmanjšal na premik problematičnih šifer "TLS_DH_*" v izdaji 1.0.2w v kategorijo šifer z nezadostno stopnjo zaščite ("šibke-ssl-šifre"), ki je privzeto onemogočena . Mozillini razvijalci so storili enako, ugasnjen v knjižnici NSS, ki se uporablja v Firefoxu, paketih šifriranja DH in DHE. Od Firefoxa 78 naprej so problematične šifre onemogočene. Chrome je leta 2016 opustil podporo za DH. Težava ne vpliva na knjižnice BearSSL, BoringSSL, Botan, Mbed TLS in s2n, ker ne podpirajo šifer DH ali statičnih različic šifer DH.

Dodatne težave so označene ločeno (CVE-2020-5929) v skladu TLS naprav F5 BIG-IP, zaradi česar je napad bolj realističen. Predvsem so bila ugotovljena odstopanja v obnašanju naprav ob prisotnosti ničelnega bajta na začetku primarnega ključa, ki se lahko uporabi namesto merjenja natančne zakasnitve izračunov.

Vir: opennet.ru

Dodaj komentar