Уязвимость в libssh, приводящая к переполнению буфера

В библиотеке libssh (не путать с libssh2), предназначенной для добавления клиентской и серверной поддержки протокола SSHv2 в программы на языке Си, выявлена уязвимость (CVE-2021-3634), приводящая к переполнению буфера при инициировании процесса смены ключа (rekey) с использованием механизма обмена ключами, применяющего другой алгоритм хэширования. Проблема устранена в выпуске 0.9.6.

Суть проблемы в том, что операция смены ключа допускает применение криптографических хэшей с размером слепка, отличающимся от первоначально использованного алгоритма. При этом память для хэша в libssh выделялась исходя из первоначального размера хэша и использование хэша большего размера приводит к перезаписи данных за границей выделенного буфера. В качестве запасного метода защиты можно ограничить список поддерживаемых методов обмена ключами только алгоритмами с одинаковым размером хэша. Например, для привязки к SHA256 в код можно добавить:

Release. Ссылка here.