Aperçu
Avis de sécurité : Node.js v14 et de nombreuses versions de Node v16 utilisent encore une version d'openssl qui peut les exposer à un déni de service. Le traitement d'un fichier PKCS12 malicieusement formaté peut conduire OpenSSL à se planter, ce qui peut conduire à un déni de service.
Détails
Informations sur le module
Paquets affectés : openssl
Versions concernées :
1.0.2 jusqu'à (à l'exclusion de) 1.0.2zj
1.1.1 jusqu'à (à l'exclusion de) 1.1.1x
3.0.0 jusqu'à (à l'exclusion de) 3.0.13
3.1.0 jusqu'à (à l'exclusion de) 3.1.5
Dépôt : https://github.com/openssl/openssl
Paquets publiés : openssl
Informations sur les vulnérabilités
Ce problème, considéré comme de gravité moyenne, est présent dans plusieurs branches d'openssl et peut affecter les projets qui utilisent ces versions.
OpenSSL peut utiliser un fichier au format PKCS12 pour contenir des certificats et des clés. Bien que la spécification PKCS12 permette à certains champs d'être NULL, OpenSSL ne vérifie pas correctement ce cas. Dans le cas où le champ est nul, OpenSSL tente de déréférencer un pointeur nul, ce qui provoque un plantage d'OpenSSL.
Si une application traite des fichiers PKCS12 à l'aide des API OpenSSL, elle sera vulnérable à ce problème.
Les API d'OpenSSL qui sont vulnérables à ce problème sont les suivantes : PKCS12_parse(), PKCS12_unpack_p7data(), PKCS12_unpack_p7encdata(), PKCS12_unpack_authsafes() et PKCS12_newpass().
Les modules FIPS des versions 3.2, 3.1 et 3.0 ne sont pas concernés par ce problème.
Étapes de la reproduction
- Configurer une machine avec une version de Node qui s'appuie sur OpenSSL de 1.0.2 à 3.1.5 avant l'application du correctif.
- Créer ou modifier un fichier PKCS12 dans lequel certains champs autorisés à être NULL dans la spécification sont effectivement NULL. Commencez par une clé :
openssl pkcs12 -export -in cert.pem -inkey key.pem -out malicious.p12 -passout pass:password
- Modifier le fichier à l'aide d'un éditeur hexagonal ou d'un logiciel capable de modifier le fichier. Insérer des valeurs nulles pour certains champs.
- Utilisez une version vulnérable d'OpenSSL qui utilise la clé malveillante et observez qu'elle se bloque.
Il n'existe pas de solution de contournement.
Atténuation
OpenSSL est une bibliothèque populaire qui est souvent intégrée à d'autres paquets tels que Node.js. Assurez-vous que vous utilisez une version de Node qui continue à maintenir les mises à jour des dépendances afin d'éviter les failles de sécurité dans votre logiciel. Mettez à jour votre logiciel avec la dernière version de Node ou utilisez le support commercial d'un fournisseur comme HeroDevs.
Ressources complémentaires
- Entrée dans le NIST https://nvd.nist.gov/vuln/detail/CVE-2024-0727
- https://github.com/advisories/GHSA-9v9h-cgj8-h64p
Soyez alerté chaque fois qu'une nouvelle vulnérabilité est corrigée dans les logiciels open source que nous soutenons.