CVE-2021-3712
Dépassements de tampon de lecture lors du traitement de chaînes ASN.1
- Publié
- 24 août 2021
- Mise à jour
- 16 avr. 2026
- Attribution de CNA
- openssl
- Preuve observée
- 8 août 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:HÉlevé · 30 prochains jours
- Percentile
- 98,9 %
- Date du modèle
- 21 sept. 2026
EPSS est une estimation statistique, et non une certitude ou une mesure d'impact. Combinez-le avec CVSS, le statut KEV, l'exposition et votre environnement.
Résumé
ASN.1 strings sont représentées en interne dans OpenSSL comme une structure ASN1_STRING qui contient un tampon contenant les données de la chaîne et un champ contenant la longueur du tampon. Cela contraste avec les chaînes C normales qui sont représentées comme un tampon pour les données de la chaîne, terminé par un octet NUL (0). Bien que cela ne soit pas une exigence stricte, les chaînes ASN.1 qui sont analysées à l'aide des fonctions « d2i » d'OpenSSL (et d'autres fonctions d'analyse similaires), ainsi que toute chaîne dont la valeur a été définie avec la fonction ASN1_STRING_set(), termineront également par un NUL le tableau d'octets dans la structure ASN1_STRING. Cependant, il est possible pour les applications de construire directement des structures ASN1_STRING valides qui ne terminent pas par un NUL le tableau d'octets en définissant directement les champs « data » et « length » dans le tableau ASN1_STRING. Cela peut également se produire en utilisant la fonction ASN1_STRING_set0(). De nombreuses fonctions OpenSSL qui impriment des données ASN.1 ont été découvertes en supposant que le tableau d'octets ASN1_STRING sera terminé par un NUL, même si cela n'est pas garanti pour les chaînes qui ont été directement construites. Lorsqu'une application demande l'impression d'une structure ASN.1, et que cette structure ASN.1 contient des ASN1_STRING qui ont été directement construites par l'application sans terminer par un NUL le champ « data », un dépassement de tampon en lecture peut se produire. La même chose peut également se produire lors du traitement des contraintes de nom des certificats (par exemple, si un certificat a été directement construit par l'application au lieu d'être chargé via les fonctions d'analyse d'OpenSSL, et que le certificat contient des structures ASN1_STRING non terminées par un NUL). Cela peut également se produire dans les fonctions X509_get1_email(), X509_REQ_get1_email() et X509_get1_ocsp(). Si un acteur malveillant peut amener une application à construire directement une ASN1_STRING puis à la traiter via l'une des fonctions OpenSSL concernées, ce problème pourrait être déclenché. Cela pourrait entraîner un crash (provoquant une attaque par déni de service). Cela pourrait également entraîner la divulgation de contenus de mémoire privée (tels que des clés privées ou du texte clair sensible). Corrigé dans OpenSSL 1.1.1l (Affecté 1.1.1-1.1.1k). Corrigé dans OpenSSL 1.0.2za (Affecté 1.0.2-1.0.2y).
Sources
1Utilisation responsable
Utilisez les informations de vulnérabilité uniquement sur les systèmes que vous possédez ou que vous êtes autorisé à tester. Kitploit renvoie aux métadonnées de la recherche publique et ne stocke pas de code d'exploitation ni de charges utiles malveillantes.