Problēma ir tieši sastopama TLS specifikācijā un ietekmē tikai savienojumus, kas izmanto šifrus, kuru pamatā ir DH atslēgu apmaiņas protokols (Diffie-Hellman, TLS_DH_*"). Ar ECDH šifriem problēma nerodas, un tie paliek droši. Tikai TLS protokoli līdz versijai 1.2 ir neaizsargāti; TLS 1.3 problēma neietekmē. Ievainojamība rodas TLS ieviešanā, kas atkārtoti izmanto DH slepeno atslēgu dažādos TLS savienojumos (šāda darbība notiek aptuveni 4.4% Alexa Top 1M serveru).
OpenSSL 1.0.2e un vecākos laidienos DH primārā atslēga tiek atkārtoti izmantota visos servera savienojumos, ja vien nav skaidri iestatīta opcija SSL_OP_SINGLE_DH_USE. Kopš OpenSSL 1.0.2f DH primārā atslēga tiek atkārtoti izmantota tikai tad, ja tiek izmantoti statiskie DH šifri ("DH-*", piemēram, "DH-RSA-AES256-SHA"). Ievainojamība neparādās OpenSSL 1.1.1, jo šajā atzarā netiek izmantota DH primārā atslēga un netiek izmantoti statiskie DH šifri.
Izmantojot DH atslēgu apmaiņas metodi, abas savienojuma puses ģenerē nejaušas privātās atslēgas (turpmāk atslēga “a” un atslēga “b”), uz kuru pamata tiek aprēķinātas un nosūtītas publiskās atslēgas (ga mod p un gb mod p). Pēc tam, kad katra puse saņem publiskās atslēgas, tiek aprēķināta kopējā primārā atslēga (gab mod p), ko izmanto sesijas atslēgu ģenerēšanai. Raccoon uzbrukums ļauj noteikt primāro atslēgu, izmantojot sānu kanālu analīzi, pamatojoties uz faktu, ka TLS specifikācijas līdz pat versijai 1.2 pieprasa, lai visi primārās atslēgas galvenie nullbaiti ir jāatmet pirms aprēķiniem, kas ietver to.
Ieskaitot saīsināto primāro atslēgu, tā tiek nodota sesijas atslēgas ģenerēšanas funkcijai, kuras pamatā ir jaucējfunkcijas ar dažādu aizkavi, apstrādājot dažādus datus. Precīza servera veikto atslēgu darbību laika mērīšana ļauj uzbrucējam noteikt norādes (Oracle), kas ļauj spriest, vai primārā atslēga sākas no nulles vai nē. Piemēram, uzbrucējs var pārtvert klienta nosūtīto publisko atslēgu (ga), atkārtoti pārsūtīt to uz serveri un noteikt
vai iegūtā primārā atslēga sākas no nulles.
Viena atslēgas baita definēšana pati par sevi neko nedod, taču, pārtverot savienojuma sarunu laikā klienta pārsūtīto “ga” vērtību, uzbrucējs var ģenerēt citu ar “ga” saistītu vērtību kopu un nosūtīt tās uz serveri atsevišķās savienojuma sarunu sesijās. Ģenerējot un nosūtot “gri*ga” vērtības, uzbrucējs, analizējot izmaiņas servera atbildes aizkavē, var noteikt vērtības, kuru rezultātā tiek saņemtas primārās atslēgas, sākot no nulles. Pēc šādu vērtību noteikšanas uzbrucējs var izveidot vienādojumu kopu
OpenSSL ievainojamības
Papildu problēmas ir norādītas atsevišķi (
Avots: opennet.ru