
OpenSSL DTLS CVE-2014-0221 Déni à distance
OpenSSL DTLS CVE-2014-0221 Déni à distance
Sécurité de la couche de transport de datagrammes. *Couche physique
Support des datagrammes au niveau TCP : TLS
Support des datagrammes au niveau UDP : DTLS : gère l'échange de clés, l'authentification, la configuration des paramètres de sécurité, etc., grâce à des modifications appropriées du processus HandShake, et prend en charge une communication sécurisée fiable sur UDP, qui est sans connexion, grâce aux délais d'attente et aux retransmissions
DTLS est l'abréviation de Datagram Transport Layer Security, un protocole conçu pour fournir la sécurité dans les communications basées sur UDP (User Datagram Protocol). TLS (Transport Layer Security) est principalement utilisé pour fournir une sécurité dans les communications basées sur TCP (Transmission Control Protocol), mais comme UDP est un protocole sans connexion et basé sur les paquets, il est difficile d'appliquer TLS tel quel. C'est pour fournir une sécurité dans ces communications basées sur UDP que DTLS a été conçu.
DTLS est très similaire à TLS dans sa structure de base, mais présente quelques différences majeures :
Prise en charge des datagrammes : DTLS est conçu pour s'adapter à UDP, un protocole basé sur les datagrammes. TLS étant optimisé pour TCP, orienté connexion, il a été modifié pour fonctionner par datagrammes afin de l'appliquer à UDP.
Modification appropriée du processus Handshake : comme TLS, DTLS utilise le processus Handshake pour gérer l'authentification, l'échange de clés, la configuration des paramètres de sécurité, etc. Cependant, en raison des caractéristiques d'UDP, des pertes de paquets ou des changements d'ordre peuvent survenir, c'est pourquoi des mécanismes permettant de faire face à ces situations ont été ajoutés à DTLS.
Délais d'attente et retransmission : DTLS comprend des mécanismes de délai d'attente et de retransmission en cas de perte de paquets ou de besoin de retransmission. Cela compense les caractéristiques sans connexion d'UDP et permet une communication sécurisée fiable.
Considérations de sécurité : DTLS utilise les mêmes protocoles de sécurité que TLS pour garantir la confidentialité, l'intégrité et l'authentification des données. Il est donc possible de transférer des données en toute sécurité même dans les applications basées sur UDP.
DTLS est principalement utilisé pour fournir la sécurité dans les environnements utilisant UDP, comme la VoIP (voix sur IP), le streaming multimédia, les serveurs de jeux, etc.
Pourquoi OpenSSL ? : DTLS : TLS basé sur UDP, DTLS 1.0 a été implémenté dans OpenSSL.
Vulnérabilité permettant, via une attaque de l'homme du milieu (MITM) avec transmission d'un handshake falsifié, de déchiffrer les données transmises et de manipuler les données échangées entre le serveur et le client (CVE-2014-0224)
Vulnérabilité permettant une attaque par déni de service en envoyant un handshake DTLS anormal à un client DTLS OpenSSL (CVE-2014-0221)
Vulnérabilité permettant l'exécution de code arbitraire en envoyant un fragment DTLS anormal à un client ou un serveur DTLS OpenSSL (CVE-2014-0195)
Vulnérabilité permettant l'exécution de code arbitraire due à un défaut dans la fonction do_ssl3_write (CVE-2014-0198)
Cette vulnérabilité se produit lorsque l'option SSL_MODE_RELEASE_BUFFERS est activée dans OpenSSL 1.0.0 et 1.0.1 (cette option est désactivée par défaut)
Vulnérabilité due à une condition de course (race condition) dans la fonction ssl3_read_bytes, permettant à un attaquant d'injecter des données dans la session ou de provoquer un déni de service (CVE-2010-5298)
Cette vulnérabilité se produit dans les applications multithread utilisant OpenSSL 1.0.0 et 1.0.1 lorsque l'option SSL_MODE_RELEASE_BUFFERS est activée (cette option est désactivée par défaut)
Vulnérabilité pouvant provoquer un déni de service sur les clients TLS OpenSSL avec les ciphersuites ECDH anonymes activées (CVE-2014-3470)
OpenSSL versions 0.9.8
OpenSSL versions 1.0.0
OpenSSL versions 1.0.1
Parmi celles-ci, CVE-2014-0221 est une vulnérabilité permettant une attaque par déni de service en envoyant un handshake DTLS anormal à un client DTLS OpenSSL
< Vulnérabilité de déni de service DTLS (CVE-2014-0221) >
o DTLS (Datagram Transport Layer Security) est un protocole basé sur TLS qui permet de transmettre des datagrammes chiffrés
o Si un message de handshake DTLS anormal (message Hello DTLS) est envoyé à un client DTLS, OpenSSL est implémenté de manière à pouvoir tomber dans un état de récursion, permettant ainsi une attaque par déni de service
if(!s->server && s->d1->r_msg_hdr.frag_off == 0 && wire[0] == SSL3_MT_HELLO_REQUEST) {
if(wire[1] == 0 && wire[2] == 0 && wire[3] == 0) {
if(s->msg_callback)
s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE,
wire, DTLS1_HM_HEADER_LENGTH, s, s->msg_callback_arg);
s->init_num = 0;
return dtls1_get_message_fragment(s, st1, stn, max, ok);
}
else {
al=SSL_AD_UNEXPECTED_MESSAGE;
SSLerr(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT,SSL_R_UNEXPECTED_MESSAGE);
goto f_err;
}
}