Alertes Microsoft Defender sur Twitch.tv (Wacatac.B!ml / Malgent) : faux positif, diagnostic et solutions

Alerte Defender à l’ouverture de Twitch.tv ? Voici une analyse complète, des scripts prêts à l’emploi et des méthodes concrètes pour diagnostiquer, confirmer le faux positif probable et éviter les notifications répétées – sans affaiblir la sécurité de votre poste.

Sommaire

Vue d’ensemble du problème

Depuis le 12 décembre 2024, de nombreux utilisateurs observent un comportement inhabituel : l’ouverture de Twitch.tv dans Firefox, Chrome ou Edge dépose dans le cache du navigateur un fichier GZip contenant un JavaScript fortement obfusqué. Microsoft Defender signale alors, parfois à quelques minutes ou heures d’intervalle :

  • Trojan:Script/Wacatac.B!ml, puis
  • Trojan:Win32/Malgent.

Fait marquant : seul le passage sur Twitch déclenche l’alerte. Les analyses croisées (Malwarebytes, autres antivirus) ne confirment pas d’infection active, et aucun indice d’exécution ou de persistance n’est relevé. Le script en cause est servi via le CDN de Twitch (k.twitchcdn.net) et serait lié à du contenu dynamique et/ou à des changements d’interface (UI bêta) déployés peu avant l’apparition des alertes.

À retenir rapidement : tout converge vers un faux positif isolé à Defender provoqué par un JS lourdement obfusqué mis en cache. Le fichier est passif (dans le cache), supprimé automatiquement, et les contrôles croisés ne détectent rien d’autre.

Ce que voient typiquement les utilisateurs

  • Une notification Defender au moment ou peu après une session Twitch.
  • Dans l’Historique de protection : d’abord Trojan:Script/Wacatac.B!ml, puis parfois une seconde alerte Trojan:Win32/Malgent visant le même artefact en cache.
  • Aucune alerte lors de la navigation vers d’autres sites.
  • Aucun symptôme d’infection (pas de lenteurs nouvelles, pas de processus inconnus au démarrage, pas d’installations non sollicitées).

Que signifient « Wacatac.B!ml » et « Malgent » ?

Ces deux noms sont des familles génériques utilisées par Defender :

  • Wacatac.B!ml désigne souvent un script suspect détecté par des modèles heuristiques/ML (Machine Learning). C’est un signal et non la preuve d’un malware fonctionnel.
  • Malgent (« malicious generic ») est un libellé générique côté Win32 qui peut suivre après une première alerte script si le même artefact est re-évalué par un autre moteur de Defender.

Le fait que deux noms différents apparaissent pour le même fichier en cache illustre l’empilement de moteurs chez Defender (temps réel, cloud, heuristiques, ML). Ce n’est pas la preuve d’une exécution du script.

Analyse des causes probables

  • Faux positif : le degré d’obfuscation du script (compressé GZip, minifié, variables aléatoires, contrôle de flux) suffit à déclencher certains modèles heuristiques. Pour un CDN très fréquenté comme k.twitchcdn.net, ce biais est plausible.
  • Contenu dynamique : Twitch embarque des modules tiers, des greffons publicitaires, de la personnalisation par région et parfois des bascules d’interface (UI bêta). Un lot de JS « nouveau » ou réarrangé peut modifier la « signature statistique » perçue par l’antivirus.
  • Absence d’indicateurs d’exécution : l’artefact est un fichier passif stocké dans le cache HTTP. Les alertes survenant avec retard (parfois après la fermeture du navigateur) suggèrent un scan différé du cache, pas une charge active.

Comment reproduire et cadrer le diagnostic

Étape 1 — Confirmer le périmètre

  1. Ouvrez Twitch.tv, laissez charger la page d’accueil et/ou une chaîne, puis fermez le navigateur.
  2. Attendez quelques minutes ; surveillez l’Historique de protection de Defender.
  3. Vérifiez que les autres sites ne déclenchent pas d’alerte similaire.

Étape 2 — Localiser l’artefact en cache

Les caches des navigateurs se trouvent généralement ici (profils par défaut) :

  • Edge : %LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Cache\Cache_Data
  • Chrome : %LOCALAPPDATA%\Google\Chrome\User Data\Default\Cache\Cache_Data
  • Firefox : %LOCALAPPDATA%\Mozilla\Firefox\Profiles\<profil>\cache2\entries

