Aller au contenu

Blocage navigateur attaque window opener

1️⃣ Comment les navigateurs modernes ont corrigé ce problème 🛡️⚓︎

Les navigateurs modernes, comme Chrome, Firefox, et Safari, ont mis en place plusieurs mécanismes pour empêcher ce genre de vulnérabilité.

A. Blocage automatique de window.opener avec target="_blank" 💡⚓︎

Dans les versions récentes des navigateurs, quand un lien utilise target="_blank", certains d'entre eux vont automatiquement empêcher l'accès à window.opener si le site n'a pas explicitement défini rel="noopener".

  • Google Chrome a ajouté la sécurité "noopener" par défaut dans certaines versions.
  • Firefox a suivi en désactivant la capacité de modifier la page d'origine via window.opener dans ses versions récentes.
  • Safari met également en place une protection par défaut.

Cela signifie que dans ces navigateurs, même si tu ouvres un lien avec target="_blank", il n'y a plus de lien direct vers la page parent (donc impossible d’exécuter window.opener).


B. Option noopener et noreferrer renforcées 💪⚓︎

Les navigateurs n'ont pas seulement bloqué l'accès à window.opener en utilisant target="_blank", mais ils encouragent également l'usage des attributs rel="noopener" et rel="noreferrer" :

  • noopener : empêche l'accès au window.opener.
  • noreferrer : en plus de l'effet de noopener, cela supprime les informations de référence (referrer) lorsqu'une page est ouverte dans un nouvel onglet, ce qui empêche le site cible de savoir d'où l'utilisateur vient (utile pour la confidentialité).

Si tu ajoutes ces attributs à tes liens externes, tu augmentes la sécurité de manière significative.


C. Sécurité des fenêtres pop-up 🛑⚓︎

Les navigateurs modernes bloquent aussi par défaut les pop-ups non sollicités. Cela empêche l’ouverture automatique de nouvelles fenêtres malveillantes.


2️⃣ Schéma étape par étape de l’attaque et de la protection⚓︎

Voici un schéma visuel étape par étape pour te montrer l’évolution de l’attaque et la manière dont les navigateurs modernes protègent contre cela.


Étape 1: Le lien malveillant sans protection⚓︎

  • Site A : Lien avec target="_blank", mais sans rel="noopener" (Vulnérable)
<a href="https://site-malveillant.com" target="_blank">Visiter notre partenaire</a>

Ce qui se passe : L'onglet A (site légitime) ouvre un autre onglet avec le site B. Ce site malveillant peut accéder à window.opener et rediriger l'onglet A vers un site de phishing.


Étape 2: L'attaque par tabnabbing⚓︎

  • Le site B redirige l'onglet A vers un site de phishing.
if (window.opener) {
  window.opener.location = "https://faux-site-banque.com";
}

Ce qui se passe : Le site malveillant prend le contrôle de l'onglet A, en le redirigeant vers un faux site bancaire. L'utilisateur pense qu'il est toujours sur le site légitime.


Étape 3: Protection moderne (rel="noopener")⚓︎

  • Le lien de Site A devient plus sécurisé en ajoutant rel="noopener" :
<a href="https://site-externe.com" target="_blank" rel="noopener">Visiter notre partenaire</a>

Ce qui se passe : Le site malveillant n'a plus accès à window.opener et ne peut pas manipuler l'onglet A. Le lien s'ouvre normalement dans un nouvel onglet sans risque.


Étape 4: Protection renforcée (rel="noopener noreferrer")⚓︎

  • Encore plus de sécurité en ajoutant noreferrer :
<a href="https://site-externe.com" target="_blank" rel="noopener noreferrer">Visiter notre partenaire</a>

Ce qui se passe : En plus d’empêcher l'attaque par tabnabbing, le site B ne reçoit aucune information sur l'origine de l'utilisateur. Cela augmente la confidentialité et la sécurité.


Visualisation schématique⚓︎

Avant Protection :
[ Onglet A (site légitime) ]   --->   [ Onglet B (site malveillant) ]
       (Clique sur lien)                 (Modifie l'onglet A avec window.opener)
       (Redirection vers phishing)

Après Protection :
[ Onglet A (site légitime) ]   --->   [ Onglet B (site malveillant) ]
       (Clique sur lien)                 (Pas de manipulation possible)
       (L'onglet B ne peut rien changer à l'onglet A)

Résumé des bonnes pratiques :⚓︎

Étape Action Sécurité
Sans Protection target="_blank" sans rel="noopener" Risque élevé de tabnabbing
Avec Protection target="_blank" rel="noopener" Empêche l'accès à window.opener
Protection Renforcée target="_blank" rel="noopener noreferrer" En plus de bloquer window.opener, empêche la transmission de l'URL source

Conclusion 🌟⚓︎

Les navigateurs modernes ont fait un bon travail pour bloquer les attaques par tabnabbing, mais il est toujours important de mettre en œuvre des pratiques sécurisées lors de la création de liens externes.