В версиях libssh2–1.11.1, исправленных в коммите a13bb6c, содержится уязвимость проверки отсутствующих границ, которая позволяет злонамеренному SSH-серверу инициировать чтение за пределами кучи произвольной длины и освобождать неинициализированный указатель через подсистему открытого ключа. В libssh2_publickey_list_fetch() синтаксический анализатор ответа версии 1 считывает управляемое сервером значение comment_len и продвигает указатель синтаксического анализа, не проверяя, что в буфере осталось достаточно байтов, что приводит к утечке указателей кучи из смежных выделений при чтении за пределами границ, что приводит к поражению ASLR, после чего происходит повреждение состояния распределителя кучи, когда путь очистки ошибок освобождает неинициализированный указатель из ненулевой области realloc().
Показать оригинальное описание (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.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Libssh2 Libssh2
cpe:2.3:a:libssh2:libssh2:*:*:*:*:*:*:*:*
|
— |
<= 1.11.1
|