Pular para o conteúdo
OpenSSH 10.4 lançado com correções de segurança e melhorias

OpenSSH 10.4 lançado com correções de segurança e melhorias

Nova versão do OpenSSH (10.4) traz correções de segurança críticas, suporte experimental a assinaturas pós-quânticas e diversas melhorias. Saiba o que mudou e como atualizar seu sistema.

O OpenSSH 10.4 foi lançado em 6 de julho de 2026, oferecendo uma série de correções de segurança, melhorias de usabilidade e recursos experimentais. A distribuição está disponível nos mirrors listados em https://www.openssh.com/ e o projeto agradece à comunidade por seus comentários, relatórios de bugs e contribuições.

Mudanças potencialmente incompatíveis

sshd(8) – Modo de despejo de configuração

O comando sshd -G agora escreve diretivas em mixed case (por exemplo, PubkeyAuthentication), diferentemente das versões anteriores que emitiam apenas nomes em lower‑case.

sshd(8) – Sandbox seccomp no Linux

Em sistemas Linux com o sandbox seccomp habilitado, falhas ao ativar SECCOMP ou NO_NEW_PRIVS agora são fatais. Anteriormente, o sshd registrava o erro, mas continuava operando, o que podia causar problemas em sistemas sem esses recursos. Sistemas sem suporte agora devem desabilitar o sandbox na configuração.

ssh(1), sshd(8) – Protocolo de transporte mais rigoroso

O protocolo agora desativa a conexão se o peer enviar mensagens não-KEX durante um reexame de chave pós-autenticação. Antes, um peer malicioso podia enviar mensagens não relacionadas ao intercambio de chaves indefinidamente, consumindo memória até que a conexão fosse encerrada ou um limite fosse atingido. Implementações que não restringem mensagens conforme RFC4253 §7.1 podem ser desconectadas. Relatório de Marko Jevtic.

Segurança

  • sftp(1) – Corrigido um problema que permitia a um servidor malicioso redirecionar downloads da linha de comando (sftp host:/path .) para um local inesperado. Identificado pelo Swival Security Scanner.

  • scp(1) – Impedido que um servidor malicioso escreva arquivos no diretório pai do destino pretendido ao copiar entre dois destinos remotos. Também detectado pelo Swival Security Scanner.

  • sshd(8) – No servidor SFTP interno (internal-sftp), linhas de comando longas eram truncadas silenciosamente após o 9º argumento. Opções de segurança relevantes na 10ª posição ou posterior eram descartadas. Relatório de Steve Caffrey.

  • sshd(8) – Adicionada nota na documentação informando que GSSAPIStrictAcceptorCheck não tem efeito quando o servidor está integrado a um Windows Active Directory. Reportado por Yarin Aharoni da Safebreach.

  • sshd(8) – A opção DisableForwarding=yes não substituía PermitTunnel=yes, conforme documentado. Note-se que PermitTunnel não está habilitado por padrão. Relatório independente de Huzaifa Sidhpurwala (Red Hat) e Marko Jevtic.

  • sshd(8) – Mitigada uma possível negação de serviço pré-autenticação quando GSSAPIAuthentication estava habilitado (desativado por padrão). O problema não era atenuado por MaxAuthTries, mas podia ser penalizado por PerSourcePenalties. Reportado por Manfred Kaiser do milCERT (Ministério da Defesa da Áustria).

  • sshd(8) – Corrigidos vários casos em que o atraso mínimo de autenticação não era aplicado. Reportado pela Orange Cyberdefense Vulnerability Team.

  • ssh(1) – Corrigido um possível use‑after‑free no cliente se o servidor alterasse sua chave durante um reexame de chave. Reportado por Zhenpeng (Leo) Lin da Depthfirst.

