Skupina raziskovalcev z Univerze v Bochumu (Nemčija) je predstavila novo tehniko MITM napada na SSH – Terrapin, ki izkorišča ranljivost (CVE-2023-48795) v protokolu. Napadalec, ki lahko izvede MITM napad, ima možnost v procesu dogovarjanja povezave blokirati pošiljanje sporočila o nastavitvi razširitev protokola za zmanjšanje ravni zaščite povezave. Prototip orodja za izvedbo napada je objavljen na GitHubu.
V kontekstu OpenSSH ranljivost na primer omogoča vrnitev povezave na uporabo manj zaščitenih algoritmov avtentikacije in onemogočanje zaščite pred napadi prek stranskih kanalov, ki ponovno ustvarjajo vnos z analizo zakasnitev med pritiskom tipk na tipkovnici. V Python knjižnici AsyncSSH v kombinaciji z ranljivostjo (CVE-2023-46446) v implementaciji notranjega končnega avtomata (internal state machine) napad Terrapin omogoča vmešavanje v SSH sejo.
Ranljivost prizadene vse implementacije SSH, ki podpirajo ChaCha20-Poly1305 ali šifre v načinu CBC v kombinaciji z načinom ETM (Encrypt-then-MAC). Na primer, take možnosti so v OpenSSH na voljo že več kot 10 let. Ranljivost je bila blokirana v današnji izdaji OpenSSH 9.6, pa tudi v posodobitvah PuTTY 0.80, libssh 0.10.6/0.9.8 in AsyncSSH 2.14.2. V Dropbear SSH je popravilo že dodano v kodo, vendar nova izdaja še ni bila oblikovana.
Ranljivost izhaja iz dejstva, da lahko napadalec, ki nadzoruje promet povezave (na primer lastnik zlonamerne brezžične točke), prilagodi zaporedne številke paketov v procesu dogovarjanja povezave in tako neopaženo odstrani poljubno število servisnih SSH sporočil, poslanih s strani odjemalca ali serverom. Med drugim lahko napadalec odstrani sporočila SSH_MSG_EXT_INFO, ki se uporabljajo za nastavitev uporabljenih razširitev protokola. Da druga stran ne bi ugotovila izgube paketa zaradi razlike v zaporednih številkah, napadalec za premik zaporedne številke sproži pošiljanje lažnega paketa z enako zaporedno številko kot izgubljeni paket. Lažni paket vsebuje sporočilo z zastavico SSH_MSG_IGNORE, ki se pri obdelavi ignorira.

Napad ni mogoče izvesti pri uporabi tokovnih šifriranj in CTR, saj bo kršitev celovitosti zaznana na ravni aplikacije. V praksi so napadljive le šifre ChaCha20-Poly1305 (chacha20-poly1305@openssh.com), pri katerih se stanje spremlja le po zaporednih številkah sporočil, in povezava načina Encrypt-Then-MAC (*-etm@openssh.com) ter šifri CBC.
V OpenSSH 9.6 in drugih implementacijah je za blokiranje napada uvedena razširitev protokola "strict KEX", ki se samodejno vklopi, če je podpora na strani strežnika in odjemalca. Razširitev zaključi povezavo ob prejemu kakršnih koli nenavadnih ali odvečnih sporočil (na primer z zastavico SSH_MSG_IGNORE ali SSH2_MSG_DEBUG), prejetih v procesu dogovarjanja povezave, ter ponastavi števec MAC (koda za preverjanje pristnosti sporočil) po zaključku vsake izmenjave ključev.
Izvor: opennet.ru
