CVE-2024-5535
SSL_select_next_proto leitura excessiva de buffer
- Publicado
- 27 de jun. de 2024
- Atualizado
- 12 de mai. de 2026
- Atribuindo CNA
- openssl
- Evidência observada
- 5 de ago. de 2026
CVSS primário
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HBaixo · próximos 30 dias
- Percentil
- 92,6%
- Data do modelo
- 21 de set. de 2026
EPSS é uma estimativa estatística, não uma certeza ou uma medida de impacto. Combine-o com CVSS, status KEV, exposição e seu ambiente.
Resumo
Resumo do problema: Chamar a função da API OpenSSL SSL_select_next_proto com um buffer vazio de protocolos de cliente suportados pode causar uma falha (crash) ou o envio de conteúdo de memória ao peer. Resumo do impacto: Uma leitura além do limite do buffer (buffer overread) pode ter uma série de consequências potenciais, como comportamento inesperado do aplicativo ou uma falha. Em particular, este problema pode resultar no envio de até 255 bytes de dados privados arbitrários da memória ao peer, levando a uma perda de confidencialidade. No entanto, apenas aplicativos que chamam diretamente a função SSL_select_next_proto com uma lista de comprimento 0 de protocolos de cliente suportados são afetados por este problema. Isso normalmente nunca seria um cenário válido e geralmente não está sob controle do atacante, mas pode ocorrer por acidente no caso de um erro de configuração ou de programação no aplicativo chamador. A função da API OpenSSL SSL_select_next_proto é tipicamente usada por aplicativos TLS que suportam ALPN (Application Layer Protocol Negotiation) ou NPN (Next Protocol Negotiation). O NPN é mais antigo, nunca foi padronizado e está obsoleto em favor do ALPN. Acreditamos que o ALPN é significativamente mais amplamente 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 e retorna 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 ambos os casos, ela sinalizará se foi encontrada uma sobreposição entre as duas listas. No caso em que SSL_select_next_proto é chamada com uma lista de cliente de comprimento zero, ela não percebe essa condição e retorna a memória imediatamente após o ponteiro da lista do cliente (e reporta que não houve sobreposição nas listas). Esta função é tipicamente chamada a partir de um callback de aplicativo do lado do servidor para ALPN ou de um callback de aplicativo do lado do cliente para NPN. No caso do ALPN, a lista de protocolos fornecida pelo cliente é garantida pelo libssl a nunca ter comprimento zero. A lista de protocolos do servidor vem do aplicativo e normalmente nunca deve ser esperada com comprimento zero. Nesse caso, se a função SSL_select_next_proto foi chamada como esperado (com a lista fornecida pelo cliente passada nos parâmetros client/client_len), então o aplicativo não estará vulnerável a este problema. Se o aplicativo foi acidentalmente configurado com uma lista de servidor de comprimento zero, e acidentalmente passou essa lista de servidor de comprimento zero nos parâmetros client/client_len, e adicionalmente falhou em tratar corretamente uma resposta de "sem sobreposição" (que normalmente resultaria em uma falha de handshake no ALPN), então ele 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 sem sobreposição em apoio a isso. A lista de protocolos do cliente vem do aplicativo e normalmente nunca deve ser esperada com comprimento zero. No entanto, se a função SSL_select_next_proto for acidentalmente chamada com um client_len de 0, um ponteiro de memória inválido será retornado em vez disso. Se o aplicativo usar essa saída como o protocolo oportunístico, ocorrerá a perda de confidencialidade. Este problema foi avaliado como de gravidade Baixa porque os aplicativos têm maior probabilidade de serem vulneráveis se estiverem usando NPN em vez de ALPN — mas o NPN não é amplamente utilizado. Também requer um erro de configuração ou de programação do aplicativo. Finalmente, este problema normalmente não estaria sob controle do atacante, tornando a exploração ativa improvável. Os módulos FIPS em 3.3, 3.2, 3.1 e 3.0 não são afetados por este problema. Devido à baixa gravidade deste problema, não estamos lançando novas versões do OpenSSL neste momento. A correção será incluída nas próximas versões quando estiverem disponíveis.
Uso responsável
Use informações de vulnerabilidade apenas em sistemas que você possui ou está autorizado a testar. O Kitploit vincula-se a metadados de pesquisa pública e não armazena código de exploração ou cargas maliciosas.