Dans de nombreux cas signalés, le fichier incriminé présente une taille de 74 773 octets et un SHA‑256 : 7437878a7a3b63af71b1d79efb8dc2ca9d739b2a15f1db99758b24606c68f1ab. Les valeurs peuvent varier au fil des déploiements Twitch, mais servent de repère.

Étape 3 — Vérifier via PowerShell (recherche, taille et hash)

Le script ci‑dessous balaie les caches des trois navigateurs et remonte tout fichier de 74 773 octets correspondant à ce hash :

$size = 74773
$hashWanted = '7437878a7a3b63af71b1d79efb8dc2ca9d739b2a15f1db99758b24606c68f1ab'

$paths = @(
"$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache\Cache_Data",
"$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\Cache_Data"
)

Get-ChildItem "$env:LOCALAPPDATA\Mozilla\Firefox\Profiles" -Directory -ErrorAction SilentlyContinue |
ForEach-Object { Join-Path $*.FullName "cache2\entries" } |
ForEach-Object { if (Test-Path $*) { $paths += $_ } }

$matches = foreach ($p in $paths) {
if (Test-Path $p) {
Get-ChildItem $p -File -Recurse -ErrorAction SilentlyContinue |
Where-Object { $*.Length -eq $size } |
ForEach-Object {
$h = (Get-FileHash -Algorithm SHA256 $*.FullName).Hash
if ($h -eq $hashWanted) {
[PSCustomObject]@{
BrowserPath = $p
File        = $*.FullName
Size        = $*.Length
SHA256      = $h
}
}
}
}
}

$matches | Format-Table -AutoSize 

Si vous souhaitez inspecter le contenu (à vos risques, hors exécution), vous pouvez le décompresser dans un répertoire d’analyse :

function Expand-Gzip {
  param(
    [Parameter(Mandatory=$true)][string]$InputPath,
    [Parameter(Mandatory=$true)][string]$OutputPath
  )
  $in  = [System.IO.File]::OpenRead($InputPath)
  try {
    $gz  = New-Object System.IO.Compression.GzipStream($in, [IO.Compression.CompressionMode]::Decompress)
    $out = [System.IO.File]::Create($OutputPath)
    $buf = New-Object byte[] 4096
    while (($read = $gz.Read($buf,0,$buf.Length)) -gt 0) { $out.Write($buf,0,$read) }
    $out.Close(); $gz.Close()
  } finally { $in.Close() }
}

# Exemple d'usage :

# Expand-Gzip -InputPath "C:\chemin\vers\fichier_cache" -OutputPath "C:\Temp\twitch.js"

Important : ne double‑cliquez pas le fichier. L’objectif est de constater la présence d’un artefact passif dans le cache et de laisser Defender le gérer. Évitez toute exécution directe d’un contenu inconnu.

Solutions et bonnes pratiques

ObjectifAction recommandéeDétails utilesRemarques
Confirmer le faux positifSoumettre l’artefact à Microsoft Security Intelligence (portail « File Submission »).Joindre le fichier suspect et préciser qu’il provient du cache navigateur après visite de Twitch.tv. Le centre ajuste rapidement les signatures en cas d’erreur.Conservez l’ID de soumission pour suivi. Évitez d’inclure des données personnelles.
Éviter les alertes1) Éviter Twitch jusqu’à correction.
2) Laisser Defender supprimer automatiquement le fichier en cache.
Mesure préventive simple ; aucune autre trace n’est laissée sur le système.Inutile de créer des exclusions Defender : mieux vaut rester protégé.
Vérifier manuellementRechercher le fichier taille 74 773 octets / hash indiqué dans les caches Edge/Chrome/Firefox.Utiliser le script PowerShell fourni ci‑dessus.Les valeurs peuvent évoluer. Si aucun match : le lot JS servi a déjà changé.
Rassurer les utilisateursEffectuer un scan complet avec un second antivirus et contrôler l’intégrité système.L’absence de détection croisée renforce l’hypothèse de faux positif.Conserver les journaux Defender et le rapport de l’autre AV.
Inciter à la correctionSignaler le cas au support Twitch (canaux officiels, forums communautaires).Plus les retours sont nombreux, plus vite le script incriminé sera remplacé côté Twitch/CDN.Décrire votre contexte : pays, navigateur, extensions (ad‑block, dark‑mode, etc.).

Pourquoi un faux positif est plausible ici

  • Obfuscation extrême : les heuristiques ML pondèrent la « lisibilité » d’un code. Un JS compressé/minifié/obfusqué peut paraître « hostile » au modèle sans l’être.
  • Variabilité CDN : un même endpoint CDN peut livrer des variantes (A/B testing, région, langue). Une signature « rare » peut émerger temporairement.
  • Signal retardé : la détection survenant lorsqu’un scan du cache s’exécute (ou lors d’une mise à jour de signatures) colle avec un artefact non exécuté.
  • Aucune persistance : ni tâche planifiée, ni clé de démarrage, ni binaire inconnu ; uniquement un objet cache supprimé par l’AV.

