Исследователи сообщают о серьезной уязвимости в OpenSSH, которая позволяет удаленному злоумышленнику определить, есть ли на атакуемом сервере определенный пользователь (username enumeration).
О проблеме безопасности сообщили эксперты Дариуш Титко и Михал Сайдак.
Исследователи так описывают брешь:
«Мы обнаружили, что удаленный атакующий может вычислить, существует ли определенный пользователь на целевом сервере OpenSSH».
static int
userauth_pubkey(struct ssh *ssh)
{
...
if (!authctxt->valid) {
debug2("%s: disabled because of invalid user", __func__);
return 0;
}
if ((r = sshpkt_get_u8(ssh, &have_sig)) != 0 ||
(r = sshpkt_get_cstring(ssh, &pkalg, NULL)) != 0 ||
(r = sshpkt_get_string(ssh, &pkblob, &blen)) != 0)
fatal("%s: parse request failed: %s", __func__, ssh_err(r));
Помимо этого, злоумышленник может попытаться аутентифицировать пользователя с помощью специально созданного вредоносного пакета.
На данный момент брешь не имеет CVE-идентификатора, и исследователи убеждены, что ей должны его присвоить.
«Мы считаем, что этой уязвимости нужно дать идентификатор CVE, она затрагивает все существующий версии OpenSSH (мы протестировали вплоть до OpenSSH 2.3.0, выпущенной в ноябре 2000 года)».
Специалисты опубликовали POC-код на GitHub. Они обеспокоены тем, что об уязвимости уже публично известно, а патча все еще нет. Это подвергает многих пользователей риску.