PuTTY-s, Windowsi platvormal laialdaselt kasutatavas SSH-protokolli kliendis, leiti ohtlik haavatavus (CVE-2024-31497), mis võimaldab taastada kasutaja privaatvõtit, mis on genereeritud NIST P-521 elliptilise kõveraga ECDSA algoritmi kasutades (ecdsa-sha2-nistp521). Privaatvõtme leidmiseks on piisav analüüsida umbes 60 digiallkirja, mis on loodud probleemse võtmega.
Haavatavus avaldub alates PuTTY versioonist 0.68 ja on mõjutanud ka tooteid, mis sisaldavad haavatavaid PuTTY versioone, näiteks FileZilla (3.24.1 – 3.66.5), WinSCP (5.9.5 – 6.3.2), TortoiseGit (2.4.0.2 – 2.15.0) ja TortoiseSVN (1.10.0 – 1.14.6). Probleem on lahendatud PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 ja TortoiseGit 2.15.0.1 uuendustes. Pärast uuenduste paigaldamist soovitatakse kasutajatel genereerida uusi võtmeid ja eemaldada vanad avalikud võtmed failidest authorized_keys.
Haavatavus tuleneb arendajate tähelepanuta jätmisest, kellel oli 521-bitise võtme genereerimiseks kasutatud initsialiseerimisvektorit (nonce), mis põhines 512-bitisel juhuslikul järjestusel, arvates tõenäoliselt, et 512 bitist entropiat on piisavalt ja ülejäänud 9 bitti ei oma olulist tähtsust. Tulemuseks on see, et kõik PuTTY-s loodud suletud võtmed, kasutades algoritmi ecdsa-sha2-nistp521, olid esimesed 9 bitti initsialiseerimisvektoris alati nullid.
ECDSA ja DSA puhul on valearvutusteta juhuslike arvude generaatori kvaliteet ning täielik juhuslike andmete katvus parameetrites, mida kasutatakse mooduli arvutamisel, äärmiselt tähtsad, kuna isegi mõne bitiga initsialiseerimisvektorist informatsiooni määramine on piisav, et rünnata järjestikku kogu suletud võti taastamiseks. Selleks, et edukalt taastada võti, piisab avaliku võtme olemasolust ja probleemse võtme kasutamisel genereeritud digiallkirjade analüüsist, et ründaja saaks teada andmeid. Rünnak piirdub HNP (Hidden Number Problem) ülesande lahendamisega.
Vajalikud digitaalsed allkirjad on saadaval näiteks kasutaja ühendamisel pahatahtliku SSH-serveriga või Git-serveriga, mis kasutab SSH-d transpordina. Rünnaku jaoks vajalikud allkirjad on samuti saadaval, kui võtme kasutatakse mis tahes andmete, näiteks Git-kohustuste, allkirjastamiseks, kui SSH-agent Pageant suunab liiklust arendaja hostile. Ründamine, saades vajalikke andmeid võtme taastamiseks MITM-rünnaku käigus, on välistatud, kuna SSH-s ei edastata allkirju avatud kujul.
On märgitud, et sarnast mittetäielike algusvektorite kasutamist on rakendatud PuTTY-s ja ka teiste elliptsete käyrade puhul, kuid erinevate ECDSA P-521 algoritmide puhul ei piisa esinenud teabe leketest töövõimeka võtme taastamisrünnaku teostamiseks. Teiste suurustega ECDSA võtmed ja Ed25519 võtmed ei ole rünnaku suhtes haavatavad.
Allikas: opennet.ru
