SSH (Secure Shell) è un protocollo di rete che permette la comunicazione sicura e cifrata tra due sistemi. Le connessioni SSH sono spesso utilizzate per accedere da remoto a sistemi operativi GNU/Linux ma sono spesso impiegate per una vasta gamma di esigenze. Ad esempio, si utilizzano per gestire dispositivi hardware come apparati per il networking e prodotti per l’Internet delle Cose (IoT) servendosi della riga di comando.
Il protocollo SSH supporta diversi metodi di autenticazione per verificare l’identità dell’utente che cerca di accedere al sistema remoto. I metodi comuni includono l’autenticazione basata su password e l’autenticazione basata su chiave pubblica/privata. Già di recente abbiamo visto che le chiavi SSH private possono essere a rischio per via di un errore di calcolo.
L’attacco Terrapin è una nuova minaccia che sfrutta debolezze individuate in SSH a livello di trasporto dei pacchetti dati. Manipolando i cosiddetti sequence numbers durante il processo di handshake, un attaccante può compromettere l’integrità del canale SSH, soprattutto quando vengono utilizzate alcune modalità crittografiche (ChaCha20-Poly1305 oppure CBC with Encrypt-then-MAC).
Cos’è il processo di handshake in SSH
Il processo di handshake consiste in una serie di scambi di messaggi che avvengono all’inizio della connessione SSH: stabiliscono i parametri crittografici e le chiavi necessarie per proteggere le successive comunicazioni. I sequence numbers o numeri di sequenza sono utilizzati per numerare in modo univoco e ordinato i messaggi scambiati durante l’handshaking. Ogni messaggio ha associato un numero di sequenza che indica la sua posizione e il suo ordine nella serie dei scambi di messaggi tra client e server (e viceversa).
L’utilizzo dei numeri di sequenza contribuisce a proteggere la connessione da attacchi che potrebbero cercare di manipolare o intercettare i messaggi scambiati durante l’handshake. Se un messaggio è modificato in modo non autorizzato, la verifica del numero di sequenza rivela l’alterazione, contribuendo a rilevare un potenziale attacco.
Come funziona l’attacco Terrapin
Un gruppo di ricercatori della Ruhr University (Bochum, Germania) ha accertato che manipolando proprio i numeri di sequenza, diventa possibile compromettere il canale SSH. L’aggressione battezzata Terrapin riduce la sicurezza della connessione SSH facendo sì che importanti messaggi di negoziazione siano troncati senza che il client o il server se ne accorgano.
L’aggressione può comportare il downgrade degli algoritmi a chiave asimmetrica utilizzati per l’autenticazione dell’utente. Ciò significa che gli attaccanti possono indebolire la sicurezza della connessione SSH e disabilitare ulteriori difese.
L’ampia adozione delle modalità crittografiche menzionate in precedenza, rende l’attacco Terrapin fattibile in scenari reali. Gli attaccanti possono sfruttare queste debolezze su una vasta gamma di implementazioni SSH con un’aggressione la cui gravità, alla fine, dipende dai dati scambiati dopo il completamento della fase di handshake.
Molti sviluppatori stanno gradualmente adottando misure volte alla mitigazione del problema di sicurezza. Una soluzione consiste nell’utilizzo di uno scambio di chiavi rigoroso che renda impossibile l’iniezione di pacchetti durante l’handshake. Tuttavia, questa contromisura risulta efficace solo se implementata da entrambe le parti, client e server.
Il nome dell’attacco, Terrapin (tartaruga), si riferisce alla shell ovvero alla corazza che protegge le tartarughe. In termini informatici, una “shell” è l’interfaccia attraverso la quale gli utenti interagiscono con il sistema operativo: nel caso di specie, si fa riferimento alla shell SSH.
Se e quando gli amministratori di sistema devono risolvere il problema di sicurezza
Nella pagina dedicata alla descrizione dell’attacco, gli autori dello studio spiegano che Terrapin sfrutta debolezze nel protocollo di trasporto SSH in combinazione con algoritmi crittografici e modalità di crittografia più recenti introdotte con OpenSSH oltre 10 anni fa. I risultati della scansione condotta dagli esperti, mettono in evidenza che oltre il 77% dei server SSH su Internet supporta almeno una modalità vulnerabile.
L’attacco richiede un’aggressione MiTM (man-in-the-middle) attiva, rendendola complicata sulla rete Internet ma certamente possibile in rete locale. Per mettersi al sicuro, se non si volesse attendere la disponibilità di una patch correttiva, gli amministratori potrebbero temporaneamente disabilitare la negoziazione di ChaCha20-Poly1305 o di qualsiasi cifrario CBC in combinazione con Encrypt-then-MAC. La sostituzione con algoritmi non interessati dalla problematica, come AES-GCM, permette di evitare qualsiasi rischio.
Attenzione però perché una riconfigurazione approssimativa della connessione SSH potrebbe comportare la perdita dell’accesso al sistema server.
Lo scanner per verificare se client e server SSH sono vulnerabili
I ricercatori che hanno portato a galla Terrapin hanno sviluppato una semplice applicazione, scritta in Go, che funziona da riga di comando e può essere utilizzata per determinare se un server o client SSH è vulnerabile o meno.
Lo scanner si connette al server SSH (o ascolta una connessione client in ingresso) per rilevare se vengono offerte modalità crittografiche vulnerabili e se lo scambio di chiavi avviene in maniera corretta e rigorosa. L’applicazione non esegue una vera e propria procedura di handshake, né esegue il codice exploit dell’attacco.
L’immagine in apertura è stata generata utilizzando Image Creator (Microsoft Bing).