Problem je prisutan direktno u TLS specifikaciji i utječe samo na veze koje koriste šifre zasnovane na protokolu razmjene DH ključeva (Diffie-Hellman, TLS_DH_*"). Sa ECDH šiframa problem se ne pojavljuje i one ostaju sigurne. Ranjivi su samo TLS protokoli do verzije 1.2; na TLS 1.3 problem ne utiče. Ranjivost se javlja u TLS implementacijama koje ponovo koriste DH tajni ključ u različitim TLS konekcijama (ovo ponašanje se javlja na približno 4.4% Alexa Top 1M servera).
U OpenSSL 1.0.2e i ranijim izdanjima, DH primarni ključ se ponovo koristi u svim serverskim vezama osim ako opcija SSL_OP_SINGLE_DH_USE nije eksplicitno postavljena. Od OpenSSL 1.0.2f, DH primarni ključ se ponovo koristi samo kada se koriste statičke DH šifre ("DH-*", npr. "DH-RSA-AES256-SHA"). Ranjivost se ne pojavljuje u OpenSSL 1.1.1, jer ova grana ne koristi primarni ključ DH i ne koristi statičke DH šifre.
Kada se koristi metoda razmjene DH ključeva, obje strane veze generiraju nasumične privatne ključeve (u daljem tekstu ključ „a“ i ključ „b“), na osnovu 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ćava da odredite primarni ključ kroz analizu bočnog kanala, na osnovu činjenice da TLS specifikacije do verzije 1.2 zahtijevaju da se svi vodeći nul-bajtovi primarnog ključa odbace prije izračunavanja koja 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 prilikom obrade različitih podataka. Precizno mjerenje vremena ključnih operacija koje izvodi server omogućava napadaču da odredi tragove (proročanstvo) koji omogućavaju procjenu da li primarni ključ počinje od nule ili ne. Na primjer, napadač bi mogao presresti javni ključ (ga) koji je poslao klijent, ponovo ga prenijeti na server 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 presretnuvši vrijednost “ga” koju prenosi klijent tokom pregovora o vezi, napadač može generirati skup drugih vrijednosti povezanih sa “ga” i poslati ih na server u odvojenim sesijama pregovaranja o povezivanju. Generiranjem i slanjem “gri*ga” vrijednosti, napadač može, analizirajući promjene u kašnjenju u odgovoru servera, odrediti vrijednosti koje dovode do primanja primarnih ključeva počevši od nule. Nakon što odredi takve vrijednosti, napadač može kreirati skup jednačina za
OpenSSL ranjivosti
Dodatni problemi su posebno navedeni (
izvor: opennet.ru