Un grup de cercetători de la Universitatea din California, San Diego, a demonstrat posibilitatea reconstrucției cheilor RSA private ale serverelor SSH prin analiza pasivă a traficului SSH. Atacul poate fi realizat asupra serverelor care, din cauza circumstanțelor sau acțiunilor atacatorului, suferă erori în timpul calculului semnăturii digitale la stabilirea unei conexiuni SSH. Erorile pot fi atât software (executarea incorectă a operațiunilor matematice, deteriorarea memoriei), cât și hardware (erori în funcționarea NVRAM și DRAM sau erori cauzate de întreruperile de alimentare).
Una dintre modalitățile de stimulare a erorilor ar putea fi atacurile de tip RowHammer, care imprimă, printre altele, capacitatea de a provoca distorsiuni în conținutul unor biți de memorie prin citirea intensă și ciclică a datelor din celule adiacente, fie de la distanță, fie prin procesarea codului JavaScript în browser. O altă modalitate de provocare a erorilor ar putea fi exploatarea vulnerabilităților care duc la suprascrierea memoriei și deteriorarea datelor cu cheile în memorie.
Studiul publicat arată că, atunci când se folosesc semnături digitale în SSH bazate pe algoritmul RSA, atacurile de reconstrucție a cheilor RSA folosind metoda Lattice (Fault Attack) sunt aplicabile parametrelor semnăturii digitale, în cazul în care apar erori software sau hardware în timpul procesului de calcul al semnăturii. Esența metodei este că, comparând semnăturile digitale RSA corecte și defecte, se poate determina cel mai mare divizor comun pentru a obține unul dintre numerele prime utilizate la formarea cheii.
La baza criptării RSA stă operația de ridicare la putere modulo unui număr mare. În cheia publică se află modul și puterea. Modulul este format din două numere prime aleatorii, cunoscute doar proprietarului cheii private. Atacul poate fi aplicat implementărilor RSA care utilizează Teorema Chineză a Resturilor și scheme de umplere determinate, cum ar fi PKCS#1 v1.5.
Pentru a efectua un atac, este suficient să urmărești în mod pasiv conexiunile legitime la serverul SSH până când se identifică în trafic o semnătură digitală defectuoasă, care poate fi utilizată ca sursă de informații pentru a recrea cheia RSA privată. După ce cheia RSA a gazdei este recreată, atacatorul poate redirecționa fără a fi observat cererile către un gazdă falsă care se pretinde a fi un server SSH compromis și poate intercepta datele transmise pe aceasta. serverul de date.
În urma studiului unei colecții de date de rețea interceptate, care include aproximativ 5,2 miliarde de înregistrări legate de utilizarea protocolului SSH, cercetătorii au identificat aproximativ 3,2 miliarde de chei de gazdă deschise și semnături digitale utilizate în timpul negocierii sesiunii SSH. Dintre acestea, 1,2 miliarde (39,1%) au fost generate folosind algoritmul RSA. În 593671 de cazuri (0,048%), semnătura RSA a fost compromisă și nu a trecut verificarea. Pentru 4962 de semnături defectuoase, a fost aplicată metoda de factorizare a rețelelor pentru a determina cheia privată pe baza cheii publice cunoscute, ceea ce a dus în final la recrearea a 189 de perechi unice de chei RSA (în multe cazuri, pentru generarea diferitelor semnături defectuoase au fost utilizate aceleași chei și dispozitive defectuoase). Recrearea cheilor a necesitat aproximativ 26 de ore de timp de procesor.

Problema afectează doar implementările specifice ale protocolului SSH, utilizate în principal pe dispozitive încorporate. Printre exemplele de dispozitive cu implementări problematice ale SSH se numără produsele Zyxel, Cisco, Mocana și Hillstone Networks. OpenSSH nu este afectat de această problemă, deoarece utilizează pentru generarea cheilor biblioteca OpenSSL (sau LibreSSL), care are protecție împotriva atacurilor bazate pe analiza defectelor (Fault Attack) din 2001. Mai mult, în OpenSSH, schema de semnături digitale ssh-rsa (bazată pe sha1) a fost declarată învechită începând cu 2020 și a fost dezactivată în versiunea 8.8 (se mențin schemele rsa-sha2-256 și rsa-sha2-512). Potențial, atacul ar putea fi aplicabil și pentru protocolul IPsec, dar cercetătorii nu aveau suficiente date experimentale pentru a confirma un astfel de atac în practică.
Sursa: opennet.ro
