Skupina výzkumníků z Rúrské univerzity v Bochumi (Německo) představila novou techniku MITM útoku na SSH — Terrapin, která využívá zranitelnost (CVE-2023-48795) v protokolu. Útočník schopný provést MITM útok má možnost při vyjednávání spojení zablokovat odeslání zprávy s nastavením rozšíření protokolu, což sníží úroveň ochrany spojení. Prototyp nástroje pro provedení útoku byl zveřejněn na GitHubu.
V kontextu OpenSSH zranitelnost například umožňuje přepnout spojení na použití méně zabezpečených autentizačních algoritmů a vypnout ochranu proti útokům prostřednictvím vedlejších kanálů, které reprodukují vstup pomocí analýzy zpoždění mezi stisknutím kláves. V Python knihovně AsyncSSH v kombinaci se zranitelností (CVE-2023-46446) v implementaci vnitřního automatického stroje (internal state machine) útok Terrapin umožňuje vetřít se do SSH sezení.
Zranitelnost zasahuje všechny implementace SSH, které podporují ChaCha20-Poly1305 nebo šifry v módu CBC ve spojení s módem ETM (Encrypt-then-MAC). Například tyto možnosti jsou v OpenSSH dostupné již více než 10 let. Zranitelnost byla blokována v dnešním vydání OpenSSH 9.6, stejně jako v aktualizacích PuTTY 0.80, libssh 0.10.6/0.9.8 a AsyncSSH 2.14.2. V Dropbear SSH byla oprava již přidána do kódu, ale nové vydání zatím nebylo sestaveno.
Zranitelnost je způsobena tím, že útočník, který kontroluje provoz spojení (například vlastník škodlivého bezdrátového přístupového bodu), může upravit pořadová čísla paketů během vyjednávání spojení a dosáhnout nenápadného odstranění libovolného počtu servisních SSH zpráv odeslaných klientem nebo serverem. Mimo jiné může útočník odstranit zprávy SSH_MSG_EXT_INFO, které se používají k nastavení aplikovaných rozšíření protokolu. Aby druhá strana neidentifikovala ztrátu paketu kvůli mezeře v pořadových číslech, útočník pro posun pořadového čísla iniciuje odeslání falešného paketu se stejným pořadovým číslem jako u odstraněného paketu. Falešný paket obsahuje zprávu s flagem SSH_MSG_IGNORE, která je ignorována při zpracování.

Útok nemůže být proveden při používání streamových šifrování a CTR, protože porušení integrity bude odhaleno na úrovni aplikace. Ve skutečnosti jsou ohroženy pouze šifry ChaCha20-Poly1305 (chacha20-poly1305@openssh.com), u kterých se stav sleduje pouze podle pořadových čísel zpráv, a spojení režimu Encrypt-Then-MAC (*-etm@openssh.com) a šifry CBC.
Ve verzi OpenSSH 9.6 a dalších implementacích bylo pro zablokování útoku implementováno rozšíření protokolu „strict KEX“, které se automaticky aktivuje, pokud je na straně serveru klienta. Toto rozšíření ukončuje spojení při přijetí jakýchkoli neobvyklých nebo nadbytečných zpráv (například s flagem SSH_MSG_IGNORE nebo SSH2_MSG_DEBUG), přijatých během vyjednávání spojení, a také resetuje počítač MAC (Message Authentication Code) po dokončení každé výměny klíčů.
Zdroj: opennet.ru
