U PuTTY-ju, klijentu za SSH protokol, popularnom na Windows platformi, otkrivena je ozbiljna sigurnosna ranjivost (CVE-2024-31497) koja omogućava rekonstrukciju privatnog ključa korisnika generiranog pomoću ECDSA algoritma s eliptičnom krivuljom NIST P-521 (ecdsa-sha2-nistp521). Da bi se odabrao privatni ključ, dovoljno je analizirati otprilike 60 digitalnih potpisa formiranih problematičnim ključem.
Ranjivost se pojavljuje od verzije PuTTY 0.68 i također utječe na proizvode koji uključuju ranjive verzije PuTTY-a, kao što su FileZilla (3.24.1 — 3.66.5), WinSCP (5.9.5 — 6.3.2), TortoiseGit (2.4.0.2 — 2.15.0) i TortoiseSVN (1.10.0 — 1.14.6). Problem je riješen u ažuriranjima PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 i TortoiseGit 2.15.0.1. Nakon instalacije ažuriranja, korisnicima se preporučuje generiranje novih ključeva i uklanjanje starih javnih ključeva iz datoteka authorized_keys.
Ranjivost je uzrokovana nemarom programera koji su za generiranje 521-bitnog ključa koristili vektor inicijalizacije (nonce) temeljen na 512-bitnoj slučajnoj sekvenci, vjerojatno smatrajući da će entropija od 512 bita biti dovoljna i da preostalih 9 bita nema značaja. U konačnici, u svim privatnim ključevima stvorenim u PuTTY-ju korištenjem ecdsa-sha2-nistp521 algoritma, prvih 9 bita vektora inicijalizacije uvijek su imala nulte vrijednosti.
Za ECDSA i DSA, kvaliteta generatora pseudo-slučajnih brojeva i potpuno pokriće slučajnim podacima parametra koji se koristi prilikom izračuna modula su od suštinskog značaja, jer je određivanje čak i nekoliko bita s informacijama o vektoru inicijalizacije dovoljno za izvođenje napada putem sekvencijalnog obnavljanja cijelog privatnog ključa. Za uspješno obnavljanje ključa dovoljni su javni ključ i analiza nekoliko desetaka digitalnih potpisa generiranih pomoću problematičnog ključa za poznate podatke napadaču. Napad se svodi na rješavanje HNP (Hidden Number Problem) zadatka.
Potrebni digitalni potpisi mogu se dobiti, na primjer, povezivanjem korisnika na SSH poslužitelj napadača ili na Git poslužitelj koji koristi SSH kao transport. Potrebne potpise za napad također se mogu saznati ako je ključ korišten za potpisivanje proizvoljnih podataka, primjerice, git commitova pri korištenju SSH agenta Pageant za prosljeđivanje prometa na domaćina programera. Dobivanje potrebnih podataka za vraćanje ključa tijekom MITM napada je isključeno, jer se potpisi u SSH ne prenose u otvorenom obliku.
Primjećuje se da je slično korištenje nepotpunih vektora inicijalizacije primjenjivano u PuTTY i za druge vrste eliptičnih krivulja, no za algoritme osim ECDSA P-521, došlo je do nedovoljnog curenja informacija za realizaciju funkcionalnog napada za vraćanje ključa. Ključevi ECDSA druge veličine i ključevi Ed25519 nisu podložni napadu.
Izvor: opennet.ru
