Este disponibilă o versiune corectivă a OpenSSH 9.9p2, în care au fost remediate două vulnerabilități identificate de compania Qualys. A fost demonstrat un exemplu de utilizare a acestor vulnerabilități pentru a efectua un atac MITM, care permite redirecționarea traficului de la clientul SSH către un server fals, ocolind verificarea cheilor gazdelor și creând iluzia utilizatorului că se conectează la serverul dorit (clientul SSH va accepta cheia gazdelor serverului fals în loc de cheia serverului legitim).
Prima vulnerabilitate (CVE-2025-26465) este rezultatul unei erori logice în utilitarul ssh, care permite ocolirea verificării identității serverului și efectuarea unui atac MITM. Problema apare începând cu versiunea OpenSSH 6.8p1 (decembrie 2014) în configurații cu opțiunea VerifyHostKeyDNS activată. În versiunea de bază a OpenSSH, această opțiune este dezactivată în mod implicit, însă până în martie 2023 a fost activată în setările ssh pe FreeBSD.
Problema constă în faptul că în codul funcției verify_host_key_callback() la apelarea funcției verify_host_key() se verifică doar codul de eroare „-1”, iar alte coduri, cum ar fi „-2”, sunt ignorate. Drept urmare, funcția verify_host_key_callback() poate returna un cod de succes „0”, în ciuda returnării unei erori „-2” de către funcția verify_host_key(). Codul de eroare „-2” este returnat de funcția verify_host_key() în cazul unei lipsuri de memorie. Dacă sunt create condiții care să nu permită alocarea de memorie în funcția verify_host_key(), SSH va considera că cheia gazdelor a fost verificată cu succes. Pentru a crea astfel de condiții, serverul SSH al atacatorului, la care este redirecționat clientul, returnează cheia gazdelor cu dimensiunea maximă posibilă (256KB), exploatând simultan o scurgere de memorie pe partea clientului ssh.
Condițiile pentru crearea scurgerii de memorie sunt realizate datorită celei de-a doua vulnerabilități (CVE-2025-26466), care afectează atât clientul ssh, cât și serverul sshd, și utilizat fără autentificare. Vulnerabilitatea permite epuizarea memoriei disponibile procesului și crearea unei sarcini ridicate pe CPU prin trimiterea unui număr mare de pachete SSH2_MSG_PING. În procesorul de pachete SSH2_MSG_PING există o scurgere de memorie, care se manifestă începând cu versiunea OpenSSH 9.5p1 (august 2023). Scurgerea apare deoarece pentru fiecare pachet PING de 16 bytes primit se alocă un buffer de 256 bytes pentru a forma răspunsul, dar acest buffer este eliberat doar după finalizarea negocierii cheilor. Ca o soluție temporară de protecție, se propune configurarea limitărilor prin directivele LoginGraceTime, MaxStartups și PerSourcePenalties.
Sursa: opennet.ro
