Un grup de cercetători de la Universitatea Ruhr din Bochum (Germania) a prezentat o nouă tehnică de atac MITM asupra SSH — Terrapin, care exploatează o vulnerabilitate (CVE-2023-48795) în protocol. Atacatorul, capabil să organizeze un atac MITM, poate bloca trimiterea unui mesaj cu setările extensiilor protocolului pe parcursul negocierii conexiunii pentru a reduce nivelul de protecție al acesteia. Prototipul uneltelor pentru realizarea atacului a fost publicat pe GitHub.
În contextul OpenSSH, vulnerabilitatea, de exemplu, permite revenirea la utilizarea unor algoritmi de autentificare mai puțin securizați și dezactivarea protecției împotriva atacurilor prin canale externe, care reproduc intrarea prin analiza întârzierilor dintre apăsările de taste de pe tastatură. În biblioteca Python AsyncSSH, împreună cu vulnerabilitatea (CVE-2023-46446) în implementarea mașinii de stări interioare (internal state machine), atacul Terrapin permite infiltrarea în sesiunea SSH.
Vulnerabilitatea afectează toate implementările SSH care suportă ChaCha20-Poly1305 sau cifrele în modul CBC împreună cu modul ETM (Encrypt-then-MAC). De exemplu, astfel de capacități sunt disponibile în OpenSSH de peste 10 ani. Vulnerabilitatea a fost blocată în versiunea de astăzi a OpenSSH 9.6, precum și în actualizările PuTTY 0.80, libssh 0.10.6/0.9.8 și AsyncSSH 2.14.2. În Dropbear SSH, corecția a fost deja adăugată în cod, dar o nouă versiune nu a fost încă generată.
Vulnerabilitatea este cauzată de faptul că un atacator, care controlează traficul conexiunii (de exemplu, proprietarul unui hotspot wireless malițios), poate ajusta numerele de ordine ale pachetelor în timpul negocierii conexiunii și poate realiza eliminarea invizibilă a unui număr arbitrar de mesaje SSH de control trimise de client sau serverul. Printre altele, atacatorul poate șterge mesajele SSH_MSG_EXT_INFO, care sunt utilizate pentru configurarea extensiilor protocolului aplicate. Pentru a împiedica cealaltă parte să detecteze dispariția unui pachet din cauza rupturii numerelor de ordine, atacatorul inițiază trimiterea unui pachet fals cu același număr de ordine ca cel al pachetului eliminat. Pachetul fals conține un mesaj cu flag-ul SSH_MSG_IGNORE, care este ignorat în timpul procesării.

Atacarea nu poate fi realizată în cazul utilizării cifrurilor de flux și CTR, deoarece o încălcare a integrității va fi detectată la nivel de aplicație. În practică, atacul este vulnerabil doar pentru cifra ChaCha20-Poly1305 (chacha20-poly1305@openssh.com), unde starea este urmărită doar prin numerele de ordine ale mesajelor, și combinația din modul Encrypt-Then-MAC (*-etm@openssh.com) și cifrurile CBC.
În OpenSSH 9.6 și alte implementări, pentru a bloca atacul, a fost implementată o extensie a protocolului „strict KEX”, care se activează automat atunci când este suportată de către server client. Extensia încheie conexiunea la primirea oricăror mesaje neobișnuite sau suplimentare (de exemplu, cu flag-ul SSH_MSG_IGNORE sau SSH2_MSG_DEBUG), primite în timpul negocierii conexiunii, și resetază contorul MAC (Message Authentication Code) după finalizarea fiecărui schimb de chei.
Sursa: opennet.ro
