SSH: chiavi private a rischio furto per via di un errore di calcolo

Un gruppo di ricercatori ha dimostrato che le chiavi private SSH possono essere esposte a causa di errori computazionali che si verificano occasionalmente durante il processo di firma, al momento dell'impostazione di una connessione.

SSH (Secure Shell) è un protocollo di rete che consente di stabilire una connessione sicura e crittografata tra due dispositivi, consentendo l’accesso a un sistema remoto e la sua gestione a distanza. L’utilizzo di SSH è fondamentale per la sicurezza delle comunicazioni su reti non sicure, com’è appunto la rete Internet. Quando ci si connette a un server utilizzando SSH, la comunicazione tra il client e il server (e viceversa) risulta cifrata, impedendo a terzi di intercettare il traffico.

L’utilizzo del protocollo SSH è essenziale, ad esempio, per l’amministrazione di server Linux nonché per accedere a sistemi cloud, al file system di un ampio ventaglio di dispositivi di rete come router, access point, NAS, dispositivi per l’Internet delle Cose (IoT) e così via.

Come funziona una connessione SSH

Ogni connessione SSH basa il suo funzionamento su un processo di scambio di chiavi crittografiche, autenticazione e crittografia. Il processo di “firma” al momento dell’instaurazione di una connessione SSH è un passo fondamentale che coinvolge l’uso di pubbliche e private.

Il client e il server devono avere ciascuno una coppia di chiavi crittografiche: il client mantiene segreta la sua chiave privata, mentre la chiave pubblica è condivisa con il server. L’approccio è esattamente quello su cui si basa la crittografia asimmetrica. Il server, a sua volta, dispone di una lista di chiavi pubbliche autorizzate per gli utenti validi. Se la chiave pubblica è valida, il server accetta la richiesta di connessione.

Una volta stabilita la connessione iniziale, il client e il server devono confermare reciprocamente la loro identità per prevenire attacchi di tipo “man-in-the-middle“. A tal fine, il client genera una firma utilizzando la sua chiave privata e la invia al server.

Il server utilizza la chiave pubblica del client, già in suo possesso, per verificare la firma inviata. Se la verifica ha esito positivo, il server può essere certo che la richiesta proviene dal client autentico che possiede la chiave privata corrispondente alla chiave pubblica fornita.

Le chiavi private SSH possono essere rubate quando si verifica un errore di calcolo

Un gruppo di ricercatori ha scoperto una vulnerabilità critica nella gestione delle chiavi crittografiche usate a protezione delle connessioni SSH. Una parte significativa delle chiavi private può essere compromessa a causa di errori computazionali durante l’impostazione della connessione.

Come spiegato nel documento tecnico dal titolo Passive SSH Key Compromise via Lattices, i ricercatori sono riusciti a derivare le chiavi private utilizzate per accedere a risorse pubblicamente esposte sulla rete Internet tramite SSH. La vulnerabilità in questione colpisce solo le chiavi che utilizzano l’algoritmo crittografico RSA.

Circa un terzo delle firme SSH esaminate dagli studiosi, e raccolte in circa 7 anni di attività, utilizzano RSA: 1 miliardo di firme su 3,2 miliardi totali. Di queste, circa un milione espone la chiave privata dell’host autorizzato a stabilire una connessione.

Certo, è un numero piccolo. Tuttavia, non può non suonare come un campanello d’allarme. In precedenza, infatti, si pensava che gli errori di firma esponessero solo le chiavi RSA utilizzate con il protocollo TLS (Transport Layer Security), usato per crittografare il traffico Web e email. Si riteneva invece che il traffico SSH fosse immune da tali attacchi, poiché gli attaccanti passivi non potevano vedere alcune informazioni indispensabili.

I ricercatori hanno invece messo in evidenza che è di fatto possibile recuperare passivamente una chiave RSA da una firma difettosa anche con i protocolli SSH e IPsec. Sì, anche le connessioni VPN basate su IPsec possono quindi essere vulnerabili. In tutti i casi un aggressore può impersonare un altro utente e stabilire connessioni facendone le veci.

Quale sono le soluzioni al problema descritto

Le cause esatte delle problematiche che possono portare agli errori computazionali, a loro volta responsabili dell’esposizione delle chiavi private, non sono ben comprese. Sembrano tuttavia legate a difetti negli acceleratori crittografici e a problemi hardware. La risoluzione di queste problematiche appare piuttosto complessa e le eventuali contromisure sono limitate alle versioni più recenti del firmware dei vari dispositivi e applicazioni.

I ricercatori sottolineano l’importanza di difese multiple nelle implementazioni crittografiche e la necessità di progettare protocolli più robusti contro gli errori computazionali. L’articolo evidenzia anche che attacchi simili potrebbero colpire le chiavi segrete utilizzate negli algoritmi post-quantistici.

È comunque importante installare e usare sempre i firmware più recenti così come le versioni più aggiornate del software che supporta SSH. È inoltre bene servirsi di strumenti di monitoraggio del traffico SSH per individuare eventuali firme difettose e attività sospette. L’attento monitoraggio dei log di accesso aiuta a rispondere prontamente a eventuali segnali di allarme.

La limitazione dei privilegi riveste poi un ruolo essenziale: i diritti degli account legati alle varie chiavi SSH dovrebbero essere ridotti al minimo in modo tale da ridurre la potenziale superficie di attacco.

La sicurezza informatica è un processo continuo: la consapevolezza delle minacce e l’adozione di pratiche di sicurezza migliorate sono fondamentali per mantenere un ambiente sicuro.

Credit immagine in apertura: iStock.com/Just_Super

Ti consigliamo anche

Link copiato negli appunti