În PuTTY, clientul pentru protocolul SSH, popular pe platforma Windows, a fost identificată o vulnerabilitate periculoasă (CVE-2024-31497) care permite recrearea cheii private a utilizatorului, generată folosind algoritmul ECDSA cu curba eliptică NIST P-521 (ecdsa-sha2-nistp521). Pentru a determina cheia privată, este suficient să se analizeze aproximativ 60 de semnături digitale formate cu cheia problematică.
Vulnerabilitatea apare începând cu versiunea PuTTY 0.68 și a afectat, de asemenea, produse care includ versiuni vulnerabile ale PuTTY, cum ar fi 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). Problema a fost rezolvată în actualizările PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 și TortoiseGit 2.15.0.1. După instalarea actualizării, utilizatorii sunt sfătuiți să genereze chei noi și să elimine vechile chei publice din fișierele authorized_keys.
Vulnerabilitatea este cauzată de neglijența dezvoltatorilor, care pentru generarea cheii de 521 de biți au folosit un vector de inițializare (nonce) bazat pe o secvență aleatoare de 512 biți, probabil considerând că entropia de 512 biți ar fi suficientă și că restul de 9 biți nu au o semnificație esențială. Ca urmare, în toate cheile private create în PuTTY folosind algoritmul ecdsa-sha2-nistp521, primii 9 biți ai vectorului de inițializare aveau întotdeauna valoare zero.
Pentru ECDSA și DSA, calitatea generatorului de numere pseudo-aleatoare și acoperirea completă cu date aleatoare a parametrului folosit la calcularea modulului sunt esențiale, deoarece determinarea chiar și a câtorva biți cu informații despre vectorul de inițializare este suficientă pentru a realiza un atac prin recuperarea secvențială a întregii chei private. Pentru a reuși în recuperarea cheii, este suficient să existe cheia publică și să se analizeze câteva zeci de semnături digitale generate cu cheia problematică pentru datele cunoscute atacatorului. Atacul constă în rezolvarea problemei HNP (Hidden Number Problem).
Semnăturile digitale necesare pot fi obținute, de exemplu, prin conectarea utilizatorului la un server SSH al atacatorului sau la un server Git care folosește SSH ca transport. Semnăturile necesare pentru atac pot fi, de asemenea, descoperite dacă cheia a fost utilizată pentru a semna date arbitrare, de exemplu, commit-uri git prin utilizarea agentului SSH Pageant pentru redirecționarea traficului către hostul dezvoltatorului. Obținerea datelor necesare pentru recuperarea cheii în timpul unui atac MITM este exclusă, deoarece semnăturile în SSH nu sunt transmise în clar.
Se observă că o utilizare similară a vectorilor de inițializare incompleți a fost aplicată și în PuTTY și pentru alte tipuri de curbe eliptice, dar pentru algoritmi diferiți de ECDSA P-521, scurgerile de informații nu sunt suficiente pentru a realiza un atac funcțional de recuperare a cheii. Cheile ECDSA de alte dimensiuni și cheile Ed25519 nu sunt vulnerabile la atac.
Sursa: opennet.ro
