CVE-2024-45337
Uso indevido de connection.serverAuthenticate pode causar bypass de autorização em golang.org/x/crypto
- Publicado
- 11 de dez. de 2024
- Atualizado
- 18 de fev. de 2025
- Atribuindo CNA
- Go
- Evidência observada
- 8 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NBaixo · próximos 30 dias
- Percentil
- 87,5%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
Aplicações e bibliotecas que utilizam indevidamente o `connection.serverAuthenticate` (através do campo de callback `ServerConfig.PublicKeyCallback`) podem estar suscetíveis a uma bypass de autorização. A documentação para `ServerConfig.PublicKeyCallback` afirma que "uma chamada a esta função não garante que a chave oferecida seja de facto utilizada para autenticar." Especificamente, o protocolo SSH permite que os clientes consultem se uma chave pública é aceitável antes de provar o controlo da chave privada correspondente. O `PublicKeyCallback` pode ser chamado com múltiplas chaves, e a ordem pela qual as chaves foram fornecidas não pode ser utilizada para inferir com qual chave o cliente autenticou com sucesso, se é que autenticou com alguma. Algumas aplicações, que armazenam a(s) chave(s) passada(s) ao `PublicKeyCallback` (ou informação derivada) e tomam decisões relevantes para a segurança com base nisso assim que a ligação é estabelecida, podem fazer suposições incorretas. Por exemplo, um atacante pode enviar as chaves públicas A e B, e depois autenticar com A. O `PublicKeyCallback` seria chamado apenas duas vezes, primeiro com A e depois com B. Uma aplicação vulnerável pode então tomar decisões de autorização com base na chave B, para a qual o atacante não controla de facto a chave privada. Uma vez que esta API é amplamente utilizada indevidamente, como mitigação parcial, golang.org/x/[email protected] impõe a propriedade de que, ao autenticar com sucesso via chave pública, a última chave passada ao `ServerConfig.PublicKeyCallback` será a chave utilizada para autenticar a ligação. O `PublicKeyCallback` será agora chamado múltiplas vezes com a mesma chave, se necessário. Note que o cliente pode ainda assim não controlar a última chave passada ao `PublicKeyCallback` se a ligação for depois autenticada com um método diferente, como `PasswordCallback`, `KeyboardInteractiveCallback` ou `NoClientAuth`. Os utilizadores devem utilizar o campo `Extensions` do valor de retorno `Permissions` dos vários callbacks de autenticação para registar dados associados à tentativa de autenticação, em vez de referenciar estado externo. Assim que a ligação é estabelecida, o estado correspondente à tentativa de autenticação bem-sucedida pode ser recuperado através do campo `ServerConn.Permissions`. Note que algumas bibliotecas de terceiros utilizam indevidamente o tipo `Permissions` ao partilhá-lo entre tentativas de autenticação; os utilizadores de bibliotecas de terceiros devem consultar os projetos relevantes para orientação.
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.