Explorer
KNOW-ANT-017

Anti-Pattern : Fingerprinting de wallets crypto navigateur sans consentement

Domaine
cybersecu
Type
anti-pattern
Priorité
P2

Parent : [[INDEX-CYBERSECU]]

Anti-Pattern : Fingerprinting de wallets crypto navigateur sans consentement

Description

Scanner la présence de wallets crypto (window.phantom, window.ethereum, window.web3) dans le navigateur de l'utilisateur sans son consentement, via un script caché (déguisé en ImageCarouselManager), et envoyer ces informations au backend (/web3stats/collect) avec le user-agent, l'IP et le session_id. Cette technique permet d'identifier les utilisateurs possédant des wallets crypto pour des attaques ciblées ultérieures (phishing, vol de clés).

Exemple réel - Archive Ygg

// sci.js — detection de wallets (lignes 443-489)
const isPhantomInstalled = window.phantom?.solana?.isPhantom;
const provider = window.ethereum || window.web3?.currentProvider;

if (isPhantomInstalled || provider) {
  const walletType = isPhantomInstalled ? 'Phantom' : detectWalletType(provider);
  await sendWeb3Info(walletType); // POST → /web3stats/collect
}

function detectWalletType(provider) {
  const walletTypes = {
    isPhantom: 'Phantom',
    isMetaMask: 'MetaMask',
    isTrust: 'Trust Wallet',
    isCoinbaseWallet: 'Coinbase Wallet',
    isWalletConnect: 'WalletConnect'
  };
  return Object.entries(walletTypes)
    .find(([key]) => provider[key])?.[1] || 'Unknown Wallet';
}

Backend : Web3stats.php (controller CodeIgniter, clé d'accès d3ShGIbbX3) Tableau de bord : /web3stats?key=d3ShGIbbX3

Conséquences

  • Profiling : Identification des utilisateurs possédant des wallets
  • Ciblage : Phishing, attaques de clés privées
  • Vol d'actifs : Préparation d'attaques de social engineering
  • Violation de vie privée : Collecte non-consentie d'informations sensibles

Quand c'est acceptable

JAMAIS sans consentement explicite. Acceptable uniquement après opt-in clair (ex : "Autoriser la connexion wallet").

Solution

  • Pas de scan automatique des wallets sans action utilisateur
  • Consentement explicite avant toute connexion wallet
  • Pas de collecte du type de wallet sans raison
  • Site ne collecte pas le type de wallet, uniquement l'adresse (si nécessaire)
  • Anonymisation des données (hash de l'adresse)

Voir KNOW-PAT-073 — Fingerprinting de wallets crypto navigateur.

Références

  • Archive Ygg : sci.js, Web3stats.php (YGGLeak)
  • OWASP : Privacy Risks