Foi lançado o OpenSSH 10.0, uma implementação aberta do cliente e servidor para trabalhar com os protocolos SSH 2.0 e SFTP. As principais mudanças:
- O suporte a assinaturas digitais baseadas no algoritmo DSA foi removido, pois seu nível de segurança não atende aos requisitos modernos. Os custos para continuar a manutenção do algoritmo DSA, que é considerado inseguro, não se justificam, e sua remoção permitirá estimular a interrupção do suporte ao DSA em outras implementações do SSH e bibliotecas criptográficas. O uso de chaves DSA foi descontinuado por padrão desde 2015.
- O sshd continua a ser dividido em vários arquivos executáveis separados. No OpenSSH 9.8, o processo sshd foi destacado como sshd-session, que trata tarefas relacionadas à manipulação de sessões. No OpenSSH 10.0, o código que executa a autenticação foi movido do sshd-session para um processo separado chamado sshd-auth. O processo sshd-auth permite isolar ainda mais os dados relacionados à autenticação no espaço de endereço de um processo separado, o que impede o acesso a esses dados na memória durante ataques ao código utilizado para processar as etapas de conexão até a conclusão da autenticação. Além disso, essa mudança reduz ligeiramente o consumo de memória, uma vez que o código relacionado à autenticação agora permanece na memória apenas durante a autenticação e é descarregado ao final do processo sshd-auth.
- No ssh, um algoritmo híbrido de troca de chaves "mlkem768x25519-sha256" é utilizado por padrão, resistente a ataques de computadores quânticos, e é uma combinação do X25519 ECDH e do algoritmo ML-KEM (CRYSTALS-Kyber), padronizados pelo Instituto Nacional de Padrões e Tecnologia dos EUA (NIST). O ML-KEM utiliza métodos criptográficos baseados na solução de problemas da teoria das redes, onde o tempo de resolução não difere entre computadores comuns e quânticos.
- No ssh_config, as diretivas SetEnv e User receberam suporte para substituições "%-token" e a expansão de variáveis de ambiente.
- No ssh_config e sshd_config, foi adicionado suporte para a expressão "Match version", que permite aplicar configurações dependendo da versão do OpenSSH, por exemplo, para vincular ao OpenSSH 10 pode-se especificar "Match version OpenSSH_10.*".
- No ssh_config, o suporte para expressões foi adicionado:
- «Match sessiontype», que permite aplicar configurações com base no tipo de sessão solicitado: «shell» para sessões interativas, «exec» para executar comandos, «subsystem» para sftp e «none» para túneis e redirecionamento de tráfego.
- «Match command» para vincular ações a comandos especificados na linha de comando para serem executados via ssh.
- ‘Match tagged «»‘ e ‘Match command «»‘ para vincular a tags vazias e iniciar ssh sem especificar um comando a ser executado.
- No sshd_config, o uso de máscaras em caminhos de arquivos, especificados nas diretivas AuthorizedKeysFile e AuthorizedPrincipalsFile, é permitido.
- No cliente ssh, foi adicionada a opção «VersionAddendum» para adicionar texto arbitrário à linha do número da versão (anteriormente, essa opção estava disponível apenas para servidor sshd).
- Nas ferramentas scp e sftp, foi garantida a transmissão da configuração «ControlMaster no» para proibir o uso de conexões existentes ao reconectar-se ao host.
- No sshd, o suporte para a implementação do algoritmo Diffie-Hellman em campo finito foi desativado por padrão, resultando na remoção da lista KEXAlgorithms dos métodos «diffie-hellman-group*» e «diffie-hellman-group-exchange-*». Em comparação com o algoritmo Diffie-Hellman baseado em curvas elípticas, a implementação remota é mais lenta e exige recursos computacionais adicionais com o mesmo nível de segurança.
- No ssh, na escolha do algoritmo de criptografia para a conexão, o modo AES-GCM agora é mais preferível do que o AES-CTR. A lista de prioridades ao escolher algoritmos de criptografia é definida por padrão: Chacha20/Poly1305, AES-GCM (128/256) e AES-CTR (128/192/256).
- No ssh-agent, a remoção de todas as chaves carregadas é implementada ao receber o sinal SIGUSR1.
- No ssh-keygen, foi adicionada a compatibilidade com tokens FIDO que não retornam dados de atestação, como WinHello.
- No ssh-agent, foi adicionada a opção «-Owebsafe-allow=…» para sobrescrever a lista de permissões de aplicativos FIDO.
- Uma ferramenta experimental regress/misc/ssh-verify-attestation foi adicionada para verificar dados de atestação FIDO, opcionalmente gerados pelo ssh-keygen ao registrar chaves FIDO.
- No ssh-keygen, é permitido usar «-» em vez do nome do arquivo.
- No ssh-agent e na versão portátil do OpenSSH, foi adicionada a compatibilidade com a ativação por socket no estilo systemd, implementada usando o mecanismo LISTEN_PID/LISTEN_FDS.
- Na versão portátil:
- Foi implementado o suporte à biblioteca criptográfica AWS-LC (AWS libcrypto).
- No sshd, foi adicionada a compatibilidade com wtmpdb, um equivalente ao wtmp que não é afetado pelo problema de 2038.
- Foi adicionada a opção "—with-linux-memlock-onfault" ao sshd para fixar o sshd na memória (proibindo a troca para a partição de swap).
- Adicionada a opção "—with-security-key-standalone" para a construção de uma biblioteca isolada sk-libfido2.
- As configurações de compilação para RHEL 6 foram removidas da especificação do pacote RPM.
- Mudança no sshd relacionada à segurança: a diretiva DisableForwarding não impedia adequadamente o redirecionamento do protocolo X11 e das solicitações ao ssh-agent. O redirecionamento X11 está desativado por padrão do lado do servidor, enquanto o redirecionamento do ssh-agent está no lado do cliente.
Fonte: opennet.ru
