Haavoittuvuus13/2024CVE-2024-31497 (Ulkoinen linkki)
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 (Ulkoinen linkki) 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.
Huomiot ja lisätiedot
Haavoittuvuudessa kyse on mainitun ECDSA-algoritmin toteutuksesta ohjelmistossa, ei haavoittuvuudesta itse algoritmissa tai SSH-protokollassa. Tiedossamme ei ole, että muut kuin P-521-toteutus olisivat haavoittuvia.
- Jos organisaatiossa noudatetaan FIPS/NIST:n määrittelemiä kyberturvallisuusvaatimuksia, on hyvin mahdollista että ECDSA-tyyppinen algoritmi on käytössä organisaatiossa.
- P-521 on myös Kyberturvallisuuskeskuksen kryptokriteerien mukainen käyrä.
- Avain voi vaarantua myös haavoittuvien ohjelmistojen päivittämisen jälkeen, jos uhkatoimija onnistuu keräämään haavoittuvien ohjelmistojen luomia muistiin tai levylle tallentuneita heikkoja allekirjoituksia.
Haavoittuvuus ja SSH-protokolla
SSH-autentikoinnin kättelyprosessissa muodostetaan ensin salattu kanava, jonka sisällä asiakas autentikoi itsensä lähettämällä allekirjotetun paketin (kun autentikointi tehdään publickey-menetelmällä): arxiv.org/html/2312.12422v1/x1.png (Ulkoinen linkki)
Tämä tarkoittaa mainitun algoritmin osalta seuraavaa:
- Autentikointitavoista ainakin publickey on haavoittuva.
- Jos yhteyden asiakaspuoli on käyttänyt vain password-autentikointia, niin silloin haavoittuvuutta ei voi hyödyntää, koska tällöin asiakas lähettää vain salasanansa salattua kanavaa pitkin eikä mitään allekirjoiteta.
- On siis mahdollista että yksityinen avain vuotaa, jos käytetään yhdistettynä molempia, sekä publickey- että password-autentikointitapoja.
- password-autentikoinnin käyttö publickey-tavan lisänä estää pelkällä vuotaneella avaimella kirjautumisen järjestelmään, mutta tällaisessa yhteydessä asiakas silti lähettää heikkoja allekirjoituksia vastapäähän.
Avattu lyhenne KTK = Kyberturvallisuuskeskus
Lisätty linkki NVD:een