OPENER – La vulnérabilité sous-estimée

OPENER – La vulnérabilité sous-estimée

Résumé

La vulnérabilité opener est basée sur un manque de sécurisation des liens externes. Le code suivant montre un exemple simple de lien externe vulnérable.

Capture 1 – Lien externe vulnérable

Un lien externe est facilement reconnaissable, celui-ci contient l’attribut . Quand un lien a cet attribut, il s’ouvrira dans un nouvel onglet.

L’ouverture d’un lien dans un nouvel onglet semble être sécurisée. Mais si l’on regarde le contexte JavaScript du nouvel onglet, il est possible de trouver deux fonctions assez sensibles :

  • document.referrer
  • opener.location.href

L’objet « document.referrer » donne l’url d’où provient l’utilisateur.
L’objet « opener.location.href » donne un accès à l’onglet parent.
L’onglet enfant peut utiliser l’objet « opener » afin de rediriger l’onglet parent vers une page contrôlée par un attaquant. Cette page peut être une copie conforme du site et réclamer une authentification.

Exploitation

Pour le « use case » le site web vuln-opener.nes-lab.intra est vulnérable à « opener » :

Capture 2 – Lien externe avec protection Same Origin Policy (SOP)

Le domaine malveillant h4ck3r-fr0m-sp4c3.intra contient le code suivant:

Capture 3 – Code malicieux

Quand l’utilisateur clique sur le lien, un nouvel onglet est ouvert. Le nouvel onglet va charger le code JavaScript:

  1. Le lien n’est pas sécurisé avec la propriété « noopener », l’objet « opener » n’est donc pas « null »
  2. Le nouvel onglet va ensuite rediriger l’onglet parent vers un domaine contrôlé par l’attaquant. (document.referrer contient l’url de l’onglet parent)
  3. Le nouvel onglet affiche un message quelconque

Capture 4 – Redirection malicieuse

L’onglet parent est désormais contrôlé par l’attaquant :

Capture 5 – Page contrôlée par l’attaquant

Un attaquant peut utiliser cette vulnérabilité afin de dérober les identifiants de connexion du site web vulnérable en créant une fausse page d’authentification.

Remarque
La vulnérabilité peut être découverte si l’utilisateur est vigilant et qu’il prête attention à l’url.

 

Correctif

Afin de se protéger contre cette vulnérabilité, il est nécessaire d’ajouter la propriété  à tous les liens externes .

Remarque
Chrome bloque opener si la propriété rel contient noopener ou noreferrer. Nous vous recommandons néanmoins de mettre les deux mots clés.

 

Capture 6 – Lien externe sécurisé

Capture 7 – Lien externe sécurisé

Si vous êtes vulnérable et que vous ne pouvez pas modifier tous les liens, vous pouvez utiliser le correctif temporaire suivant :

Capture 8 – Sécurisation des liens à la volée

Article écrit par Guillaume NUEL