Novos recursos

  • Geral – Suporte experimental a um esquema de assinatura composto pós-quântico que combina ML‑DSA‑44 e Ed25519, conforme especificado no draft‑miller‑sshm‑mldsa44‑ed25519‑composite‑sigs. O recurso não está habilitado por padrão. Para usá-lo, adicione mldsa44‑ed25519 a HostKeyAlgorithms, PubkeyAcceptedAlgorithms, etc. Geração de chaves com ssh-keygen -t mldsa44-ed25519.

  • ssh(1), sshd(8) – Substituição do correspondente de padrões por uma implementação baseada em NFA, evitando comportamento exponencial no pior caso da versão anterior.

Correções de bugs

  • ssh‑agent(1) – Corrigida resposta incorreta a requisições SSH_AGENTC_EXTENSION do tipo “query”. (bz3967)

  • sshd(8) – Evitado envio de mensagens observavelmente diferentes para usuários válidos vs inválidos no contexto de GSSAPIAuthentication (desativado por padrão).

  • ssh(1), sshd(8) – Corrigidos vários bugs que classificados incorretamente tráfego em massa como interativo. (bz3972, bz3958)

  • ssh‑keygen(1), ssh‑add(1) – Ignorar tipos de chave não suportados ao baixar chaves residentes de um token FIDO. Anteriormente, o download era abortado ao encontrar um token desse tipo. (GHPR657)

  • ssh(1) – Corrigido um possível use‑after‑free em um caminho de erro se cipher_init() falha.

  • sshd(8) – Realizada codificação e validação mais rigorosas do estado de transporte entre subprocessos de separação de privilégios, endurecendo o servidor contra ataques a sshd‑auth ou sshd‑session.

  • ssh‑agent(1) – Evitado possível esgotamento de recursos em tempo de execução limitando o comprimento de nomes de usuário em restrições de uso de chaves.

  • sftp(1) – Corrigidos dois reads de um byte fora de limites separados, em SSH2_FXP_REALPATH e processamento de comandos em lote.

  • sftp‑server(8) – Impedido uso da extensão copy‑data para ler e gravar no mesmo inode simultaneamente.

  • ssh(1), sshd(8) – Evitado crash por strlen(NULL) se um canal X11 era criado antes que x11-req SSH_MSG_CHANNEL_REQUEST fosse enviado. (GHPR679)

  • sftp(1), scp(1) – Evitado situação em que sftp_download() poderia ficar em loop se um servidor defeituoso retornasse repetidamente comprimento zero ao ler um arquivo.

  • ssh(1) – Evitado vazamento de nomes DNS0x20 caso‑aleatórios para nomes canônicos usando CanonicalizePermittedCNAMEs. (bz3966)

  • sftp‑server(8) – Evitado truncamento de nomes de caminho passados para lstat() durante tratamento de SSH_FXP_REALPATH em sistemas onde PATH_MAX não é o valor real máximo. (GHPR688)

  • ssh(1), sshd(8) – Corrigido armamento incorreto de máscaras de evento de poll(2) para alguns canais do tipo socket. (GHPR660)

  • sshd(8) – Grande refatoração do código de análise e gerenciamento de sshd_config, permitindo serialização/deserialização mais precisa através de limites de separação de privilégios.

  • ssh‑add(1) – Conexão com o agente aberta apenas após processamento completo de getopt(), permitindo que opções como -v exibam informações de depuração sobre esta operação.

  • Código criptográfico – Corrigido bounds checking ao assinar mensagens maiores que o espaço em size_t. Em OpenSSH, tamanhos de mensagens são limitados por SSHBUF_SIZE_MAX, portanto isso era inalcançável.

  • Código criptográfico – Adicionadas verificações de maleabilidade de assinatura e validade de chave pública para ed25519. SSH não depende dessas propriedades.

  • Código criptográfico – Corrigido check de ordem ECDSA para curvas com cofator ≠ 1. Todas as curvas EC suportadas têm cofator 1, portanto isso era inalcançável.

  • sshd(8) – Diferenciado falhas de execução de um subsistema não encontrado ao registrar por que um subsistema falhou em iniciar. (GHPR637)

  • Geral – Usados idioms mais seguros para timegm(3) e mktime(3) detecção de erro.

  • ssh(1), sshd(8) – Evitado aceite de listas inválidas de cipher ou MAC em arquivos de configuração ou argumentos de linha de comando, o que poderia causar falhas em tempo de execução posteriormente.

  • ssh(1) – Corrigido crash por dereferenciação NULL durante autenticação por chave pública ao usar uma chave privada estilo PEM sem chave pública adjacente .pub.

  • sshd(8) – Não imprimir mensagem de erro ao tentar carregar uma chave privada de host quando chaves PKCS#11 estão em uso, pois essas não precisam da metade privada no sistema de arquivos. (GHPR664)

  • Geral – Não usar ERR_load_crypto_strings() obsoleto. (GHPR650)

  • ssh(1) – Reportar corretamente erros durante definição de padrões de configuração. (GHPR649)

  • ssh(1) – Usar nome de diretiva correto (Match em vez de Host) em mensagem de erro. (bz3968)

  • sftp(1) – Corrigido ls -ln que não mostrava corretamente UID/GIDs numéricos, mas nomes de usuário e grupo. (bz3953)

  • sshd(8) – Evitar possível dereferenciação NULL se uma alocação falha durante análise de configuração. (bz3948)

  • Geral – Corrigir proteções inefetivas contra carregamento de chaves públicas excessivamente grandes em vários locais. (bz3969, bz3970)

  • sftp(1) – Garantir que descritores de arquivo usados pelo sftp para se comunicar com seu subprocesso ssh(1) não vazem para subprocessos executados (por exemplo, via !). (GHPR693)

