CVE-2026-94418 in wolfSSLinformação

Sumário

de VulDB • 27/09/2026

Sob a definição de compilação `WOLFSSL_SMALL_CERT_VERIFY`, a função `ProcessPeerCertParse()` executa a verificação da assinatura do certificado separadamente da análise (parse) para manter o pico de memória baixo, e depois mescla os dois resultados. No entanto, ela mesclava apenas o resultado da assinatura quando a análise retornava 0; portanto, qualquer erro na fase de parse ocultava esse resultado. `ParseCertRelative()` alcança suas verificações de data de validade, restrições de nome (name-constraint) e extensões críticas somente após `ConfirmSignature()` ter sido bem-sucedida. Assim, separar a verificação da assinatura inverte a precedência que torna "ignorar erros de data" uma política válida, fazendo com que o erro `ASN_SIG_CONFIRM_E` nunca seja reportado em nenhum lugar.

O atacante não precisa de material-chave proveniente da PKI real nem de comprometimento de uma CA: um certificado autoassinado contendo o nome do sujeito esperado, a autoridade emissora (issuer) como sendo a subject da CA confiável, bytes arbitrários no local destinado à assinatura, uma janela de validade no passado e o próprio par de chaves do atacante são suficientes.

As builds afetadas definem `WOLFSSL_SMALL_CERT_VERIFY`, que está desativado por padrão, não é definido implicitamente por nenhuma plataforma ou cabeçalho predefinido (preset header), e não é acessível através de nenhuma opção CMake; as rotas autotools são `--enable-lowresource`, `--enable-leantls`, `--enable-tinytls13=cert` e `--enable-tinytls13=mutualauth`. O arquivo `examples/configs/user_settings_embedded.h` alcança essa configuração através de `WC_CFG_SMALL_CERT_VERIFY`, que é distribuído como 0, enquanto nem `--enable-all` nem `--enable-distro` a ativam.

A aplicação deve adicionalmente instalar um callback de verificação através de `wolfSSL_CTX_set_verify()` ou `wolfSSL_set_verify()`, com `WOLFSSL_VERIFY_PEER`, que retorna 1 para os erros `ASN_BEFORE_DATE_E` ou `ASN_AFTER_DATE_E`; o wolfSSL distribui exatamente essa configuração como `myVerify()` em `wolfssl/test.h` sob a definição `VERIFY_OVERRIDE_DATE_ERR`, selecionada pelo exemplo `client -D`. Uma aplicação sem callback, ou cujo callback retorna preverify para erros de data, ainda falhará no handshake, e as funções `wolfSSL_CertManagerVerifyBuffer()` e `wc_CheckCertSignature()` reportarão corretamente o erro `ASN_SIG_CONFIRM_E` no mesmo binário.

O TLS 1.2 e o TLS 1.3 são afetados em ambas as direções, e o DTLS alcança a mesma função; onde o certificado forjado é um certificado de cadeia (chain certificate), o consentimento do callback faz com que ele seja armazenado em cache no gerenciador de certificados `WOLFSSL_CTX`. Portanto, uma implantação exposta deve reiniciar o contexto ou o processo, em vez de apenas reconectar.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsável

wolfSSL

Reservar

21/09/2026

Divulgação

27/09/2026

Moderação

aceite

Entrada

VDB-410855

CPE

pronto

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Do you need the next level of professionalism?

Upgrade your account now!