web-dev-qa-db-fra.com

Pourquoi RFC6797 disait-il "Un hôte HSTS ne doit pas inclure le champ d'en-tête STS dans les réponses HTTP sur un transport non sécurisé."

Pourquoi - le RFC interdit le serveur d'envoyer des HST au client sur http?

Je peux voir que si un client HTTP répond à cette réponse HTTP non sécurisée, il pourrait causer que ce site soit inaccessible au client, mais je ne vois aucune raison pour que le serveur ait un must dans le protocole.

Le client ne doit plutôt pas répondre à la HST dans des réponses HTTP non sécurisées est la bonne approche dans mon esprit. Qu'est-ce que je rate?

7.2. Type de requête HTTP

Si un hôte HSTS reçoit un message de requête HTTP sur un transport non sécurisé, il doit envoyer un message de réponse HTTP contenant un code d'état indiquant une redirection permanente, telle que le code d'état 301 ( Section 10.3.2 de [RFC2616]. ), et une valeur de champ d'en-tête de localisation contenant l'URI de la demande d'origine de la requête HTTP (voir section 9 ("Construire une uri de demande efficace")) modifiées si nécessaire pour avoir un schéma URI de "HTTPS" ou une URI générée selon la politique locale avec un schéma URI de "HTTPS".

Remarque: le comportement ci-dessus est un "devrait" plutôt qu'un "must" en raison de:

  • Risques dans les redirections non sécurisées à sécurité non sécurisées [ Owasp-Tlsguide ].

  • Caractéristiques de déploiement de site. Par exemple, un site qui intègre des composants tiers peut ne pas se comporter correctement lors de la réaménagement de serveur-côté non sécurisé à sécuriser en cas d'accès au moyen de transport non sécurisé mais se comporte correctement lorsqu'il est accessible uniformément sur le transport sécurisé. Ce dernier est le cas indiquant une UA capable de HSTS qui a déjà noté le site en tant qu'hôte HSTS connu (par quelque moyen que ce soit, par exemple, par exemple, interaction antérieure ou configuration de l'UA).

Un hôte HSTS ne doit pas inclure le champ d'en-tête STS dans les réponses HTTP transportées sur un transport non sécurisé.

19
goodguys_activate

Ce comportement de client est Interdit par section 8.1 de la RFC :

Si une réponse HTTP est reçue sur le transport d'insécurité, l'UA doit ignorer les champs d'en-tête STS présents.

La spécification interdit à cesser d'envoyer des directives d'insécurité HSTS et Clients de la transformation des directives en cas d'insécurité HST. Cela garantit qu'une implémentation défectueuse dans un serveur ou un client n'est pas suffisante pour compromettre la HST; L'échec doit être présent à la fois pour que la faiblesse soit présente.


Comme indiqué dans votre question, la TVHS sur HTTP uni sonne comme une excellente façon pour un attaquant de mettre en œuvre un déni de service appliqué à long terme sur le client sur un service offert sur http. En fait, section 14.3 de la RFC 6797 adressent cela spécifiquement (ainsi qu'une préoccupation encore plus grave):

La justification de cette [ Condition requise que la TVHS soit servie sur des connexions sécurisées uniquement] est que s'il y a un "homme au milieu" (MITM) - qu'il s'agisse d'un proxy légitimement déployé ou d'une entité illégitime - cela pourrait causer divers méfaits (voir également l'appendice A ("Notes de décision de conception") 3, ainsi que la section 14.6 ("Vulnérabilité de la MITM Bootstrap")); par exemple:

  • Notation non autorisée de l'hôte en tant qu'hôte HST connexe, ce qui conduit potentiellement à une situation de déni de service si l'hôte n'offre pas uniformément ses services sur une sécurité Transport (voir aussi Section 14.5 ("déni de service" ).

  • Réinitialisation du temps de vie pour la désignation de l'hôte en tant qu'hôte HST connexe en manipulant la valeur de paramètre de champ d'en-tête Max-Âge renvoyée à l'UA. Si le max-Âge est renvoyé sous zéro, cela entraînera la cessation de l'hôte de céder en tant qu'hôte HST connexe par l'UA, conduisant à des connexions d'insécurité à l'hôte Ou éventuellement déni de service si l'hôte fournit ses services uniquement sur le transport sécurisé.

Puisque HTTP peut être facilement spoofed, un attaquant pourrait spécifier une directive HSTS pour traiter un site HTTP uniquement en tant que site HTTPS: le client demanderait alors https et le serveur serait incapable de le fournir.

Plus sérieusement, cette section de la RFC indique qu'un attaquant pouvant émettre des directives de HSTS pour un hôte pourrait éliminer le statut de l'hôte en tant qu'hôte HSTS connu, permettant de laisser dangereusement au client de délivrer des demandes http ordinaires.

27
apsillers

Cela peut être d'éviter l'utilisation de cet en-tête pour provoquer un déni d'attaque de service.

Imaginez un site Web HTTP non sécurisé. Imaginez maintenant une personne capable d'altérer les en-têtes HTTP envoyés par ce site pour ajouter une en-tête HSTS. Selon le RFC:

  • L'UA devrait cesser d'essayer d'accéder au site via HTTP et d'essayer d'utiliser HTTPS uniquement à la place.
  • Si l'UA n'est pas en mesure d'établir une connexion HTTPS, elle devrait considérer que ceci est une erreur côté serveur et doit donner à l'utilisateur final sans recours.

En d'autres termes, l'utilisateur final ne serait plus en mesure d'accéder à ce site HTTP uniquement, d'où le DOS.

6
WhiteWinterWolf