Problemet er til stede direkte i TLS-specifikationen og påvirker kun forbindelser, der bruger chiffer baseret på DH-nøgleudvekslingsprotokollen (Diffie-Hellman, TLS_DH_*"). Med ECDH-cifre opstår problemet ikke, og de forbliver sikre. Kun TLS-protokoller op til version 1.2 er sårbare; TLS 1.3 er ikke påvirket af problemet. Sårbarheden opstår i TLS-implementeringer, der genbruger den hemmelige DH-nøgle på tværs af forskellige TLS-forbindelser (denne adfærd forekommer på ca. 4.4 % af Alexa Top 1M-servere).
I OpenSSL 1.0.2e og tidligere udgivelser genbruges DH-primærnøglen i alle serverforbindelser, medmindre indstillingen SSL_OP_SINGLE_DH_USE udtrykkeligt er angivet. Siden OpenSSL 1.0.2f genbruges DH-primærnøglen kun ved brug af statiske DH-cifre ("DH-*", f.eks. "DH-RSA-AES256-SHA"). Sårbarheden vises ikke i OpenSSL 1.1.1, da denne gren ikke bruger en DH-primærnøgle og ikke bruger statiske DH-cifre.
Ved brug af DH-nøgleudvekslingsmetoden genererer begge sider af forbindelsen tilfældige private nøgler (herefter nøglen "a" og nøglen "b"), baseret på hvilke offentlige nøgler (ga mod p og gb mod p) beregnes og sendes. Efter at hver part har modtaget de offentlige nøgler, beregnes en fælles primær nøgle (gab mod p), som bruges til at generere sessionsnøgler. Raccoon-angrebet giver dig mulighed for at bestemme den primære nøgle gennem sidekanalanalyse, baseret på det faktum, at TLS-specifikationerne op til version 1.2 kræver, at alle førende null-bytes af den primære nøgle kasseres før beregninger, der involverer den.
Inkludering af den trunkerede primærnøgle overføres til sessionsnøglegenereringsfunktionen, som er baseret på hashfunktioner med forskellige forsinkelser ved behandling af forskellige data. Nøjagtig måling af timingen af nøgleoperationer udført af serveren giver angriberen mulighed for at bestemme spor (oracle), der gør det muligt at bedømme, om den primære nøgle starter fra bunden eller ej. For eksempel kan en angriber opsnappe den offentlige nøgle (ga) sendt af klienten, gentransmittere den til serveren og bestemme
om den resulterende primærnøgle starter fra nul.
I sig selv giver det ikke noget at definere en byte af nøglen, men ved at opsnappe "ga"-værdien transmitteret af klienten under forbindelsesforhandling, kan angriberen generere et sæt andre værdier forbundet med "ga" og sende dem til serveren i separate forbindelsesforhandlingssessioner. Ved at generere og sende "gri*ga"-værdier kan en angriber, gennem at analysere ændringer i forsinkelser i serversvaret, bestemme de værdier, der fører til modtagelse af primærnøgler startende fra nul. Efter at have bestemt sådanne værdier, kan angriberen oprette et sæt ligninger for
OpenSSL sårbarheder
Yderligere problemer er noteret separat (
Kilde: opennet.ru