CVE-2024-5535
SSL_select_next_proto : dépassement de lecture de tampon (buffer overread)
- Publié
- 27 juin 2024
- Mise à jour
- 12 mai 2026
- Attribution de CNA
- openssl
- Preuve observée
- 5 août 2026
CVSS primaire
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HFaible · 30 prochains jours
- Percentile
- 92,6 %
- 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é
Résumé du problème : L'appel de la fonction API OpenSSL SSL_select_next_proto avec un tampon vide de protocoles clients pris en charge peut provoquer un crash ou l'envoi de contenus mémoire au pair. Résumé de l'impact : Une surlecture de tampon peut avoir une gamme de conséquences potentielles telles qu'un comportement inattendu de l'application ou un crash. En particulier, ce problème pourrait entraîner l'envoi au pair de jusqu'à 255 octets de données privées arbitraires provenant de la mémoire, conduisant à une perte de confidentialité. Cependant, seules les applications qui appellent directement la fonction SSL_select_next_proto avec une liste de longueur 0 de protocoles clients pris en charge sont affectées par ce problème. Ce scénario ne serait normalement jamais valide et n'est généralement pas sous le contrôle d'un attaquant, mais peut survenir accidentellement en cas d'erreur de configuration ou de programmation dans l'application appelante. La fonction API OpenSSL SSL_select_next_proto est généralement utilisée par les applications TLS qui prennent en charge ALPN (Application Layer Protocol Negotiation) ou NPN (Next Protocol Negotiation). NPN est plus ancien, n'a jamais été normalisé et est déprécié au profit d'ALPN. Nous pensons qu'ALPN est nettement plus largement déployé que NPN. La fonction SSL_select_next_proto accepte une liste de protocoles du serveur et une liste de protocoles du client et renvoie le premier protocole présent dans la liste du serveur qui apparaît également dans la liste du client. En cas d'absence de chevauchement entre les deux listes, elle renvoie le premier élément de la liste du client. Dans les deux cas, elle signale si un chevauchement entre les deux listes a été trouvé. Dans le cas où SSL_select_next_proto est appelée avec une liste client de longueur nulle, elle ne parvient pas à détecter cette condition et renvoie la mémoire immédiatement après le pointeur de la liste client (et signale qu'il n'y avait aucun chevauchement dans les listes). Cette fonction est généralement appelée depuis un callback applicatif côté serveur pour ALPN ou un callback applicatif côté client pour NPN. Dans le cas d'ALPN, la liste de protocoles fournie par le client est garantie par libssl de ne jamais être de longueur nulle. La liste des protocoles du serveur provient de l'application et ne devrait normalement jamais être attendue comme étant de longueur nulle. Dans ce cas, si la fonction SSL_select_next_proto a été appelée comme prévu (avec la liste fournie par le client passée dans les paramètres client/client_len), alors l'application ne sera pas vulnérable à ce problème. Si l'application a été accidentellement configurée avec une liste serveur de longueur nulle, a accidentellement passé cette liste serveur de longueur nulle dans les paramètres client/client_len, et a en outre échoué à gérer correctement une réponse « aucun chevauchement » (ce qui entraînerait normalement un échec de négociation dans ALPN), alors elle sera vulnérable à ce problème. Dans le cas de NPN, le protocole permet au client de sélectionner opportunément un protocole lorsqu'il n'y a aucun chevauchement. OpenSSL renvoie le premier protocole client dans le cas d'absence de chevauchement pour soutenir cela. La liste des protocoles clients provient de l'application et ne devrait normalement jamais être attendue comme étant de longueur nulle. Cependant, si la fonction SSL_select_next_proto est accidentellement appelée avec un client_len de 0, un pointeur mémoire invalide sera renvoyé à la place. Si l'application utilise cette sortie comme protocole opportuniste, la perte de confidentialité se produira. Ce problème a été évalué comme étant de gravité faible car les applications sont les plus susceptibles d'être vulnérables si elles utilisent NPN au lieu d'ALPN — mais NPN n'est pas largement utilisé. Il nécessite également une erreur de configuration ou de programmation de l'application. Enfin, ce problème ne serait généralement pas sous le contrôle d'un attaquant, ce qui rend une exploitation active peu probable. Les modules FIPS dans les versions 3.3, 3.2, 3.1 et 3.0 ne sont pas affectés par ce problème. En raison de la faible gravité de ce problème, nous ne publions pas de nouvelles versions d'OpenSSL pour le moment. Le correctif sera inclus dans les prochaines versions lorsqu'elles seront disponibles.
Utilisation 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.