Procédure d’investigation locale (5 minutes)

  1. Historique de protection : relevez la date, l’heure, le nom de détection et le chemin du fichier.
  2. Cache navigateur : confirmez la présence/absence du fichier aux emplacements cités.
  3. Analyse croisée : lancez un scan complet avec un autre moteur réputé.
  4. Journalisation : notez extension(s) actives pendant la visite de Twitch (ad‑block, anti‑tracking, dark‑mode, etc.).
  5. Mise à jour : appliquez les dernières définitions de Defender et redémarrez.

Mesures d’hygiène à conserver

  • Maintenir Windows, le navigateur et Defender à jour (les faux positifs connus sont généralement corrigés via de nouvelles signatures).
  • Désactiver temporairement les extensions non essentielles lors du diagnostic.
  • Nettoyer périodiquement le cache si l’on souhaite éviter des détections résiduelles : dans Edge/Chrome/Firefox → Paramètres → Confidentialité → Effacer les données de navigation → « Images et fichiers en cache » (période : « Depuis toujours » pour un reset total).
  • Ne pas créer d’exclusion Defender sur le répertoire de cache : vous masqueriez de futures alertes légitimes.

Différencier faux positif et compromission réelle

IndicateurFaux positif probableCompromission possibleAction
Source du fichierCache navigateur, CDN reconnuRépertoire système ou profil utilisateur sensibleIsoler la machine si hors cache
TemporalitéAlertes après visite Twitch uniquementAlertes aléatoires, multi‑sites ou au démarrageEnquête élargie (journaux, réseau)
Détections croiséesAucune autre solution n’alertePlusieurs moteurs confirmentSuivre procédures de remédiation
PersistanceAucune (quarantaine/suppression du cache)Tâches planifiées, clés Run, services inconnusInventaire démarrage / suppression contrôlée
ComportementAucun symptôme visibleProcessus suspects, réseau inhabituelIsolation réseau, forensique

Cheat‑sheet d’actions rapides

  1. Mettre à jour Defender et redémarrer.
  2. Laisser Defender supprimer l’artefact en cache (ne pas restaurer inutilement).
  3. Soumettre le fichier au portail « File Submission » de Microsoft Security Intelligence pour correction de signature.
  4. Éviter Twitch quelques jours le temps que le CDN renouvelle le bundle JS.
  5. Revenir tester, puis surveiller l’Historique de protection : l’alerte doit disparaître progressivement.

Scripts et commandes utiles

Lister les fichiers suspects par navigateur

# Edge / Chrome
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache\Cache_Data" -File -Recurse -ErrorAction SilentlyContinue |
  Select-Object FullName, Length, LastWriteTime |
  Sort-Object LastWriteTime -Descending |
  Select-Object -First 10

Get-ChildItem "$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\Cache_Data" -File -Recurse -ErrorAction SilentlyContinue |
Select-Object FullName, Length, LastWriteTime |
Sort-Object LastWriteTime -Descending |
Select-Object -First 10

# Firefox (tous profils)

Get-ChildItem "$env:LOCALAPPDATA\Mozilla\Firefox\Profiles" -Directory -ErrorAction SilentlyContinue |
ForEach-Object {
$p = Join-Path $*.FullName "cache2\entries"
if (Test-Path $p) {
Get-ChildItem $p -File -ErrorAction SilentlyContinue |
Select-Object @{n='Profile';e={$*.Directory.Parent.Parent.Name}},
FullName, Length, LastWriteTime |
Sort-Object LastWriteTime -Descending |
Select-Object -First 10
}
} 

Calculer un hash d’un fichier en particulier

Get-FileHash -Algorithm SHA256 "C:\Chemin\vers\le\fichier" | Format-List

Nettoyer proprement le cache sans brider la sécurité

# Fermeture douce des navigateurs
Get-Process *chrome*,*msedge*,*firefox* -ErrorAction SilentlyContinue | Stop-Process -Force

# Suppression des répertoires de cache (Edge/Chrome)

$ec = @(
"$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\Cache\Cache_Data",
"$env:LOCALAPPDATA\Google\Chrome\User Data\Default\Cache\Cache_Data"
)
$ec | ForEach-Object { if (Test-Path $*) { Remove-Item $* -Recurse -Force -ErrorAction SilentlyContinue } }

