Explorer
KNOW-PAT-051

Extension Chrome malveillante - Distribution et tracking utilisateurs

Domaine
cybersecu
Type
pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Extension Chrome malveillante - Distribution et tracking utilisateurs

Problème

Un site de torrents distribuait une extension Chrome (.crx) qui trackait massivement les utilisateurs : User ID, pseudonyme, IP, timestamps. Les logs montrent une collecte en temps réel (2025-12-25 04:06:07 | User: 13225478 (Tyuito) | IP: ...).

Contexte archive Ygg

  • Fichier : 06e_tracking_users/extension_users.txt
  • Fichier : 06e_tracking_users/honeypot_turbo.txt
  • Extension : navigateurs/extension_crx.zip
  • Users trackés : milliers d'entrées avec ID + Nickname + IP

Technique de l'attaquant

  1. Distribution : Extension Chrome packagée (.crx), distribuée via le site
  2. Collecte : Injection de script content-script qui lit le DOM/API interne
  3. Exfiltration : Envoi des données (User ID, pseudo, IP) vers endpoint externe
  4. Corrélation : Association ID utilisateur ↔ IP ↔ timestamp pour profiling complet

Comment se protéger (Pattern protectif)

1. Détection d'extension malveillante

// Détecter si une extension Chrome non autorisée est installée
function detectUnauthorizedExtensions() {
  const knownBadExtensions = [
    'extension_id_malveillant_1',
    'extension_id_malveillant_2'
  ];
  
  // Vérifier via chrome.management (nécessite permission)
  if (typeof chrome !== 'undefined' && chrome.management) {
    chrome.management.getAll(extensions => {
      const suspicious = extensions.filter(ext => 
        knownBadExtensions.includes(ext.id) || 
        ext.permissions.includes('webRequest') && ext.permissions.includes('<all_urls>')
      );
      if (suspicious.length > 0) {
        console.warn('Extension suspecte détectée:', suspicious.map(e => e.name));
      }
    });
  }
}

2. Protection côté site web

// Détecter si le DOM est manipulé par un content script
const observer = new MutationObserver(mutations => {
  mutations.forEach(mutation => {
    mutation.addedNodes.forEach(node => {
      if (node.nodeType === 1 && node.hasAttribute('data-extension-injected')) {
        // Script injecté par extension
        reportSuspiciousActivity('extension_injection');
      }
    });
  });
});
observer.observe(document.body, { childList: true, subtree: true });

3. Ne JAMAIS faire confiance aux extensions

  • Règle d'or : Toute extension avec accès <all_urls> + webRequest peut intercepter TOUT le trafic
  • Vérifier : N'installer que depuis Chrome Web Store (pas de .crx externe)
  • Auditer : Reviewer les permissions demandées avant installation

Anti-pattern associé

  • KNOW-ANT-005 — Extension-based user tracking

Signaux d'alerte

  • Extension .crx distribuée hors Chrome Web Store
  • Requêtes réseau vers domaines externes depuis content scripts
  • DOM manipulation inexpliquée (éléments avec data-* attributs suspects)
  • Extension demandant <all_urls> + webRequest + storage

Tests

  • Détecte-t-on les extensions avec permissions dangereuses ?
  • Le site signale-t-il les injections DOM suspectes ?
  • Les utilisateurs sont-ils avertis des extensions non officielles ?

Références