Portabilidade

  • Sincronizado fmt_scaled.c com upstream OpenBSD, incluindo correção de exatidão para expoentes grandes. (GHPR671)

  • sshd(8) – Removido item duplicado de sandbox para clock_gettime64.

  • ssh(1), sshd(8) – Usado valor correto de IPTOS_DSCP_VA se não fornecido pelos cabeçalhos do sistema.

  • Sincronizado getrrsetbyname.c com upstream OpenBSD, incluindo correções de robustez.

  • Desabilitados substitutos em openbsd-compat para strvisx(3) e stravis(3), pois não são usados no OpenSSH.

  • Evitado avisos de fortify no Android. (bz3954)

  • Corrigido um número de vazamentos de memória em caminhos de erro no código de portabilidade. (GHPR681)

  • Revisada documentação de README.privsep para refletir recente mudança do sshd para um modelo multi‑binary.

Checksum

  • SHA1 (openssh-10.4.tar.gz) = 8502b516230865e229d55045bb4ccc67aeae905b

  • SHA256 (openssh-10.4.tar.gz) = qUVI+wMg4mVpiQbXvfMVkF3Zuyy2JrS+ZjN764mtyGE=

  • SHA1 (openssh-10.4p1.tar.gz) = ae8650a71cc52dbbd049519cee276ae6d65c2c4d

  • SHA256 (openssh-10.4p1.tar.gz) = 72Am3SrqjVYFljjV0yYpAsiSzrqfiDlYNeDQbT+2Mjg=

Observação: As assinaturas SHA256 são codificadas em base64 e não em hexadecimal (padrão da maioria dos ferramentas de checksum). A chave PGP usada para assinar os releases está disponível nos mirrors em https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/RELEASE_KEY.asc.

Reportando Bugs

Leia a página https://www.openssh.com/report.html. Bugs de segurança devem ser reportados diretamente para [email protected].

O OpenSSH 10.4 traz um passo à frente em segurança e confiabilidade para administradores de sistema e desenvolvedores que dependem de conexões SSH seguras. A atualização é recomendada para todos os usuários, especialmente aqueles que operam em ambientes expostos a rede.

Via openssh.org. Você pode conferir o post original em inglês:

OpenSSH 10.4/10.4p1 (2026-07-06)

Por · Última atualização: