Vulnérabilités SSL/TLS - Attaques POODLE/BEAST/SWEET32 et la mort de SSLv3 + avis de sécurité OpenSSL

Cet article décrit certains problèmes connus liés à SSL / TLS et à OpenSSL, ainsi que les vulnérabilités aux attaques POODLE, BEAST et SWEET32.

Que sont SSL (Secure Sockets Layer) et TLS (Transport Layer Security) ?

SSL et son successeur TLS sont des protocoles cryptographiques fournissant des communications sécurisées sur des réseaux informatiques.

Voici 6 protocoles de la famille SSL / TLS:
- SSLv2: interdit d'utilisation par le Internet Engineering Task Force (rfc6176)
- SSLv3: obsolète - pas suffisamment sécuritaire (rfc7568)
- TLS1.0: considéré comme non sécuritaire (vulnérable à l'attaque BEAST). Ne devrait plus être utilisé. N'est plus acceptable pour la conformité PCI (Juin 2018).
- TLS1.1: n'a pas de problème de sécurité connu, mais ne fournit pas de suites de chiffrement modernes (rfc5246#section-1.2)
- TLS1.2: n'a pas de problème de sécurité connu et offre les suites modernes de chiffrement authentifié de type AEAD.
- TLS1.3: Depuis août 2018, le Internet Engineering Task Force ont publié TLS 1.3 qui supprime les options problématiques des versions précédentes de TLS, et n'inclut que la prise en charge d'algorithmes sans vulnérabilité connue. Ce devrait être le principal protocole utilisé aujourd'hui.


Qu'est-ce qu'une suite cryptographique (cypher suite) ?

Une suite cryptographique est un ensemble d’algorithmes utilisés lors de sessions SSL ou TLS pour sécuriser les connexions réseau entre le client et le serveur.

L'ensemble des algorithmes qu'une suite cryptographique comprend généralement : un algorithme d'échange de clé, un algorithme de chiffrement en masse et un algorithme de code d'authentification de message (MAC, Message Authentication Code).

Certaines suites cryptographiques doivent être évitées :
- RC4: voir CVE-2015-2808. interdit d'utilisation par le Internet Engineering Task Force (rfc7465)

- Les algorithmes de chiffrement par bloc de 64-bit utilisés en mode CBC:
DES CBC: voir CVE-2016-2183. Retiré de TLS 1.2 (rfc5246)
IDEA CBC: considéré comme non sécuritaire. Retiré de TLS 1.2 (rfc5246)
3DES EDE CBC: voir CVE-2016-2183 (aussi connu sous le nom de SWEET32).
RC2 CBC: considéré comme non sécuritaire. Voir CVE-2016-2183.

- DH (échange de clé Diffie–Hellman inférieur à 1024-bit) ou la suite cryptographique DHE_EXPORT: voir CVE-2015-4000
- suite cryptographique RSA_EXPORT: voir CVE-2015-0204
- suites cryptographiques NULL puisqu'elles ne fournissent aucun chiffrement.


Qu'est-ce que OpenSSL ?

OpenSSL est une boîte à outils logicielle sous licence libre de type Apache pour la mise en œuvre des protocoles SSL et TLS.
La communauté OpenSSL publie des correctifs pour corriger les vulnérabilités identifiées.
ex: CVE-2014-3513 [High severity]: https://www.openssl.org/news/secadv_20141015.txt
Les avis de sécurité OpenSSL sont disponibles au lien suivant : https://www.openssl.org/news/vulnerabilities.html


Vulnérabilité à l'attaque POODLE

L'attaque POODLE (Padding Oracle On Downgraded Legacy Encryption, CVE-2014-3566) est un exploit de type "homme du milieu" (MITM) qui permet à un pirate de déchiffrer du contenu sélectionné dans une session SSL.

Des variations de l'attaque POODLE affectent TLS car lors d'une attaque MITM active, un attaquant peut forcer le navigateur à rétrograder la session à SSLv3, qui peut ensuite être exploitée.


Vulnérabilité à l'attaque BEAST

L’attaque BEAST, rapportée sous le nom CVE-2011-3389, exploite une faiblesse du chiffrement par bloc CBC (cipher-block chaining) de SSL/TLS, permettant à un attaquant MITM de récupérer certaines informations de session, telles que les données de cookie, à partir d’une connexion qui aurait du être une connexion sécurisée.


Vulnérabilité à l'attaque SWEET32

L'attaque SWEET32 (assignée comme CVE-2016-2183) exploite une attaque par collision pour extraire le texte brut des données cryptées de la session SSL / TLS, en cas d'utilisation de suites de chiffrement par bloc de 64 bits avec le mode de chiffrement CBC.



Est-ce que mon serveur est vulnérable à POODLE / SWEET32 / BEAST?

Voici un outil en ligne pour tester votre site web pour détecter diverses vulnérabilités SSL/TLS:

https://www.ssllabs.com/ssltest/

Si votre site web est vulnérable, l'outil en ligne vous fournira un rapport répertoriant les vulnérabilités SSL/TLS:

 

1.txt


Vous pouvez également répertorier toutes les suites de chiffrement prises en charge par votre service web à l'aide de la commande suivante en tant qu'utilisateur root:

# nmap -Pn --script ssl-enum-ciphers -p 443 <Votre-adresse-IP>

Exemple de résultat:

PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| CBC-mode cipher in SSLv3 (CVE-2014-3566)
| Ciphersuite uses MD5 for message integrity
| Weak certificate signature: SHA1
| TLSv1.0:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| Ciphersuite uses MD5 for message integrity
| Key exchange (dh 1024) of lower strength than certificate key
| Weak certificate signature: SHA1
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| Ciphersuite uses MD5 for message integrity
| Key exchange (dh 1024) of lower strength than certificate key
| Weak certificate signature: SHA1
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 1024) - A
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 1024) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 1024) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 1024) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| Ciphersuite uses MD5 for message integrity
| Key exchange (dh 1024) of lower strength than certificate key
| Weak certificate signature: SHA1
|_ least strength: C

 

Résolution

Pour protéger votre serveur contre POODLE/BEAST/SWEET32, SSLv3 et TLS1.0 doivent être désactivés et les suites de chiffrement utilisées par vos différents services (par exemple, Web, courrier électronique, etc.) doivent être configurées correctement.

En premier lieu, vous devez vous assurer que votre système d'exploitation et vos applications (comme le serveur Web ou le panneau de contrôle) sont à jour.

Des tests supplémentaires pour vérifier la sécurité de la version OpenSSL utilisée sur votre serveur doivent être effectués.

Sécuriser votre serveur contre les vulnérabilités SSL peut entraîner des problèmes de compatibilité avec les logiciels plus anciens. Par exemple, après la mise à jour et la sécurisation de votre serveur, les visiteurs de votre site web utilisant des vieilles versions d'Internet Explorer risquent de ne pas pouvoir afficher votre site web. Prenez le temps d'évaluer les impacts potentiels sur vos utilisateurs avant d'appliquer les modifications.

Certains moyens populaires de le faire sont:

1) Avoir un second environnement (ex: un environnement de qualification) identique à votre environnement de production, où vous pouvez d'abord tester les modifications en toute sécurité.

2) Planification de plages de maintenance dans lesquelles vous pouvez appliquer des modifications à votre environnement de production réel et faire un retour arrière en cas de problème.

Les articles suivants fournissent des détails techniques (en anglais) sur les produits courants:

WHM/cPanel:
https://documentation.cpanel.net/display/CKB/How+to+Adjust+Cipher+Protocols

Plesk Windows:
https://support.plesk.com/hc/en-us/articles/115000157733-Is-it-possible-to-manage-SSL-TLS-ciphers-and-protocols-in-Plesk-for-Windows

Plesk Linux:
https://support.plesk.com/hc/en-us/articles/115000422229-How-to-enable-disable-particular-TLS-version-in-Plesk-on-Linux-
https://docs.plesk.com/en-US/onyx/advanced-administration-guide-linux/pci-dss-compliance/tune-plesk-to-meet-pci-dss-on-linux.65871/

Microsoft Windows Server:
https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings
ADFS: https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/operations/manage-ssl-protocols-in-ad-fs

VMware:
https://kb.vmware.com/s/article/2147469

Plus de produits (comme Lighttpd, Nginx, NodeJS, HAProxy ...) sont décrits dans:
http://disablessl3.com/


Références externes :

https://www.openssl.org/~bodo/ssl-poodle.pdf
https://www.us-cert.gov/ncas/alerts/TA14-290A
https://www.gracefulsecurity.com/tls-ssl-vulnerabilities/
https://blog.cloudflare.com/padding-oracles-and-the-decline-of-cbc-mode-ciphersuites/
https://blog.cloudflare.com/yet-another-padding-oracle-in-openssl-cbc-ciphersuites/
https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices (https://www.ssllabs.com/projects/best-practices/)
https://blog.pcisecuritystandards.org/are-you-ready-for-30-june-2018-sayin-goodbye-to-ssl-early-tls
https://msdn.microsoft.com/en-gb/library/windows/desktop/aa374757(v=vs.85).aspx
https://blogs.vmware.com/security/2014/10/cve-2014-3566-aka-poodle.html
http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-52r1.pdf
https://www.ietf.org/blog/tls13/

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0
Vous avez d’autres questions ? Envoyer une demande

0 Commentaires

Cet article n'accepte pas de commentaires.
Réalisé par Zendesk