web-dev-qa-db-fra.com

La définition de httponly empêche-t-elle le vol d'une session à l'aide de XSS?

Si un jeton de session est stocké dans un cookie qui a httponly défini, existe-t-il un moyen qu'une vulnérabilité XSS pourrait permettre à un utilisateur malveillant de voler un jeton de session d'utilisateurs?

18
Abe Miessler

En général, si httponly est défini sur son jeton, une attaque XSS ne devrait pas pouvoir récupérer un jeton de session. Modulo élimine les bogues dans les navigateurs et les plugins, et la mauvaise configuration du serveur (par exemple, répondre à HTTP TRACE).

Mais ça ne vaut pas grand chose. Vous pouvez empêcher XSS de mettre la main sur le jeton, mais une attaque XSS a toujours le contrôle total de la session sur la machine de l'utilisateur: elle peut forcer l'utilisateur à faire à peu près n'importe quoi sur le site, ou falsifier l'interface de l'utilisateur avec le site ( par exemple pour hameçonner les informations d'identification du site). Voir BeEF pour un exemple de ce qu'un attaquant peut réaliser avec une session compromise: vous avez déjà pratiquement perdu.

Ne pas définir httponly au mieux rend la vie un peu plus facile pour l'attaquant dans la mesure où il peut accéder à la session depuis sa propre machine en son temps, plutôt que d'être limité par la durée pendant laquelle l'utilisateur garde sa fenêtre de navigateur ouverte. Cela vaut la peine d'avoir httponly dans la mesure du possible, mais c'est une légère atténuation qui ne vous protège pas comme par magie contre les effets de XSS.

19
bobince

La fonctionnalité HttpOnly peut être contournée dans certaines versions de certains navigateurs et serveurs Web.
Plus de données (natexim)
Plus de données (google)

Les attaques XSS sont si flexibles qu'elles peuvent toujours être exécutées si, par exemple, la fonctionnalité HttpOnly a été utilisée pour masquer le cookie de JS et ETC.
D'autres scénarios possibles incluent le contournement des jetons CSRF, l'exploitation des faiblesses du navigateur, l'usurpation de pages Web internes, etc.

4
Sajjad Pourali

Si cela est fait correctement, HttpOnly empêche un attaquant de voler le cookie. Cependant, ils peuvent toujours effectuer des requêtes Web arbitraires se faisant passer pour les utilisateurs victimes et extraire les réponses. Par exemple, BEEF dispose d'un module pour ce faire.

En d'autres termes, HttpOnly rend les choses plus difficiles pour un attaquant, mais n'arrête pas un attaquant qualifié.

De plus, comme d'autres l'ont souligné, il existe diverses failles qui peuvent permettre à un attaquant d'extraire un cookie HttpOnly.

Conclusion - tous les XSS sont potentiellement graves et vous devez corriger les failles XSS.

4
paj28

Oui. La plupart. L'en-tête empêche le "Cookie Stealing" qui est un moyen facile pour un script de détourner votre session.

Cela dépend également si votre navigateur prend en charge l'en-tête HTTPonly. Sinon, il est ignoré et la fonctionnalité qu'il crée ne se produit jamais.

Voici un lien expliquant un peu plus l'en-tête. Il contient également un tableau indiquant les navigateurs qui le prennent en charge: https://www.owasp.org/index.php/HttpOnly

2
DCIndieDev