Un gruppo di ricercatori dell'Università di Bochum (Germania) ha presentato una nuova tecnica di attacco MITM su SSH — Terrapin, che sfrutta una vulnerabilità (CVE-2023-48795) nel protocollo. Un attaccante in grado di eseguire un attacco MITM può bloccare l'invio del messaggio di configurazione delle estensioni del protocollo durante il processo di negoziazione della connessione, riducendo così il livello di sicurezza della connessione. Un prototipo dello strumento per effettuare l'attacco è stato pubblicato su GitHub.
Nel contesto di OpenSSH, la vulnerabilità consente, ad esempio, di ripristinare la connessione per utilizzare algoritmi di autenticazione meno sicuri e disabilitare le protezioni contro gli attacchi tramite canali laterali, che ricreano l'input analizzando i ritardi tra la pressione dei tasti sulla tastiera. Nella libreria Python AsyncSSH, insieme alla vulnerabilità (CVE-2023-46446) nell'implementazione della macchina a stati interna, l'attacco Terrapin consente di infiltrarsi in una sessione SSH.
La vulnerabilità colpisce tutte le implementazioni di SSH che supportano ChaCha20-Poly1305 o cifrari in modalità CBC insieme alla modalità ETM (Encrypt-then-MAC). Ad esempio, tali funzionalità sono disponibili in OpenSSH da oltre 10 anni. La vulnerabilità è stata bloccata nella versione attuale di OpenSSH 9.6, nonché negli aggiornamenti di PuTTY 0.80, libssh 0.10.6/0.9.8 e AsyncSSH 2.14.2. In Dropbear SSH, la correzione è già stata aggiunta al codice, ma una nuova versione non è ancora stata rilasciata.
La vulnerabilità è causata dal fatto che un attaccante, che controlla il traffico di connessione (ad esempio, il proprietario di un punto di accesso wireless malevolo), può modificare i numeri di sequenza dei pacchetti durante il processo di negoziazione della connessione e ottenere così la rimozione invisibile di un numero arbitrario di messaggi SSH di servizio inviati dal client o server. Tra l'altro, un attaccante può eliminare i messaggi SSH_MSG_EXT_INFO, utilizzati per configurare le estensioni del protocollo applicate. Affinché l'altra parte non rilevi la perdita del pacchetto a causa di un'interruzione nei numeri di sequenza, l'attaccante avvia l'invio di un pacchetto fasullo con lo stesso numero di sequenza del pacchetto rimosso. Il pacchetto fasullo contiene un messaggio con il flag SSH_MSG_IGNORE, che viene ignorato durante l'elaborazione.

L'attacco non può essere eseguito utilizzando cifratori a flusso e CTR, poiché la violazione dell'integrità verrebbe rilevata a livello applicativo. Nella pratica, solo il cifratore ChaCha20-Poly1305 (chacha20-poly1305@openssh.com) è vulnerabile all'attacco, in quanto lo stato è tracciato solo in base ai numeri di sequenza dei messaggi, insieme alla configurazione del modo Encrypt-Then-MAC (*-etm@openssh.com) e ai cifratori CBC.
In OpenSSH 9.6 e in altre implementazioni, per bloccare l'attacco è stata implementata un'estensione del protocollo chiamata 'strict KEX', che si attiva automaticamente se supportata dal lato opposto. server e del cliente. L'estensione termina la connessione se vengono ricevuti messaggi anomali o superflui (ad esempio, con il flag SSH_MSG_IGNORE o SSH2_MSG_DEBUG) durante il processo di negoziazione della connessione, e azzera il contatore MAC (Message Authentication Code) dopo ogni scambio di chiavi.
Fonte: opennet.ru
