В SSH клиентите OpenSSH и PuTTY ( в PuTTY и в OpenSSH), което води до изтичане на информация в алгоритъма за договаряне на връзката. Уязвимостта позволява на атакуващия, способен да прихване трафика на клиента (например, при свързване на потребителя чрез контролирана от атакуващия точка за безжичен достъп), да определи опита за първоначално свързване на клиента с хоста, когато клиентът все още не е кеширал ключа на хоста.
Знаейки, че клиентът се опитва да се свърже за първи път и все още няма ключа на хоста на своя страна, атакуващият може да транслира връзката през себе си (MITM) и да предаде на клиента своя ключ на хоста, който SSH клиентът ще приеме за ключ на целевия хост, ако не извърши проверка на пръстовия отпечатък на ключа. Така атакуващият може да организира MITM, без да предизвика подозрение у потребителя, и да игнорира сесиите, в които клиентът вече има кеширани ключове на хостове, опитът за подмяна на които ще доведе до показване на предупреждение за промяна на ключа на хоста. Атаката се основава на небрежността на потребителите, които не извършват ръчна проверка на пръстовия отпечатък на ключа на хоста при първото свързване. Тези, които проверяват пръстовите отпечатъци на ключовете, са защитени от подобни атаки.
Като признак за определяне на първия опит за свързване се използва промяна в реда на изброяване на поддържаните алгоритми на хостовите ключове. При първо свързване клиентът предава списък с алгоритми по подразбиране, а ако ключът на хоста вече е в кеша, свързаният с него алгоритъм се поставя на първо място (алгоритмите се подреждат в реда на предпочитание).
Проблемата се проявява в версиите на OpenSSH от 5.7 до 8.3 и в PuTTY от 0.68 до 0.73. Проблемата в версията чрез добавяне на опция за деактивиране на динамичното съставяне на списъка с алгоритми за обработка на хостови ключове в полза на изброяването на алгоритмите в постоянен ред.
Проект OpenSSH не планира да променя поведението на SSH клиента, тъй като, ако не зададете алгоритъм на наличния ключ на първо място, ще се опита да се приложи несъответстващ на кеширания ключ алгоритъм с предупреждение за неизвестен ключ. Т.е. възниква избор - или изтичане на информация (OpenSSH и PuTTY), или показване на предупреждения за смяна на ключа (Dropbear SSH), в случай че запазеният ключ не съответства на първия алгоритъм в списъка по подразбиране.
За осигуряване на защита в OpenSSH се предлага да се използват алтернативни методи за проверка на ключа на хоста чрез записи SSHFP в DNSSEC и сертификати на хоста (PKI). Също така можете да деактивирате адаптивния избор на алгоритми за ключове на хостовете чрез опцията HostKeyAlgorithms и да използвате опцията UpdateHostKeys, за да получите допълнителни ключове на хоста след аутентикация.
Източник: opennet.ru
