Attaque par tabnabbing utilisant window.opener
exemple concret et simple d’attaque par tabnabbing utilisant window.opener.
🎯 Contexte⚓︎
- Site A : un site légitime (blog, forum, site scolaire, etc.)
- Site B : un site malveillant
- Le site A ouvre le site B dans un nouvel onglet
1️⃣ Code sur le site légitime (Site A)⚓︎
<a href="https://site-malveillant.com" target="_blank">
Visiter notre partenaire
</a>
⚠️ Problème : il manque rel="noopener"
➡️ Le site malveillant aura accès à window.opener
2️⃣ Ce que fait le site malveillant (Site B)⚓︎
Quand l’utilisateur ouvre le lien, le site B s’exécute dans un autre onglet et contient ce script :
if (window.opener) {
window.opener.location = "https://faux-site-banque.com";
}
3️⃣ Ce que voit l’utilisateur 👀⚓︎
- L’utilisateur clique sur le lien
- Un nouvel onglet s’ouvre (site B)
- Il revient plus tard à l’onglet d’origine
-
L’onglet a changé et affiche :
-
un faux site de banque
- ou un faux formulaire de connexion
- ou une page demandant un mot de passe
👉 L’utilisateur pense être toujours sur le site légitime
4️⃣ Pourquoi ça marche ?⚓︎
- L’URL semble correcte
- L’onglet est le même
- Le design imite le vrai site
- L’utilisateur ne se méfie pas
🎣 C’est une attaque de phishing indirect
5️⃣ Exemple visuel du danger⚓︎
[ Onglet 1 ] Blog légitime ❌ → devient Faux site bancaire
[ Onglet 2 ] Site malveillant
6️⃣ Comment bloquer totalement cette attaque ✅⚓︎
✔️ Solution simple⚓︎
<a href="https://site-externe.com"
target="_blank"
rel="noopener noreferrer">
➡️ Résultat côté site malveillant :
window.opener === null
❌ Impossible de rediriger ou manipuler l’onglet d’origine
7️⃣ Bonnes pratiques à retenir 🔐⚓︎
- Toujours utiliser
rel="noopener"avectarget="_blank" - Ne jamais faire confiance aux sites externes
- Auditer les liens sortants dans les applications web
- Former les utilisateurs aux risques de phishing