HIGH🇬🇧 English

CVE-2026-66035

Libssh2 — pre-auth heap buffer overflow w negocjacji ETM

CVSS 7.7v4.0pub. 2026-07-24upd. 2026-07-30

Biblioteka libssh2 do wersji 1.11.1 zawiera podatność heap buffer overflow, która może być wykorzystana przez złośliwy serwer SSH jeszcze przed uwierzytelnieniem klienta. Atakujący kontrolujący serwer SSH może doprowadzić do uszkodzenia pamięci sterty w procesie klienta i przejęcia nad nim kontroli.

Pokaż oryginał (EN)

libssh2 through 1.11.1, fixed in commit 42e33d8, contains a pre-authentication heap buffer overflow vulnerability that allows a malicious SSH server to corrupt heap metadata in any connecting client by sending a packet with a packet_length smaller than the cipher's block size during Encrypt-then-MAC cipher negotiation. In the fullpacket() function in src/transport.c, the ETM path allocates a buffer of packet_length bytes but copies blocksize minus one bytes via memcpy, causing an overflow that on 32-bit glibc writes attacker-controlled bytes into an adjacent chunk's SIZE field, enabling tcache bin confusion, overlapping live objects, and function pointer overwrite during the session handshake before authentication.

🤖 Analiza AI
Jak działa

Podczas negocjacji szyfru w trybie Encrypt-then-MAC (ETM) złośliwy serwer SSH wysyła pakiet, w którym pole packet_length jest mniejsze niż rozmiar bloku szyfru (blocksize). W funkcji fullpacket() w pliku src/transport.c ścieżka ETM alokuje bufor o rozmiarze packet_length bajtów, lecz następnie kopiuje przez memcpy wartość blocksize minus jeden bajtów — tym samym zapisując dane poza granicą bufora. Na systemach 32-bitowych z biblioteką glibc nadpisuje to pole SIZE sąsiedniego fragmentu sterty bajtami kontrolowanymi przez atakującego, co umożliwia manipulację strukturami tcache bin, nakładanie się aktywnych obiektów w pamięci oraz nadpisanie wskaźnika funkcji. Cały atak przebiega w fazie handshake, zanim dojdzie do uwierzytelnienia.

Skutki

Atakujący kontrolujący serwer SSH może doprowadzić do wykonania dowolnego kodu (RCE) w procesie klienta łączącego się przez libssh2, potencjalnie uzyskując pełną kontrolę nad jego kontekstem wykonania.

Mitygacja

Należy zaktualizować libssh2 do wersji zawierającej commit 42e33d81577ed4b95d4b4f6f845e5ee8efe5eeb4 (dostępny w repozytorium GitHub libssh2). Do czasu aktualizacji zaleca się ograniczenie łączenia się klientów opartych na libssh2 wyłącznie do zaufanych serwerów SSH.

Kogo dotyczy

Libssh2 we wszystkich wersjach do 1.11.1 włącznie; podatność naprawiona w commicie 42e33d8

Uwagi

Podatność dotyczy wyłącznie ścieżki Encrypt-then-MAC (ETM) podczas negocjacji szyfru. Szczególnie narażone są systemy 32-bitowe z glibc, gdzie mechanizm tcache bin confusion umożliwia zapis atakujących bajtów do metadanych sterty.

CVSS Vector
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
  • Libssh2

    APP
    Libssh2
    ≤ 1.11.1
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Memory
CWE
Referencje

Powiązane podatności

CVE-2026-55200CRITICAL9.2PL ✓ten sam produkt

Zapis poza granicami bufora w libssh2 — RCE przez SSH

CVE-2019-3859CRITICAL9.1PL ✓ten sam produkt

Out-of-bounds read w libssh2 — DoS i wyciek pamięci klienta

CVE-2026-66033HIGH8.7PL ✓ten sam produkt

Libssh2: integer underflow przed uwierzytelnieniem prowadzący do crash klienta

CVE-2026-66032HIGH8.7PL ✓ten sam produkt

Double-free w libssh2 sftp_open() umożliwia uszkodzenie sterty klienta

CVE-2026-66034HIGH7.7PL ✓ten sam produkt

Libssh2: heap out-of-bounds read i free niezainicjowanego wskaźnika w podsystemie publickey