El problema està present directament a l'especificació TLS i només afecta les connexions que utilitzen xifrats basats en el protocol d'intercanvi de claus DH (Diffie-Hellman, TLS_DH_*"). Amb els xifratge ECDH el problema no es produeix i es mantenen segurs. Només els protocols TLS fins a la versió 1.2 són vulnerables; TLS 1.3 no es veu afectat pel problema. La vulnerabilitat es produeix a les implementacions TLS que reutilitzen la clau secreta DH a diferents connexions TLS (aquest comportament es produeix en aproximadament el 4.4% dels servidors Alexa Top 1M).
A l'OpenSSL 1.0.2e i versions anteriors, la clau primària DH es reutilitza a totes les connexions del servidor tret que l'opció SSL_OP_SINGLE_DH_USE estigui establerta explícitament. Des de l'OpenSSL 1.0.2f, la clau primària DH només es reutilitza quan s'utilitzen xifratges DH estàtics ("DH-*", per exemple, "DH-RSA-AES256-SHA"). La vulnerabilitat no apareix a OpenSSL 1.1.1, ja que aquesta branca no utilitza una clau primària DH i no utilitza xifratge DH estàtics.
Quan s'utilitza el mètode d'intercanvi de claus DH, ambdós costats de la connexió generen claus privades aleatòries (d'ara endavant clau "a" i clau "b"), a partir de les quals es calculen i s'envien les claus públiques (ga mod p i gb mod p). Després que cada part rep les claus públiques, es calcula una clau primària comuna (gab mod p), que s'utilitza per generar claus de sessió. L'atac Raccoon us permet determinar la clau primària mitjançant l'anàlisi del canal lateral, basant-vos en el fet que les especificacions TLS fins a la versió 1.2 requereixen que es descartin tots els bytes nuls principals de la clau primària abans dels càlculs que la involucren.
La inclusió de la clau primària truncada es passa a la funció de generació de claus de sessió, que es basa en funcions hash amb diferents retards en processar dades diferents. Mesurar amb precisió el temps de les operacions de clau realitzades pel servidor permet a l'atacant determinar pistes (oracle) que permeten jutjar si la clau primària comença des de zero o no. Per exemple, un atacant podria interceptar la clau pública (ga) enviada pel client, retransmetre-la al servidor i determinar
si la clau primària resultant comença des de zero.
Per si mateix, definir un byte de la clau no dóna res, però interceptant el valor "ga" transmès pel client durant la negociació de la connexió, l'atacant pot generar un conjunt d'altres valors associats amb "ga" i enviar-los a el servidor en sessions de negociació de connexió separades. Mitjançant la generació i l'enviament de valors "gri*ga", un atacant pot, mitjançant l'anàlisi dels canvis en els retards en la resposta del servidor, determinar els valors que porten a rebre claus primàries a partir de zero. Un cop determinats aquests valors, l'atacant pot crear un conjunt d'equacions per
Vulnerabilitats OpenSSL
Els problemes addicionals s'anoten per separat (
Font: opennet.ru