Een groep onderzoekers van de Ruhr-Universiteit Bochum (Duitsland) heeft een nieuwe MITM-aanvalstechniek op SSH gepresenteerd: Terrapin, die een kwetsbaarheid (CVE-2023-48795) in het protocol benut. Een aanvaller die in staat is een MITM-aanval uit te voeren, kan tijdens het onderhandelingsproces de verzending van een bericht met instellingen voor protocoluitbreidingen blokkeren, waardoor het beveiligingsniveau van de verbinding wordt verlaagd. Een prototype van de aanvalstool is gepubliceerd op GitHub.
In de context van OpenSSH stelt de kwetsbaarheid bijvoorbeeld in staat om de verbinding terug te zetten naar minder veilige authenticatie-algoritmen en om bescherming tegen aanvallen via externe kanalen uit te schakelen, die het invoer reproduceren door vertragingen tussen toetsaanslagen op het toetsenbord te analyseren. In de Python-bibliotheek AsyncSSH, in combinatie met de kwetsbaarheid (CVE-2023-46446) in de implementatie van de interne toestandsmachine, stelt de Terrapin-aanval mogelijk om in een SSH-sessie te infiltreren.
De kwetsbaarheid beïnvloedt alle SSH-implementaties die ChaCha20-Poly1305 of ciphers in CBC-modus ondersteunen in combinatie met de ETM-modus (Encrypt-then-MAC). Dergelijke mogelijkheden zijn al meer dan 10 jaar beschikbaar in OpenSSH. De kwetsbaarheid is verholpen in de huidige release van OpenSSH 9.6, evenals in updates van PuTTY 0.80, libssh 0.10.6/0.9.8 en AsyncSSH 2.14.2. In Dropbear SSH is het probleem al in de code verholpen, maar er is nog geen nieuwe release aangemaakt.
De kwetsbaarheid wordt veroorzaakt doordat een aanvaller die het verkeer van de verbinding controleert (bijvoorbeeld de eigenaar van een kwaadaardige draadloze toegangspunt) de volgordes van de pakketten kan aanpassen tijdens het onderhandelingsproces en op onopvallende wijze een willekeurig aantal SSH-beheersberichten kan verwijderen die door de klant zijn verzonden of server. Onder andere kan de aanvaller SSH_MSG_EXT_INFO-berichten verwijderen die worden gebruikt voor de configuratie van de toegepaste protocoluitbreidingen. Om ervoor te zorgen dat de andere partij de verdwijning van een pakket niet opmerkt door onderbrekingen in de volgordes, initieert de aanvaller de verzending van een nep-pakket met hetzelfde volgnummer als het verwijderde pakket. Het nep-pakket bevat een bericht met de vlag SSH_MSG_IGNORE, dat wordt genegeerd bij de verwerking.

Een aanval kan niet worden uitgevoerd bij het gebruik van stream cipher en CTR, omdat integriteitschending op applicatieniveau zal worden ontdekt. In de praktijk is alleen de cipher ChaCha20-Poly1305 (chacha20-poly1305@openssh.com) kwetsbaar, waarbij de status alleen wordt bijgehouden op basis van de volgorde van berichtnummers, en de combinatie van de Encrypt-Then-MAC modus (*-etm@openssh.com) en CBC-ciphers.
In OpenSSH 9.6 en andere implementaties is er een uitbreiding van het protocol 'strict KEX' geïmplementeerd om aanvallen te blokkeren, die automatisch wordt ingeschakeld wanneer er ondersteuning aan de kant van de de server de client is. De uitbreiding beëindigt de verbinding bij ontvangst van enige ongebruikelijke of overbodige berichten (bijvoorbeeld met de vlag SSH_MSG_IGNORE of SSH2_MSG_DEBUG), ontvangen tijdens het onderhandelen van de verbinding, en reset de MAC (Message Authentication Code) teller na elke sleuteluitwisseling.
Bron: opennet.ru
