OpenSSL e o bug do Punycode: um erro de processamento que quebrava a validação de nome de domínio
Em 2022, uma falha na biblioteca OpenSSL quebrava a comparação de nomes de domínio e afetava a validação de certificados, afetando a segurança de conexões HTTPS.
Em outubro de 2022, a OpenSSL corrigiu a CVE-2022-3602, conhecida como X.509 Name Constraints, e a CVE-2022-3786, o bug do Punycode. A primeira afetava a validação de certificados com restrições de nome, e podia permitir que um certificado válido para um domínio fosse aceito em outro.
A segunda é mais sutil e mais interessante. A função que converte nomes de domínio para sua forma internacionalizada, o Punycode, tinha um erro de processamento que fazia strings com caracteres de controle serem convertidas de maneira incorreta. O resultado é que a comparação entre o nome presented no certificado e o nome que o cliente pedia podia falhar, e a validação de identidade do servidor passava a aceitar nomes que não eram o esperado.
O caso é interessante porque o vetor de ataque não é o atacante: é o próprio usuário legítimo, com um nome de domínio que contém caracteres estranhos, que passa a ter a conexão negada ou, pior, a ser aceita com a identidade trocada. Vulnerabilidades de validação de entrada têm esse efeito perverso de punir o inocente, e o tratamento correto é o mesmo de sempre: entrada não confiável precisa ser normalizada antes de ser comparada, e a biblioteca que faz essa normalização também precisa de atualização.
A lição prática é que a correção de biblioteca crítica precisa ser imediata, mesmo quando o efeito é de indisponibilidade para o usuário legítimo. E que o nome de domínio é um dado hostile: ele vem de fora, é controlado por quem registrou o domínio, e por isso precisa ser tratado como entrada, e não como referência confiável.
A segunda é mais sutil e mais interessante. A função que converte nomes de domínio para sua forma internacionalizada, o Punycode, tinha um erro de processamento que fazia strings com caracteres de controle serem convertidas de maneira incorreta. O resultado é que a comparação entre o nome presented no certificado e o nome que o cliente pedia podia falhar, e a validação de identidade do servidor passava a aceitar nomes que não eram o esperado.
O caso é interessante porque o vetor de ataque não é o atacante: é o próprio usuário legítimo, com um nome de domínio que contém caracteres estranhos, que passa a ter a conexão negada ou, pior, a ser aceita com a identidade trocada. Vulnerabilidades de validação de entrada têm esse efeito perverso de punir o inocente, e o tratamento correto é o mesmo de sempre: entrada não confiável precisa ser normalizada antes de ser comparada, e a biblioteca que faz essa normalização também precisa de atualização.
A lição prática é que a correção de biblioteca crítica precisa ser imediata, mesmo quando o efeito é de indisponibilidade para o usuário legítimo. E que o nome de domínio é um dado hostile: ele vem de fora, é controlado por quem registrou o domínio, e por isso precisa ser tratado como entrada, e não como referência confiável.
Leia também
Segurança da informação
Duas falhas de execução remota de código no PHP atingem todas as instalações da web
Em 21 de outubro de 2026 o PHP corrigiu duas falhas críticas que permitem executar código sem qualquer autenticação. Quem tem site em PHP precisa atualizar hoje.
LGPD e proteção de dados
Seu CPF vazou: o que fazer nas próximas 48 horas
A maior parte dos vazamentos de CPF é usada para golpe, e os golpes que mais dão certo começam nos primeiros dias.
IA e segurança
A era da IA no trabalho: o que mudou de verdade
A inteligência artificial mudou a forma de trabalhar, e junto trouxe um conjunto novo de falhas que os processos antigos não esperavam.
Segurança da informação
Sua empresa tem antivírus e ainda assim já foi invadida
A sensação de segurança atrasa a ação, e a maioria dos incidentes não depende de ataque sofisticado.