CVE-2024-5535 in OpenSSL
Sumário
de VulDB • 30/06/2026
Resumo do problema: A chamada à função da API OpenSSL SSL_select_next_proto com um buffer de protocolos suportados pelo cliente vazio pode causar uma falha (crash) ou o envio de conteúdos de memória para a parte remota.
Resumo do impacto: Uma leitura além dos limites do buffer (buffer overread) pode ter diversas consequências potenciais, como comportamento inesperado da aplicação ou uma falha crítica. Em particular, este problema poderia resultar no envio até 255 bytes de dados privados arbitrários provenientes da memória para a parte remota, levando à perda de confidencialidade. No entanto, apenas as aplicações que chamam diretamente a função SSL_select_next_proto com uma lista de protocolos suportados pelo cliente de comprimento 0 são afetadas por este problema. Normalmente, esta não seria um cenário válido e geralmente não estaria sob controle do atacante, mas pode ocorrer acidentalmente devido a erros de configuração ou programação na aplicação chamada.
A função da API OpenSSL SSL_select_next_proto é tipicamente utilizada por aplicações TLS que suportam ALPN (Application Layer Protocol Negotiation) ou NPN (Next Protocol Negotiation). O NPN é mais antigo, nunca foi padronizado e está depreciado em favor do ALPN. Acreditamos que o ALPN esteja significativamente mais implantado do que o NPN. A função SSL_select_next_proto aceita uma lista de protocolos do servidor e uma lista de protocolos do cliente, retornando o primeiro protocolo que aparece na lista do servidor e também na lista do cliente. No caso de não haver sobreposição entre as duas listas, ela retorna o primeiro item da lista do cliente. Em qualquer um dos casos, sinaliza se foi encontrada alguma sobreposição entre as duas listas. Quando a SSL_select_next_proto é chamada com uma lista do cliente de comprimento zero, falha ao detectar essa condição e retorna a memória imediatamente após o ponteiro da lista do cliente (e relata que não houve sobreposição nas listas).
Esta função é tipicamente invocada por um callback de aplicação no lado do servidor para ALPN ou por um callback de aplicação no lado do cliente para NPN. No caso do ALPN, a libssl garante que a lista de protocolos fornecida pelo cliente nunca tenha comprimento zero. A lista de protocolos do servidor provém da aplicação e normalmente não se espera que seja de comprimento zero. Neste caso, se a função SSL_select_next_proto tiver sido chamada conforme o esperado (com a lista fornecida pelo cliente passada nos parâmetros client/client_len), então a aplicação não estará vulnerável a este problema. Se a aplicação acidentalmente estiver configurada com uma lista do servidor de comprimento zero e passar inadvertidamente essa lista de comprimento zero no servidor para os parâmetros client/client_len, além de falhar ao lidar corretamente com uma resposta de "sem sobreposição" (o que normalmente resultaria numa falha na negociação TLS/ALPN), então estará vulnerável a este problema.
No caso do NPN, o protocolo permite que o cliente selecione oportunisticamente um protocolo quando não há sobreposição. O OpenSSL retorna o primeiro protocolo do cliente no caso de ausência de sobreposição para suportar esta funcionalidade. A lista de protocolos do cliente provém da aplicação e normalmente não se espera que seja de comprimento zero. No entanto, se a função SSL_select_next_proto for chamada acidentalmente com um client_len igual a 0, será retornado um ponteiro de memória inválido em vez disso. Se a aplicação utilizar esta saída como o protocolo oportunista, ocorrerá perda de confidencialidade.
Este problema foi avaliado como tendo severidade Baixa porque as aplicações são mais propensas a ser vulneráveis se estiverem utilizando NPN em vez de ALPN — mas o NPN não é amplamente utilizado. Além disso, requer um erro de configuração ou programação da aplicação. Finalmente, este problema normalmente não estaria sob controle do atacante, tornando improvável uma exploração ativa.
Os módulos FIPS nas versões 3.3, 3.2, 3.1 e 3.0 não são afetados por este problema.
Devido à baixa severidade deste problema, não estamos a emitir novas releases da OpenSSL neste momento. A correção será incluída nas próximas releases quando estiverem disponíveis.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.