Etusivu: Kyberturvallisuuskeskus
Etusivu: Kyberturvallisuuskeskus
Valikko

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 (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:

  1. käytössä haavoittuva ohjelmisto
  2. ohjelmiston käyttämä avain käyttää haavoittuvaa algoritmia ja käyrää
  3. 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.

  

Haavoittuva avaintyyppi on PuTTYgen-ohjelmassa valittavana nimellä nistp521
Kuva: haavoittuva avaintyyppi on PuTTYgen-ohjelmassa valittavana nimellä nistp521.

Avattu lyhenne KTK = Kyberturvallisuuskeskus

Lisätty linkki NVD:een