I PuTTY, en populær SSH-klient til Windows, er der identificeret en alvorlig sårbarhed (CVE-2024-31497), der gør det muligt at genskabe brugerens private nøgle genereret ved hjælp af ECDSA-algoritmen med den elliptiske kurve NIST P-521 (ecdsa-sha2-nistp521). For at finde den private nøgle er det tilstrækkeligt at analysere ca. 60 digitale underskrifter, dannet med den problematiske nøgle.
Sårbarheden optræder fra version PuTTY 0.68 og påvirker også produkter, der indeholder sårbare versioner af PuTTY, såsom FileZilla (3.24.1 — 3.66.5), WinSCP (5.9.5 — 6.3.2), TortoiseGit (2.4.0.2 — 2.15.0) og TortoiseSVN (1.10.0 — 1.14.6). Problemet er blevet løst i opdateringerne PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 og TortoiseGit 2.15.0.1. Efter installationen af opdateringen anbefales det, at brugere genererer nye nøgler og fjerner gamle offentlige nøgler fra filer med authorized_keys.
Sårbarheden skyldes uagtsomhed fra udviklernes side, der til genereringen af den 521-bit private nøgle brugte en initialiseringsvektor (nonce) baseret på en 512-bit tilfældig sekvens, sandsynligvis i den tro, at 512 bits entropi ville være tilstrækkeligt og de resterende 9 bits ikke havde væsentlig betydning. Som et resultat havde de første 9 bits af initialiseringsvektoren altid værdien nul i alle private nøgler, der blev skabt i PuTTY med ecdsa-sha2-nistp521-algoritmen.
For ECDSA og DSA er kvaliteten af den pseudorandom nummergenerator og den fulde dækning af tilfældige data i parameteren, der bruges til beregning af modulo, af afgørende betydning, da det at bestemme selv blot nogle få bits med information om initialiseringsvektoren er nok til at udføre et angreb ved sekventiel gendannelse af hele den private nøgle. For at genskabe nøglen er det kun nødvendigt at have den offentlige nøgle og analysere et par dusin digitale underskrifter, der er genereret med den problematiske nøgle for de oplysninger, som angriberen har. Angrebet reduceres til at løse HNP-opgaven (Hidden Number Problem).
Nødvendige digitale signaturer kan opnås, for eksempel ved at forbinde brugeren til angriberens SSH-server eller til en Git-server, der bruger SSH som transport. De nødvendige signaturer til angrebet kan også findes, hvis nøglen blev brugt til at underskrive vilkårlige data, såsom git-commits, når SSH-agenten Pageant bruges til at omdirigere trafikken til udviklerens vært. At få de nødvendige oplysninger til at gendanne nøglen under en MITM-angreb er udelukket, da signaturer i SSH ikke sendes i klar tekst.
Det bemærkes, at en lignende brug af ufuldstændige initialiseringsvektorer blev anvendt i PuTTY og for andre typer elliptiske kurver, men for algoritmer, der adskiller sig fra ECDSA P-521, var de informationer, der blev lækket, ikke tilstrækkelige til at gennemføre et fungerende angreb for at gendanne nøglen. Nøgler af ECDSA med andre størrelser og nøgler af Ed25519 er ikke udsat for angreb.
Kilde: opennet.ru
