En gruppe forskere fra Ruhr-universitetet i Bochum (Tyskland) har præsenteret en ny MITM-angrebsteknik på SSH — Terrapin, der udnytter en sårbarhed (CVE-2023-48795) i protokollen. En angriber, der er i stand til at udføre et MITM-angreb, har mulighed for at blokere sende meddelelser om protokoludvidelsesindstillinger under forbindelsebehandlingen, hvilket sænker sikkerhedsniveauet for forbindelsen. En prototype af værktøjet til angrebet er offentliggjort på GitHub.
I konteksten af OpenSSH muliggør sårbarheden for eksempel tilbagevenden til brug af mindre sikre autentifikationsalgoritmer og deaktivering af beskyttelse mod angreb via sidekanaler, der genskaber input ved at analysere forsinkelser mellem tasteangreb på tastaturet. I Python-biblioteket AsyncSSH i kombination med sårbarheden (CVE-2023-46446) i implementeringen af den interne tilstandsmaskine tillader angrebet Terrapin indtrængen i et SSH-session.
Sårbarheden påvirker alle SSH-implementeringer, der understøtter ChaCha20-Poly1305 eller cipher i CBC-tilstand kombineret med ETM-tilstand (Encrypt-then-MAC). For eksempel har sådanne muligheder været tilgængelige i OpenSSH i over 10 år. Sårbarheden er rettet i den nuværende udgave af OpenSSH 9.6 samt i opdateringer af PuTTY 0.80, libssh 0.10.6/0.9.8 og AsyncSSH 2.14.2. I Dropbear SSH er rettelsen allerede tilføjet til koden, men der er endnu ikke udgivet en ny version.
Sårbarheden skyldes, at en angriber, der kontrollerer forbindelsestrafikken (for eksempel ejeren af et ondsindet trådløst hotspot), kan justere sekvensnumrene på pakkerne under forbindelsebehandlingen og opnå usynlig fjernelse af et vilkårligt antal service SSH-meddelelser, der sendes af klienten eller serveren. Blandt andet kan angriberen fjerne SSH_MSG_EXT_INFO-meddelelserne, der bruges til at konfigurere de anvendte protokoludvidelser. For at forhindre, at den anden part opdager tabet af en pakke som følge af brud i sekvensnumrene, initierer angriberen sending af en falsk pakke med det samme sekvensnummer som den fjernede pakke. Den falske pakke indeholder en meddelelse med flaget SSH_MSG_IGNORE, som ignoreres ved behandling.

Angrebet kan ikke udføres ved brug af stream cipher og CTR, da en integritetsbrud vil blive afsløret på applikationsniveau. I praksis er kun ChaCha20-Poly1305 cipher (chacha20-poly1305@openssh.com) sårbar, hvor tilstanden kun spores via sekvensnumre, og kombinationen af Encrypt-Then-MAC (*-etm@openssh.com) og CBC-cipher.
I OpenSSH 9.6 og andre implementeringer er der tilføjet en protokoludvidelse kaldet "strict KEX", som automatisk aktiveres, hvis der er støtte på klientens side. server Udvidelsen afslutter forbindelsen ved modtagelse af nogen usædvanlige eller overflødige meddelelser (f.eks. med flaget SSH_MSG_IGNORE eller SSH2_MSG_DEBUG), der modtages under forhandlingen af forbindelsen, samt nulstiller MAC (Message Authentication Code) tælleren efter hver nøgleudveksling.
Kilde: opennet.ru
