Vulnerabilità in PuTTY che consente il ripristino della chiave privata di un utente

PuTTY, un popolare client SSH sulla piattaforma Windows, presenta una pericolosa vulnerabilità (CVE-2024-31497) che consente di ricreare la chiave privata dell'utente utilizzando l'algoritmo NIST P-521 Elliptic Curve ECDSA (ecdsa-sha2-nistp521). Per selezionare una chiave privata è sufficiente analizzare circa 60 firme digitali generate dalla chiave problematica.

La vulnerabilità appare a partire dalla versione PuTTY 0.68 e colpisce anche i prodotti che includono versioni vulnerabili di PuTTY, ad esempio FileZilla (3.24.1 - 3.66.5), WinSCP (5.9.5 - 6.3.2), TortoiseGit (2.4.0.2 - 2.15.0) e TortoiseSVN (1.10.0 - 1.14.6). Il problema è stato risolto negli aggiornamenti PuTTY 0.81, FileZilla 3.67.0, WinSCP 6.3.3 e TortoiseGit 2.15.0.1. Dopo aver installato l'aggiornamento, si consiglia agli utenti di generare nuove chiavi e rimuovere le vecchie chiavi pubbliche dai file Authorized_keys.

La vulnerabilità è causata dalla disattenzione degli sviluppatori, che hanno utilizzato un vettore di inizializzazione (nonce) basato su una sequenza casuale di 521 bit per generare una chiave di 512 bit, probabilmente credendo che sarebbe bastata l'entropia di 512 bit e che i restanti 9 bit non sono di fondamentale importanza. Di conseguenza, in tutte le chiavi private create in PuTTY utilizzando l'algoritmo ecdsa-sha2-nistp521, i primi 9 bit del vettore di inizializzazione hanno sempre assunto valori zero.

Per ECDSA e DSA, la qualità del generatore di numeri pseudocasuali e la completa copertura del parametro utilizzato nel calcolo del modulo da parte dei dati casuali è di fondamentale importanza, poiché è sufficiente la determinazione anche di pochi bit con informazioni sul vettore di inizializzazione per portare sferrare un attacco per recuperare in sequenza l'intera chiave privata. Per recuperare con successo una chiave è sufficiente possedere una chiave pubblica e analizzare diverse decine di firme digitali generate utilizzando la chiave problematica per i dati noti all'aggressore. L'attacco si riduce alla risoluzione del problema HNP (Hidden Number Problem).

Le firme digitali necessarie possono essere ottenute ad esempio quando l'utente si collega al server SSH dell'aggressore o ad un server Git che utilizza SSH come mezzo di trasporto. Le firme richieste per l'attacco possono anche essere scoperte se la chiave è stata utilizzata per verificare dati arbitrari, ad esempio, git commit quando si utilizza l'agente Pageant SSH per reindirizzare il traffico all'host dello sviluppatore. Ottenere i dati necessari per recuperare la chiave durante un attacco MITM è impossibile, poiché le firme in SSH non vengono trasmesse in chiaro.

Si noti che un uso simile di vettori di inizializzazione incompleta è stato utilizzato in PuTTY per altri tipi di curve ellittiche, ma per algoritmi diversi da ECDSA P-521, le fughe di informazioni risultanti non sono sufficienti per implementare un attacco di recupero della chiave funzionante. Le chiavi ECDSA di altre dimensioni e le chiavi Ed25519 non sono suscettibili agli attacchi.

Fonte: opennet.ru

Aggiungi un commento