HIGH🇬🇧 English

CVE-2026-66034

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

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

Biblioteka libssh2 w wersjach do 1.11.1 włącznie zawiera podatność braku weryfikacji granic bufora w podsystemie publickey, umożliwiającą złośliwemu serwerowi SSH wywołanie odczytu sterty poza zakresem o dowolnej długości oraz zwolnienia niezainicjowanego wskaźnika. Podatność jest groźna, ponieważ pozwala na obejście mechanizmu ASLR oraz na uszkodzenie stanu alokatora sterty po stronie klienta.

Pokaż oryginał (EN)

libssh2 through 1.11.1, fixed in commit a13bb6c, contains a missing bounds check vulnerability that allows a malicious SSH server to trigger an arbitrary-length heap out-of-bounds read and a free of an uninitialized pointer via the publickey subsystem. In libssh2_publickey_list_fetch(), the version 1 response parser reads a server-controlled comment_len value and advances the parse pointer without verifying sufficient bytes remain in the buffer, causing the out-of-bounds read to leak heap pointers from adjacent allocations defeating ASLR, followed by heap allocator state corruption when the error cleanup path frees an uninitialized pointer from a non-zeroed realloc() region.

🤖 Analiza AI
Jak działa

W funkcji `libssh2_publickey_list_fetch()` parser odpowiedzi w wersji 1 protokołu odczytuje kontrolowaną przez serwer wartość `comment_len`, a następnie przesuwa wskaźnik parsowania bez sprawdzenia, czy w buforze pozostaje wystarczająca liczba bajtów. Powoduje to heap out-of-bounds read, który może ujawnić wskaźniki sterty z sąsiednich alokacji, skutecznie omijając ASLR. W ścieżce obsługi błędu dochodzi następnie do wywołania free() na niezainicjowanym wskaźniku pochodzącym z regionu przydzielonego przez `realloc()` bez wyzerowania pamięci (CWE-125, CWE-908), co prowadzi do uszkodzenia wewnętrznego stanu alokatora sterty.

Skutki

Atakujący kontrolujący złośliwy serwer SSH może doprowadzić do wycieku zawartości sterty klienta (w tym wskaźników umożliwiających obejście ASLR) oraz do uszkodzenia stanu alokatora sterty, co może skutkować destabilizacją lub przejęciem kontroli nad procesem klienta.

Mitygacja

Należy zaktualizować libssh2 do wersji zawierającej commit a13bb6c (https://github.com/libssh2/libssh2/commit/a13bb6c773f0d55ad1628cede57e99803cd898d9) lub zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu aktualizacji należy unikać łączenia się z niezaufanymi serwerami SSH przy użyciu funkcjonalności podsystemu publickey.

Kogo dotyczy

Libssh2 w wersjach do 1.11.1 włącznie; problem naprawiony w commicie a13bb6c.

Uwagi

Podatność dotyczy wyłącznie scenariusza, w którym klient libssh2 łączy się ze złośliwym serwerem SSH korzystającym z podsystemu publickey. Poprawka dostępna jest w repozytorium GitHub projektu libssh2 (commit a13bb6c).

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-66035HIGH7.7PL ✓ten sam produkt

Libssh2 — pre-auth heap buffer overflow w negocjacji ETM