Un recente studio accademico ha dimostrato come sia possibile, per un attaccante, intercettare le connessioni SSH di alcuni dispositivi e, con una certa fortuna, impersonare tali dispositivi dopo aver scoperto in segreto le chiavi RSA private degli host. Questo tipo di attacco, noto come “man-in-the-middle”, consente all’attaccante di osservare silenziosamente i dettagli di accesso degli utenti e di monitorare le loro attività con i server SSH remoti. SSH è comunemente utilizzato per accedere a un dispositivo e controllarlo tramite un’interfaccia a riga di comando, anche se esistono altri usi.
Le chiavi RSA private dell’host possono essere ottenute sorvegliando passivamente le connessioni dai client al server SSH di un dispositivo vulnerabile: errori computazionali accidentali o naturali durante la generazione della firma possono essere osservati e sfruttati per calcolare la chiave privata del server SSH, idealmente segreta.
Gli errori naturali si riferiscono a quelli causati da raggi cosmici e altri piccoli guasti che alterano i bit, mentre gli errori accidentali sono dovuti a algoritmi di generazione della firma RSA implementati in modo scadente. Si potrebbe pensare che i primi siano così rari da non essere sfruttabili realisticamente e che i secondi sarebbero già noti, ma si assicura che monitorando abbastanza connessioni SSH verso un server SSH vulnerabile, si finirà per vedere una connessione che si può sfruttare.
È importante sottolineare che le librerie software OpenSSL e LibreSSL, e quindi OpenSSH, non sono conosciute per essere vulnerabili a questo metodo di deduzione della chiave. Ciò significa, secondo la nostra opinione, che la grande maggioranza dei dispositivi, server e altre apparecchiature su Internet non sono a rischio, e ciò che rimane sono alcuni dispositivi Internet-of-Things e apparecchiature integrate simili suscettibili di attacco. Questo riguarda solo le chiavi RSA.
Lo studio è stato condotto da Keegan Ryan, Kaiwen He, George Arnold Sullivan e Nadia Heninger dell’Università della California, San Diego (Kaiwen He è anche al MIT). La tecnica utilizzata dal team per discernere le chiavi RSA private deriva dalla ricerca TLS-smashing di Florian Weimer nel 2015 e dai lavori del 2022 di alcuni degli autori del documento di San Diego, oltre a ricerche che risalgono agli anni ’90.
Thomas Ptacek, un esperto di Infosec, ha condiviso un riassunto del documento sulla chiave RSA qui, per una spiegazione facile da comprendere della questione. Un ringraziamento va anche a Dan Goodin, ex giornalista di Register, che ha segnalato il documento tramite Ars Technica.
Quando un client si connette a un server SSH vulnerabile, durante le loro negoziazioni per stabilire comunicazioni sicure e criptate, il server genera una firma digitale che il client verifica per assicurarsi di parlare con il server che si aspetta.
Questa generazione della firma può essere interrotta casualmente o accidentalmente, come descritto sopra, in modo che algoritmi intelligenti possano dedurre dalla firma errata la chiave RSA privata del server, utilizzata nella generazione della firma. Una contromisura è assicurarsi che la firma sia corretta prima di emetterla al client; OpenSSL e LibreSSL già fanno questo.
Gli autori dello studio hanno affermato:
Dimostriamo che un attaccante passivo può ottenere opportunisticamente chiavi RSA private dell’host da un server SSH che subisce un errore naturale durante il calcolo della firma. In precedenza, si credeva che ciò non fosse possibile per il protocollo SSH perché la firma includeva informazioni come il segreto condiviso Diffie-Hellman che non sarebbe disponibile a un osservatore di rete passivo. Mostriamo che per i parametri di firma comunemente utilizzati per SSH, esiste un attacco efficiente a griglia per recuperare la chiave privata in caso di errore di firma. Forniamo un’analisi della sicurezza dei protocolli SSH, IKEv1 e IKEv2 in questo scenario e utilizziamo il nostro attacco per scoprire centinaia di chiavi compromesse nel mondo da diverse implementazioni vulnerabili indipendentemente.
Un avversario passivo può monitorare silenziosamente le connessioni legittime senza rischiare di essere rilevato fino a quando osserva una firma errata che espone la chiave privata. L’attaccante può poi impersonare attivamente e in modo non rilevabile l’host compromesso per intercettare dati sensibili.
I ricercatori hanno affermato di aver esaminato Internet e di aver esaminato i dati di scansione SSH precedentemente raccolti per misurare la prevalenza di firme vulnerabili, e hanno dichiarato che il loro dataset di circa 5,2 miliardi di record SSH, che coprono più di sette anni di osservazioni, conteneva più di 590.000 firme RSA invalidi.
Utilizzando la loro tecnica di recupero delle chiavi reticolare gli accademici hanno affermato che più di 4.900 di quelle firme difettose hanno rivelato la fattorizzazione della corrispondente chiave pubblica RSA, che hanno utilizzato per derivare le chiavi RSA private per 189 di quelle chiavi pubbliche.
Durante la loro ricerca, gli autori hanno scoperto quattro produttori i cui prodotti erano vulnerabili a questo tipo di indagine sulle chiavi: Cisco, Zyxel, Hillstone Networks e Mocana. I ricercatori hanno divulgato il problema a Cisco e Zyxel, e notano che entrambi i fornitori “hanno indagato prontamente”.
Cisco ha determinato che il suo software ASA e FTD ha risolto il problema nel 2022 e, prima della pubblicazione del documento, “stava indagando su mitigazioni” per il software IOS e IOS XE.
Nel frattempo, Zyxel ha concluso che il difetto riguardava solo il suo firmware end-of-life e che a quel punto aveva iniziato a utilizzare l’OpenSSL non vulnerabile. I ricercatori affermano di non essere riusciti a contattare Hillstone Networks e Mocana e hanno invece sottoposto il problema al CERT Coordination Center.
Si dice anche che un’implementazione del server SSH che si dichiara come “SSH-2.0-SSHD” sia vulnerabile, e ciò potrebbe essere utilizzato da alcune applicazioni Java di livello aziendale. Poiché la tecnica di deduzione delle chiavi ruota attorno a PKCSv1.5, anche DNSSEC che utilizza firme PKCSv1.5-RSA potrebbe essere a rischio.
Hanno anche notato che il set di dati delle firme nelle connessioni IPsec non era abbastanza grande per concludere se questo protocollo sia vulnerabile a una simile perdita di chiavi: “Data la rarità dei difetti di firma vulnerabili, non siamo in grado di concludere molto sulle implementazioni IPsec dai nostri dati e riteniamo che questa domanda meriti ulteriori studi.”