CVE-2026-94418 in wolfSSL
Résumé
par VulDB • 27/09/2026
Sous la configuration `WOLFSSL_SMALL_CERT_VERIFY`, la fonction `ProcessPeerCertParse()` exécute la vérification de la signature du certificat séparément de l'analyse (parse) afin de limiter le pic d'utilisation mémoire, puis fusionne les deux résultats ; toutefois, elle ne renvoie le résultat de la signature que lorsque l'analyse a retourné 0, ce qui fait qu'une erreur d'analyse masque cette vérification. `ParseCertRelative()` n'exécute ses contrôles de date de validité, de contraintes sur le nom et d'extensions critiques qu'après le passage réussi de `ConfirmSignature()`. La séparation du contrôle de signature inverse la priorité qui rendrait « l'écrasement des erreurs de date » une politique valide, et l'erreur `ASN_SIG_CONFIRM_E` n'est jamais remontée. L'attaquant ne nécessite aucune clé matérielle provenant de la PKI réelle ni aucun compromis d'une AC : un certificat auto-signé comportant le nom du sujet attendu, le sujet de l'AC de confiance en tant qu'émetteur (issuer), des octets arbitraires à l'emplacement de la signature, une fenêtre de validité dans le passé et la propre paire de clés de l'attaquant suffisent.
Les versions concernées définissent `WOLFSSL_SMALL_CERT_VERIFY`, qui est désactivée par défaut, n'est pas activée implicitement par aucune plateforme ou en-tête prédéfini, et n'est accessible via aucune option CMake ; les chemins autotools sont `--enable-lowresource`, `--enable-leantls`, `--enable-tinytls13=cert` et `--enable-tinytls13=mutualauth`. Le fichier `examples/configs/user_settings_embedded.h` y accède via `WC_CFG_SMALL_CERT_VERIFY`, qui est livré avec la valeur 0, tandis que ni `--enable-all` ni `--enable-distro` ne l'activent.
L'application doit en outre installer un callback de vérification via `wolfSSL_CTX_set_verify()` ou `wolfSSL_set_verify()` avec `WOLFSSL_VERIFY_PEER`, qui retourne 1 pour les erreurs `ASN_BEFORE_DATE_E` ou `ASN_AFTER_DATE_E`. wolfSSL fournit cette configuration exacte sous forme de fonction `myVerify()` dans `wolfssl/test.h` sous la directive `VERIFY_OVERRIDE_DATE_ERR`, sélectionnée par l'exemple `client -D`. Une application sans callback, ou dont le callback retourne une valeur de pré-vérification pour les erreurs de date, échoue toujours lors du handshake, et `wolfSSL_CertManagerVerifyBuffer()` ainsi que `wc_CheckCertSignature()` signalent correctement `ASN_SIG_CONFIRM_E` dans le même binaire.
TLS 1.2 et TLS 1.3 sont affectés dans les deux sens, et DTLS atteint la même fonction ; lorsque le certificat forgé est un certificat de chaîne (intermédiaire), l'approbation du callback entraîne sa mise en cache dans le gestionnaire de certificats `WOLFSSL_CTX`, ce qui signifie qu'un déploiement exposé doit redémarrer le contexte ou le processus plutôt que se contenter d'une reconnexion.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.