Vulnerabilidade no patch GSSAPI para OpenSSH, explorável remotamente antes da autenticação

No patch utilizado em muitas distribuições Linux, gssapi.patch, que adiciona suporte à troca de chaves baseado em GSSAPI no OpenSSH, foi encontrada uma vulnerabilidade (CVE-2026-3497), levando ao desreferenciamento de ponteiro, corrupção de memória e comprometimento do mecanismo de separação de privilégios (Privsep). A vulnerabilidade pode ser explorada remotamente na fase anterior à autenticação. O pesquisador que identificou o problema demonstrou a possibilidade de causar a falha do processo ao enviar um único pacote de rede modificado para o servidor SSH. Não se pode descartar que, além da negação de serviço, existam opções mais perigosas de exploração da vulnerabilidade.

É notável que, em seu tempo, os desenvolvedores do OpenSSH se recusaram a incluir a modificação para suporte ao GSSAPI devido a dúvidas sobre sua segurança. Entretanto, muitas distribuições Linux incluíram este patch em seus pacotes com OpenSSH. Existem várias versões do patch GSSAPI em circulação, mas a maioria contém um erro que leva à vulnerabilidade. A correção está disponível apenas na forma de patch, que consiste na substituição da chamada da função sshpkt_disconnect() por ssh_packet_disconnect() no arquivo kexgsss.c.

Atualmente, a presença da vulnerabilidade foi confirmada no Debian e no Ubuntu. Em outras distribuições, a aplicação do patch problemático e sua vulnerabilidade estão sendo verificadas (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). A vulnerabilidade só se manifesta quando a opção "GSSAPIKeyExchange yes" está habilitada nas configurações. A possibilidade de exploração também depende das opções de compilador com as quais o pacote foi construído nas distribuições.

A causa da vulnerabilidade é um erro na função sshpkt_disconnect(), que impediu que o processo fosse encerrado após a recepção da mensagem de desconexão, permitindo que um atacante, na fase de negociação de chaves, enviasse um tipo de mensagem GSSAPI não previsto pela lógica do sistema. servidor Após a recepção de uma mensagem GSSAPI fora do planejado, servidor coloca-o na fila e não interrompe a execução do programa, mas não inicializa as variáveis que definem os parâmetros de conexão. Posteriormente, em um loop de processamento de eventos, é executado um código que lê a estrutura não inicializada recv_tok da pilha (dados deixados na pilha da chamada anterior da função), envia-a para um processo privilegiado via IPC e depois a passa para a função gss_release_buffer(), que pode chamar a função free() e liberar a memória para um ponteiro inválido que aponta para uma área aleatória da memória.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster