
CVE-2018-10933 - Bypass de Autenticação do libssh
Implementação de Prova-de-Conceito para CVE-2018-10933, uma vulnerabilidade crítica de bypass de autenticação que afeta a implementação do lado do servidor do libssh.
Aviso Legal
Este repositório é fornecido exclusivamente para fins educacionais, pesquisa de vulnerabilidades e testes de segurança autorizados. Nunca teste sistemas sem permissão explícita.
CVE-2018-10933 é uma vulnerabilidade crítica de bypass de autenticação descoberta na máquina de estados do lado do servidor do libssh.
Ao contrário das falhas tradicionais de autenticação que envolvem senhas fracas ou fraquezas criptográficas, esta vulnerabilidade existe porque o servidor confia incorretamente em uma mensagem de protocolo que deveria ser enviada apenas do servidor para o cliente.
Um atacante pode, portanto, convencer um servidor libssh vulnerável de que a autenticação já foi concluída com sucesso sem fornecer nenhuma credencial.
Isso permite que um atacante não autenticado estabeleça uma sessão SSH autenticada contra aplicações vulneráveis que usam libssh no modo servidor.
| Campo | Valor |
|---|
| CVE | CVE-2018-10933 |
| Severidade | Crítica |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (Autenticação Incorreta) |
| Vetor de Ataque | Rede |
| Interação do Usuário | Nenhum |
| Privilégios Necessários | Nenhum |
A vulnerabilidade afeta o libssh em execução no modo servidor.
As versões afetadas incluem:
Aplicações que usam libssh apenas como cliente SSH não são vulneráveis.
A vulnerabilidade origina-se da máquina de estados de autenticação implementada no código do servidor libssh.
Durante um fluxo normal de autenticação SSH:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
O protocolo especifica que SSH_MSG_USERAUTH_SUCCESS é gerado apenas pelo servidor após a autenticação bem-sucedida.
No entanto, versões vulneráveis do libssh não conseguem validar corretamente a origem desta mensagem.
Em vez de rejeitar um SSH_MSG_USERAUTH_SUCCESS fornecido pelo cliente, o servidor transita incorretamente seu estado interno de autenticação diretamente para:
Authenticated = TRUE
sem nunca verificar as credenciais.
Este é um exemplo clássico de Autenticação Incorreta (CWE-287).
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
A exploração bem-sucedida permite que um atacante não autenticado:
O impacto real depende de como a aplicação vulnerável usa o libssh após a autenticação.
A vulnerabilidade existe porque a máquina de estados de autenticação aceita incorretamente o pacote:
SSH2_MSG_USERAUTH_SUCCESS
do cliente.
Em vez de verificar que o pacote se originou do servidor, o libssh atualiza seu estado interno de sessão como se a autenticação tivesse sido concluída com sucesso.
Como as verificações de autorização posteriores dependem desse estado interno, os atacantes podem abrir imediatamente canais autenticados.
Esta vulnerabilidade não explora:
Em vez disso, ela explora uma falha lógica no tratamento do estado do protocolo.
O atacante precisa de:
Não é necessário:
Indicadores potenciais incluem:
Assinaturas de IDS de rede também podem identificar pacotes anômalos SSH2_MSG_USERAUTH_SUCCESS enviados por clientes.
Atualize o libssh para uma das versões corrigidas:
Se a atualização não for imediatamente possível:
Não existe nenhuma solução alternativa confiável além de atualizar o software afetado.
Este repositório demonstra como vulnerabilidades na máquina de estados de autenticação podem surgir de erros na implementação de protocolos.
Ele é destinado a auxiliar:
A Prova-de-Conceito incluída ilustra a vulnerabilidade em ambientes controlados para melhorar a compreensão da implementação segura de protocolos.