protocole-https-hsts

Le protocole HTTPS présentant des faiblesses de sécurité, un nouveau protocole a vu le jour et vient tout juste d’être standardisé par l’IETF (Internet Engineering Task Force) dans le RFC 6797 : il s’agit du protocole HSTS (pour Http Strict Transport Security). Ce protocole a été mis en place afin de forcer un utilisateur à se connecter à un site web uniquement en HTTPS.

Dans un premier temps nous allons vous montrer une des principale faiblesse qu’exploitaient les pirates sur les sites HTTPS, puis ensuite nous parlerons du fonctionnement du HSTS en lui-même.

Bloquer les attaques Man-in-the-middle

Avant d’établir une liaison entre le client et le serveur, ce dernier doit réussir à être authentifié auprès du client et ce grâce à un certificat. Si ce certificat est auto-signé (ou corrompu), un message d’erreur est affiché à l’utilisateur lui indiquant un risque de sécurité mais lui laissant tout de même le choix de continuer sur une version non sécurisé du site.

certif-fail

La deuxième chose à savoir est que les sites web protégés par du HTTPS chiffrent les messages échangés entre le serveur et le client grâce à un secret partagé. Mais il arrive parfois qu’un site web doit charger des ressources depuis un serveur extérieur, par exemple : des fichiers JavaScript ou même des images ; pour cela, le navigateur envoi une requête HTTP (parfois même accompagnée du cookie de session) afin de récupérer cette ressource distante et si une personne malintentionnée intercepte cette requête, il est alors en mesure de forcer un utilisateur à se connecter au site web sur sa version HTTP, autrement dit : non-sécurisé.

A titre informatif, de nombreuses attaques comme BEAST ou SSL Strip ont déjà éprouvé le protocole HTTPS.

man-in-the-middle

HTTPS_vers_HTTP

Le fonctionnement de HSTS

Pour contrer ces faiblesses, les sites web implémentant la norme HSTS n’autorisent que les connections via le protocole HTTPS et refuse toutes les tentatives de connections en HTTP ne laissant donc plus le choix à l’utilisateur en remplaçant toutes les urls de la forme http://nomdusite/ressource par https://nomdusite/ressource. Cette politique de sécurité est alors appliquée et renouvelée pour une durée déterminée grâce à un en-tête de réponse HTTP appelé Strict-Transport-Security.

Certains navigateurs prennent déjà en charge la norme HSTS comme par exemple :

  • Google Chrome et Chromium depuis sa version 4.0.211.0
  • Firefox 4.0
  • Opera 12

Mais, même avec le HSTS activé sur un site web, il reste encore une petite fenêtre pour les attaques, lorsque le navigateur visite le site pour la première fois et qu’il n’a pas sauvegardé la politique HSTS. À ce moment-là, un attaquant pourrait l’empêcher de parvenir à la version HTTPS du site et pourrait forcer la connexion à utiliser le protocole HTTP. Afin de résoudre ce problème, les navigateurs comme Chrome et Firefox sont livrés avec des listes de sites Web populaires préchargés pour lesquels le HSTS est appliqué par défaut.

Sources :

Yann CAM & Damien SEILER

Consultants Sécurité