Problem je prisutan izravno u TLS specifikaciji i utječe samo na veze koje koriste šifre temeljene na DH protokolu za razmjenu ključeva (Diffie-Hellman, TLS_DH_*"). S ECDH šiframa problem se ne pojavljuje i one ostaju sigurne. Ranjivi su samo TLS protokoli do verzije 1.2; problem ne utječe na TLS 1.3. Ranjivost se javlja u TLS implementacijama koje ponovno koriste DH tajni ključ preko različitih TLS veza (ovo se ponašanje događa na približno 4.4% Alexa Top 1M poslužitelja).
U OpenSSL 1.0.2e i ranijim izdanjima, primarni ključ DH ponovno se koristi u svim vezama poslužitelja osim ako opcija SSL_OP_SINGLE_DH_USE nije izričito postavljena. Od OpenSSL 1.0.2f, DH primarni ključ ponovno se koristi samo kada se koriste statičke DH šifre ("DH-*", npr. "DH-RSA-AES256-SHA"). Ranjivost se ne pojavljuje u OpenSSL-u 1.1.1, jer ova grana ne koristi DH primarni ključ i ne koristi statičke DH šifre.
Kod metode DH razmjene ključeva obje strane veze generiraju nasumične privatne ključeve (u daljnjem tekstu ključ “a” i ključ “b”), na temelju kojih se izračunavaju i šalju javni ključevi (ga mod p i gb mod p). Nakon što svaka strana primi javne ključeve, izračunava se zajednički primarni ključ (gab mod p) koji se koristi za generiranje ključeva sesije. Raccoon napad vam omogućuje određivanje primarnog ključa kroz analizu bočnog kanala, na temelju činjenice da TLS specifikacije do verzije 1.2 zahtijevaju da se svi vodeći nulti bajtovi primarnog ključa odbace prije izračuna koji ga uključuju.
Uključivanje skraćenog primarnog ključa prosljeđuje se funkciji generiranja ključa sesije, koja se temelji na hash funkcijama s različitim kašnjenjima pri obradi različitih podataka. Precizno mjerenje vremena ključnih operacija koje izvodi poslužitelj omogućuje napadaču da odredi tragove (proročanstvo) koji omogućuju procjenu počinje li primarni ključ od nule ili ne. Na primjer, napadač bi mogao presresti javni ključ (ga) koji je poslao klijent, ponovno ga poslati poslužitelju i odrediti
da li rezultirajući primarni ključ počinje od nule.
Samo po sebi, definiranje jednog bajta ključa ne daje ništa, ali presretanjem vrijednosti "ga" koju klijent prenosi tijekom pregovora o povezivanju, napadač može generirati skup drugih vrijednosti povezanih s "ga" i poslati ih na poslužitelja u odvojenim sesijama pregovora o povezivanju. Generiranjem i slanjem “gri*ga” vrijednosti, napadač može analizom promjena kašnjenja u odgovoru poslužitelja odrediti vrijednosti koje dovode do primanja primarnih ključeva počevši od nule. Odredivši takve vrijednosti, napadač može stvoriti skup jednadžbi za
OpenSSL ranjivosti
Dodatni problemi su posebno navedeni (
Izvor: opennet.ru