В версиях libssh2–1.11.1, исправленных в коммите 42e33d8, содержится уязвимость переполнения буфера кучи перед аутентификацией, которая позволяет злонамеренному SSH-серверу искажать метаданные кучи в любом подключающемся клиенте, отправляя пакет с package_length меньшим, чем размер блока шифра, во время согласования шифрования с последующим шифрованием MAC. В функции fullpacket() в src/transport.c путь ETM выделяет буфер байтов package_length, но копирует размер блока минус один байт через memcpy, вызывая переполнение, которое в 32-битной glibc записывает байты, контролируемые злоумышленником, в поле SIZE соседнего чанка, что приводит к путанице в буфере tcache, перекрытию живых объектов и перезаписи указателя функции во время установления связи сеанса перед аутентификацией.
Показать оригинальное описание (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.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Libssh2 Libssh2
cpe:2.3:a:libssh2:libssh2:*:*:*:*:*:*:*:*
|
— |
<= 1.11.1
|