OpenSSH 9.2 lançado com correção para vulnerabilidade de pré-autenticação

Foi publicado o lançamento do OpenSSH 9.2, uma implementação aberta de cliente e servidor para trabalhar utilizando os protocolos SSH 2.0 e SFTP. A nova versão elimina uma vulnerabilidade que leva à dupla liberação de memória na fase de pré-autenticação. Somente a versão OpenSSH 9.1 é afetada; o problema não aparece em versões anteriores.

Para criar condições para a manifestação da vulnerabilidade, basta alterar o banner do cliente SSH para “SSH-2.0-FuTTYSH_9.1p1” para definir os flags “SSH_BUG_CURVE25519PAD” e “SSH_OLD_DHGEX”, que dependem da versão do SSH cliente. Depois de definir esses sinalizadores, a memória do buffer “options.kex_algorithms” é liberada duas vezes - ao executar a função do_ssh2_kex(), que chama compat_kex_proposal(), e ao executar a função do_authentication2(), que chama input_userauth_request(), mm_getpwnamallow( ), copy_set_server_options() ao longo da cadeia, assemble_algorithms() e kex_assemble_names().

A criação de uma exploração funcional para a vulnerabilidade é considerada improvável, uma vez que o processo de exploração é muito complicado - bibliotecas modernas de alocação de memória fornecem proteção contra liberação dupla de memória, e o processo de pré-autenticação no qual o erro está presente é executado com privilégios reduzidos de forma isolada. ambiente de área restrita.

Além da vulnerabilidade apontada, a nova versão também corrige mais dois problemas de segurança:

  • Ocorreu um erro ao processar a configuração "PermitRemoteOpen", fazendo com que o primeiro argumento fosse ignorado caso fosse diferente dos valores "any" e "none". O problema aparece em versões mais recentes que o OpenSSH 8.7 e faz com que a verificação seja ignorada quando apenas uma permissão é especificada.
  • Um invasor que controla o servidor DNS usado para resolver nomes pode conseguir a substituição de caracteres especiais (por exemplo, “*”) em arquivos conhecidos_hosts se as opções CanonicalizeHostname e CanonicalizePermittedCNAMEs estiverem habilitadas na configuração e o resolvedor do sistema não verificar a exatidão de respostas do servidor DNS. O ataque é considerado improvável porque os nomes retornados devem corresponder às condições especificadas por CanonicalizePermittedCNAMEs.

Outras mudanças:

  • Uma configuração EnableEscapeCommandline foi adicionada ao ssh_config para ssh para controlar se o processamento do lado do cliente da sequência de escape "~C" que fornece a linha de comando está habilitado. Por padrão, o manuseio de "~C" agora está desabilitado para usar um isolamento de sandbox mais rígido, potencialmente quebrando sistemas que usam "~C" para encaminhamento de porta em tempo de execução.
  • A diretiva ChannelTimeout foi adicionada ao sshd_config para sshd para definir o tempo limite de inatividade do canal (canais nos quais nenhum tráfego é registrado durante o tempo especificado na diretiva serão fechados automaticamente). Diferentes tempos limite podem ser definidos para sessão, X11, agente e redirecionamento de tráfego.
  • A diretiva UnusedConnectionTimeout foi adicionada ao sshd_config para sshd, permitindo definir um tempo limite para encerrar conexões de clientes que ficaram sem canais ativos por um determinado tempo.
  • A opção “-V” foi adicionada ao sshd para exibir a versão, semelhante à opção semelhante no cliente ssh.
  • Adicionada a linha "Host" à saída de "ssh -G", refletindo o valor do argumento hostname.
  • A opção "-X" foi adicionada ao scp e ao sftp para controlar os parâmetros do protocolo SFTP, como o tamanho do buffer de cópia e o número de solicitações pendentes.
  • ssh-keyscan permite a varredura de intervalos completos de endereços CIDR, por exemplo "ssh-keyscan 192.168.0.0/24".

Fonte: opennet.ru

Adicionar um comentário