HIGH🇬🇧 English

CVE-2026-66032

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

CVSS 8.7v4.0pub. 2026-07-24upd. 2026-08-07

Biblioteka libssh2 w wersjach do 1.11.1 włącznie zawiera podatność typu double-free w funkcji sftp_open(), która pozwala złośliwemu serwerowi SSH na uszkodzenie sterty (heap) uwierzytelnionego klienta. Podatność może zostać wykorzystana do przejęcia kontroli nad procesem klienta poprzez nadpisanie wskaźników funkcji.

Pokaż oryginał (EN)

libssh2 through 1.11.1, fixed in commit 5e47761, contains a double-free vulnerability in the sftp_open() function in src/sftp.c that allows a malicious SSH server to corrupt the heap of any authenticated client opening an SFTP session. When a server responds to SSH_FXP_OPEN with SSH_FXP_STATUS containing FX_OK, the response data buffer is freed, and if a subsequent sftp_packet_require() call returns a specific error such as LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED, the same pointer is freed a second time, enabling tcache dup conditions on glibc systems that allow overlapping allocations and function pointer overwrites.

🤖 Analiza AI
Jak działa

Podatność występuje w funkcji sftp_open() w pliku src/sftp.c. Gdy serwer SSH odpowiada na żądanie SSH_FXP_OPEN komunikatem SSH_FXP_STATUS zawierającym kod FX_OK, bufor danych odpowiedzi jest zwalniany. Jeśli następnie wywołanie sftp_packet_require() zwróci określony błąd, taki jak LIBSSH2_ERROR_CHANNEL_PACKET_EXCEEDED, ten sam wskaźnik jest zwalniany po raz drugi. Na systemach z glibc prowadzi to do warunków tcache dup, umożliwiając nakładające się alokacje (overlapping allocations) i nadpisanie wskaźników funkcji.

Skutki

Atakujący kontrolujący złośliwy serwer SSH może spowodować uszkodzenie sterty procesu klienckiego, co w konsekwencji może doprowadzić do wykonania dowolnego kodu (RCE) w kontekście aplikacji korzystającej z biblioteki libssh2.

Mitygacja

Należy zaktualizować libssh2 do wersji zawierającej poprawkę wprowadzoną w commicie 5e4776146552d898b9c0e1b313cd093fa8dc92d0. Szczegóły dostępne w referencjach producenta (GitHub PR #2180). Jako obejście tymczasowe należy unikać nawiązywania sesji SFTP z niezaufanymi serwerami SSH.

Kogo dotyczy

libssh2 w wersjach do 1.11.1 włącznie; błąd naprawiony w commicie 5e47761

Uwagi

Poprawka dostępna jako commit 5e4776146552d898b9c0e1b313cd093fa8dc92d0 w repozytorium libssh2 na GitHub. Podatność wymaga, aby atakujący kontrolował serwer SSH, z którym łączy się klient — nie jest możliwe jej wykorzystanie bez interakcji użytkownika (wymaga nawiązania sesji SFTP).

CVSS Vector
CVSS:4.0/AV:N/AC:L/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.
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-66034HIGH7.7PL ✓ten sam produkt

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

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

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

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

Libssh2 — pre-auth heap buffer overflow w negocjacji ETM