# Suppression des entrées Firefox (tous profils)

Get-ChildItem "$env:LOCALAPPDATA\Mozilla\Firefox\Profiles" -Directory -ErrorAction SilentlyContinue |
ForEach-Object {
$p = Join-Path $_.FullName "cache2\entries"
if (Test-Path $p) { Remove-Item $p -Recurse -Force -ErrorAction SilentlyContinue }
} 

Bonnes pratiques d’organisation (DSI / Helpdesk)

  • Message type aux utilisateurs : « Nous observons une alerte Defender liée à un fichier de cache provenant de Twitch. Elle ne signale pas d’infection active. Microsoft travaille à l’ajustement des signatures. »
  • Playbook : mise à jour des définitions, vérification des caches, scan croisé, absence d’exclusions, remontée au centre sécurité.
  • Veille : suivre les corrections de signature et contrôler la baisse des incidents au fil des jours.

FAQ

« Puis‑je ignorer l’alerte ? » — Laissez Defender faire son travail : suppression en quarantaine du fichier cache. Inutile d’ajouter une exclusion.

« Pourquoi l’alerte revient‑elle ? » — Tant que la ressource JS obfusquée est servie par le CDN, elle peut réapparaître au prochain passage sur Twitch. Les mises à jour de signatures ou le remplacement du bundle côté Twitch règlent généralement le problème.

« Dois‑je formater mon PC ? » — Non, pas en l’état. L’artefact est passif, localisé au cache, et les contrôles croisés ne signalent pas d’anomalie.

« Et si d’autres moteurs détectent aussi ? » — Si plusieurs moteurs confirment et que des signes de persistance apparaissent, enclenchez un plan de remédiation standard (isolation réseau, analyse approfondie, restauration si nécessaire).

Informations complémentaires utiles

  1. Définitions Defender : des faux positifs comparables (extensions VPN/antipub) ont déjà été résolus par simple mise à jour des signatures. Installer quotidiennement les dernières définitions corrige fréquemment la situation sous 24–48 h.
  2. Absence de risque immédiat : un fichier présent uniquement dans le cache, jamais exécuté, ne compromet pas le système ; laissez Defender le supprimer.
  3. Surveillance : garder un œil sur le Historique de protection après chaque navigation sur Twitch pour confirmer la disparition progressive des alertes.
  4. Hygiène générale :
    • Navigateur, extensions, OS et antivirus à jour.
    • Désactivation temporaire des extensions non indispensables pendant le diagnostic.
    • Nettoyage régulier du cache si l’on veut éviter les détections résiduelles.

Exemple de rapport d’incident (motif « faux positif »)

Contexte : Alerte Defender après visite de Twitch.tv
Hôte     : NOM-POSTE (Windows 11 / Defender à jour)
Navig.   : Edge 129, extensions : uBlock, Dark Reader
Horodat. : 2024-12-12 21:43:12
Détect.  : Trojan:Script/Wacatac.B!ml (puis Win32/Malgent)
Chemin   : %LOCALAPPDATA%\...\Cache\Cache_Data\...
Taille   : 74 773 octets
SHA-256  : 7437878a7a3b63af71b1d79efb8dc2ca9d739b2a15f1db99758b24606c68f1ab
Actions  : Fichier mis en quarantaine puis supprimé. Scan croisé (Malwarebytes) : RAS.
Conclusion : Faux positif probable lié à un JS obfusqué en cache CDN. Aucune persistance. Suivi : maj signatures + soumission échantillon.

Conclusion

Les éléments disponibles (localisation en cache, détection décalée, absence de persistance et d’alertes croisées) orientent clairement vers un faux positif isolé à Microsoft Defender lié à un bundle JavaScript très obfusqué servi par le CDN de Twitch. La conduite à tenir est simple et sûre : rester à jour, laisser Defender supprimer l’artefact, soumettre l’échantillon aux équipes Microsoft, éviter Twitch le temps que les signatures et/ou le bundle évoluent, puis vérifier la disparition progressive des notifications. Inutile de désactiver la protection ni de créer des exclusions risquées : votre posture de sécurité demeure intacte.


Résumé express : pas d’indice d’infection réelle. Les preuves convergent vers un faux positif déclenché par un script obfusqué mis en cache lors de l’accès à Twitch. La meilleure réponse : soumission à Microsoft, mises à jour quotidiennes, nettoyage éventuel du cache, et patience jusqu’à correction côté signatures/CDN.

Sommaire