Vakava haavoittuvuus PuTTY-ohjelmiston ECDSA-algoritmin toteutuksessa
PuTTY-tietoliikenneasiakasohjelmiston ja sen koodia käyttävien sovellusten heikko NIST P-521 ECDSA-algoritmin toteutus voi paljastaa käyttäjän yksityisen avaimen, mikäli avain on edellä mainittua tyyppiä.
Haavoittuvuuden kohde
PuTTY-tietoliikenneasiakasohjelmisto ja sen osia käyttävät muut ohjelmistot.
Haavoittuviksi tunnistetut ohjelmistot ja versiot
PuTTY 0.68 - 0.80
FileZilla 3.24.1 - 3.66.5
WinSCP 5.9.5 - 6.3.2
TortoiseGit 2.4.0.2 - 2.15.0
TortoiseSVN 1.10.0 - 1.14.6
Haavoittuvuus koskee organisaatioita ja kansalaisia, jotka ovat käyttäneet edellämainittuja ohjelmistoversioita ja käsitelleet niillä NIST P-521 ECDSA-algoritmia käyttäviä yksityisiä avaimia.
On mahdollista että listaus ei ole kattava. Muun ohjelmiston lisenssitiedoista kuuluu PuTTY-ohjelmiston lisenssiehtojen mukaan selvitä käyttääkö se PuTTY-ohjelmiston koodia.
Mistä on kysymys?
Haavoittuvuuden kuvaus: PuTTY-asiakasohjelmiston ja sen koodista periytyvä NIST P-521 ECDSA-algoritmin heikko toteutus, joka tuottaa kyseistä algoritmia käytettäessä ei-satunnaisia kertakäyttöisiä lukuja (nonce).
Keräämällä noin 60 heikolla toteutuksella tehtyä allekirjoitusta tiedonsiirrosta, hyökkääjä voi täysin päätellä uhrin yksityisen avaimen.
Vaikutukset: Haavoittuvuuden hyväksikäytön onnistuessa salatun yhteyden asiakaspään yksityinen avain paljastuu. Hyökkääjä voi käyttää avainta kuten sen omistajakin, esimerkiksi julkisen avaimen menetelmää käyttäviin SSH-kirjautumisiin kaikilla laitteilla, joissa paljastuneen avaimen julkinen osa on käytössä.
Reunaehdot: Hyökkääjällä on joko oltava näkyvyys haavoittuvan liikenteen salauksen sisään (esim. liikenteen nuuskinta jommassa kummassa päässä yhteyttä), tai muu tapa saada haltuunsa heikkoja allekirjoituksia. Pelkkä SSH-liikenteen sieppaaminen ei sellaisenaan paljasta haavoittuvaa tietoa.
Heikkoja allekirjoituksia on mahdollista kerätä myös muista kuin interaktiivisista SSH-yhteyksistä, esim. välitetyistä git-yhteyksistä.
Kaikkien seuraavien ehtojen pitää siis toteutua, jotta uhkatoimija voi saada yksityisen avaimen selville:
- käytössä haavoittuva ohjelmisto
- ohjelmiston käyttämä avain käyttää haavoittuvaa algoritmia ja käyrää
- hyökkääjä saa haltuunsa riittävän määrän heikkoja allekirjoituksia
Haavoittuvuus ei riipu siitä, millä ohjelmalla avain on alun perin generoitu.
Mitä voin tehdä?
Suositellut toimet:
- Haavoittuvien ohjelmistojen ja avainten käytön kartoittaminen ja päivittäminen viipymättä.
- Kaikkia käytössä olleita P-521-avainpareja on oletuksena käsiteltävä vaarantuneina, mikä tarkoittaa niiden korvaamista uudella avainparilla esimerkiksi authorized_keys-tiedostoissa tai GitHubissa.
- Avaimet on rotatoitava ohjelmistojen päivittämisen jälkeen, mikäli ei voida täysin varmistua siitä, että haavoittuvia ohjelmistoja ei ole ollut käytössä.
Haavoittuvuus on korjattu seuraavissa versioissa: PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3, TortoiseGit 2.15.0.1. TortoiseSVN-ohjelmiston käyttäjät voivat korvata Plink-ohjelman PuTTY-jakelusta saatavalla uusimmalla versiolla, kunnes ohjelmistosta on saatavilla korjattu versio.