OpenSSL: Heartbleed

En ce mardi 8 avril, il a été dit beaucoup de choses sur la façon de corriger la faille CVE-2014-0160 dite Heartbleed de OpenSSL.

Cette faille permet de lire un bloc de mémoire de 64Kb sur le serveur utilisant OpenSSL en versions 1.0.1a à 1.0.1f incluses. En réitérant une requête spécialement forgée, il est possible de lire plusieurs blocs de mémoire.

Bruce Schneier évoque une criticité de 11 sur une échelle allant de 1 à 10.

Les identifants pouvant être révélées sont, entre autres:

  • Identifiants de connexion (nom d'utilisateur, mot de passe; cas relevé sur les services de Yahoo par exemple)
  • Certificats
  • Clés privées
  • Données sensibles
  • Tout donnée

Tout processus utilisant l'implémentation TLS de OpenSSL est concerné.

L'ensemble des étapes de résolution ci-dessous doit être appliqué. Pour rappel, une clé privée permet de déchiffrer une communication. Si un tiers possède la votre, il peut alors lire ce qui s'échange sur votre service mais aussi ce qui a été échangé par le passé s'il en a capturé les flux.

Pour corriger cette faille, il faut absolument effectuer les étapes suivantes:

  • Mettre à jour la bibliothèque OpenSSL. La faille est corrigée dès la version 1.0.1g
  • Redémarrer les services utilisant la bibliothèque OpenSSL
  • Révoquer les certificats utilisés par les services utilisant la bibliothèque OpenSSL
  • Régénérer les clés privées de ces services
  • Générer de nouvelles CSR (Certificate Signing Requests) afin d'obtenir de nouveaux certificats
  • Installer les nouveaux certificats
  • Redémarrer les services

Pour lister les services devant être redémarré, vous pouvez utiliser la commande suivante après la mise à jour de la bibliothèque OpenSSL:

$ lsof -n | grep ssl  | grep DEL
mosh-serv 1234             mshsrv  DEL       REG                9,3            6697418 /var/lib/openssl-1.0.1g/image/usr/lib64/libcrypto.so.1.0.0

Vu que des données de vos utilisateurs ont put être divulguées, il convient également:

  • d'invalider sessions et cookies
  • de forcer la réinitialisation des mots de passes d'accès à vos services afin que les utilisateurs ne gardent pas un mot de passe pouvant se promener dans la nature.
  • de révoquer et régénérer toute donnée sensible stockée par vos services

Et mieux, d'implémenter Perfect Forward Secrecy

D'autres informations peuvent être trouvées sur heartbleed.com

Pour conclure, j'ai entendu encore les même couplets disant que les logiciels propriétaires sont mieux puisqu'ils "garantissent que des gens sont payés à plein temps pour faire de la revue de code". Il convient de rappeler que c'est FAUX. Le seul but d'une entreprise est de faire du pognon. Tout ce qu'offre le modèle propriétaire est une sécurité par l'obscurité sans aucun pouvoir de contrôle pour l'exploitant.

Tous les millions donnés à des éditeurs de logiciels privés permettraient de donner à nouveau un peu plus confiance dans les technologies que nous utilisons s'ils étaient utilisés pour le développement de solutions OpenSource.

L'Opensource n'est pas le problème mais la solution.

Dans le cas d'OpenSSL je me demande comment le mainteneur du repository a fait son job: fait-il une revue de ce qui est intégré à l'upstream ?

Quoi qu'il en soit, la faille a trainé 2 ans. Vous avez intérêt à agir.