Quand votre application Windows maison est signalée comme un virus — gérer les faux positifs de Microsoft Defender et composer avec l'impact sur les performances

· · Microsoft Defender, Antivirus, Faux positif, Signature de code, SmartScreen, Déploiement d'applications, Sécurité, C#, .NET, Développement Windows, Conseil technique

« Sur le poste de notre client, notre application a été traitée comme un virus et supprimée. » Si vous développez et distribuez des applications Windows en interne ou en sous-traitance, ce jour finira par arriver. Une application métier qui fonctionnait normalement hier se retrouve soudainement mise en quarantaine à la suite d’une mise à jour des définitions de Defender. Rien ne se produit sur le poste de développement, alors qu’elle est détectée uniquement dans l’environnement du client. Et pourtant, vous n’avez certainement pas écrit de logiciel malveillant.

Ce n’est pas un incident rare. Les antivirus modernes n’estiment pas la « suspicion » uniquement par correspondance avec des logiciels malveillants connus, mais aussi via l’apprentissage automatique, l’analyse comportementale et la réputation dans le cloud, ce qui fait que la suspicion portée sur un binaire légitime sans historique est structurellement inévitable. Et pour la gestion d’un faux positif, il existe une frontière claire entre ce qu’il faut faire (signaler le faux positif à Microsoft, appliquer une exclusion limitée) et ce qu’il ne faut jamais faire (désactiver l’antivirus, appliquer une exclusion large).

Cet article organise, du point de vue d’un développeur, le mécanisme à l’origine des faux positifs, la prévention possible avant la distribution, la voie de traitement officielle une fois la détection survenue, l’exclusion comme mesure d’urgence dans l’environnement du client ainsi que ses risques, et la façon d’aborder l’autre sujet récurrent : « Defender (MsMpEng.exe) ralentit tout ».

1. L’essentiel d’abord

  • Même une application légitime peut déclencher un faux positif. Depuis 2015, Defender est passé d’un moteur centré sur les signatures statiques à un modèle prédictif utilisant l’apprentissage automatique et la protection cloud ; un fichier inconnu peut ainsi être jugé sur sa « suspicion », même sans correspondance avec un élément malveillant connu.12
  • La voie officielle vers une résolution durable est la soumission du fichier à Microsoft (signalement de faux positif). Soumettez-le en tant que développeur via le portail de soumission d’échantillons de Microsoft Security Intelligence et suivez le verdict. En cas de désaccord avec le verdict, une nouvelle investigation peut être demandée via le formulaire de contact destiné aux développeurs.34
  • Un fichier mis en quarantaine peut être restauré. Depuis l’Historique de protection de la sécurité Windows, ou en ligne de commande avec MpCmdRun.exe -Restore.5
  • Une exclusion n’est qu’une mesure temporaire en attendant le résultat du signalement. Une exclusion est une brèche dans la protection, et Microsoft précise qu’elle doit être utilisée avec parcimonie, pour un problème spécifique, et revue régulièrement. Si vous en ajoutez une, limitez-la au périmètre minimal avec un chemin complet, et conservez une trace.6
  • Le pilier de la prévention est une signature de code cohérente. Microsoft ne propose aucun programme d’enregistrement préalable pour prévenir les faux positifs ; la méthode officiellement recommandée pour accélérer l’identification de la provenance et l’inscription sur la liste des éléments connus est de continuer à signer de façon cohérente avec un certificat d’une autorité de certification racine de confiance.4
  • Un auto-scan avant la mise en production et une soumission préalable réduisent le problème du « zéro historique ». Le scan personnalisé de MpCmdRun.exe permet d’inspecter les livrables, et Microsoft lui-même indique que soumettre un fichier inconnu en tant qu’échantillon permet de commencer à établir sa réputation.78
  • « Defender ralentit tout » commence par une mesure. Utilisez le Performance analyzer (New-MpPerformanceRecording / Get-MpPerformanceReport) pour identifier quels fichiers ou processus sont au cœur de la charge de scan avant d’envisager une solution. Ici aussi, l’exclusion est le dernier recours.910

2. Pourquoi une application légitime est traitée comme un virus

Si l’on continue de penser qu’un antivirus « compare simplement à des motifs de virus connus (signatures) », un faux positif paraît incompréhensible. Mais le Defender actuel ne fonctionne plus ainsi. Microsoft indique clairement qu’en 2015, il est passé d’un moteur basé sur des signatures statiques à un modèle utilisant des technologies prédictives — apprentissage automatique, sciences appliquées et IA.1

La détection se fait sur plusieurs couches. Sur le poste, des modèles d’apprentissage automatique légers, l’analyse comportementale et des heuristiques s’exécutent en premier ; pour un fichier que le poste ne peut trancher seul, les métadonnées sont envoyées à un service de protection cloud, qui renvoie le plus souvent un verdict en quelques millisecondes. Si cela ne suffit toujours pas, le système demande l’envoi d’un échantillon du fichier et le soumet à une analyse cloud, à la détonation (exécution dans un environnement isolé) et à une analyse de type big data. Dans les environnements où le « blocage au premier coup d’œil » (block at first sight) est activé, l’ouverture d’un fichier peut même être temporairement suspendue en attendant le verdict du cloud.211

Ce que cela implique est clair : les éléments pris en compte pour le verdict ne se limitent pas à « une correspondance avec un élément malveillant », ils incluent aussi « un historique d’innocuité ». Les critères de classification de Microsoft mentionnent explicitement une catégorie « Unknown (logiciel non reconnu) », et les avertissements portant sur des programmes peu connus ou peu téléchargés sont présentés comme un système d’alerte précoce pour des logiciels malveillants pas encore détectés. Tous les programmes rares ne sont pas malveillants, mais le risque de la catégorie « inconnu » est élevé pour l’utilisateur moyen — c’est ainsi que Microsoft le présente officiellement.8

Autrement dit, une application maison tout juste publiée est, du point de vue des mécanismes de sécurité de Windows, « un binaire à l’historique nul que personne au monde n’a jamais exécuté ». Et la suspicion s’intensifie lorsque les caractéristiques suivantes s’y ajoutent.

  • Une structure qui dissimule le contenu réel du code. La classification des logiciels malveillants de Microsoft comprend un type « Obfuscator (obfuscation) », où le code et l’intention sont dissimulés pour rendre la détection plus difficile, et les logiciels qui tentent activement d’échapper à la détection des produits de sécurité sont aussi classés comme applications potentiellement indésirables (PUA). Les outils d’obfuscation, les formats auto-extractibles, ou l’empaquetage qui regroupe un runtime dans un seul exe, sont des structures difficiles à distinguer de celles largement utilisées par les logiciels malveillants, et c’est un terrain où même une application légitime attire facilement la suspicion.8
  • Absence de signature, aucun indice pour retracer la provenance. Comme on le verra au chapitre suivant, une signature cohérente est le principal indice utilisé par les enquêteurs pour identifier la provenance.4
  • L’installateur regroupe d’autres logiciels. Un programme qui propose d’installer un logiciel d’un autre éditeur, ou un logiciel non nécessaire au fonctionnement, est classé comme PUA sous « Bundling software ».8

Précisons un point : l’avertissement bleu « Windows a protégé votre PC », qui apparaît juste après un téléchargement, relève d’un mécanisme distinct (Microsoft Defender SmartScreen) de la détection antivirus de Defender. La FAQ développeurs officielle de Microsoft indique explicitement que SmartScreen n’a rien à voir avec l’antivirus Defender.4 Nous avons détaillé SmartScreen et la réputation dans « Pourquoi Windows affiche « Windows a protégé votre PC » », donc commencez par déterminer lequel des deux types d’avertissement vous avez réellement sous les yeux.

3. Prévention possible avant la distribution

3.1. Signature de code cohérente — il n’existe pas de programme d’enregistrement préalable

Il est naturel de se demander : « ne pourrait-on pas s’enregistrer à l’avance sur une liste blanche de Microsoft pour éviter d’être signalé ? » La réponse est non. Microsoft n’accepte aucune demande de développeur pour un enregistrement sur une liste connue ou pour un programme de prévention des faux positifs. À la place, la FAQ officielle recommande de continuer à signer de façon cohérente l’ensemble des fichiers du programme avec un certificat émis par une autorité de certification racine de confiance. Une signature cohérente permet à l’équipe d’investigation d’identifier rapidement la provenance du programme et d’appliquer les connaissances déjà acquises, ce qui peut accélérer l’ajout du programme à la liste des éléments connus, et — bien que moins fréquemment — peut même faire figurer le certificat lui-même sur la liste des éditeurs de confiance.4

Autrement dit, l’effet de la signature est de regrouper « l’historique par fichier » en « historique par éditeur ». Un exécutable dont le hash change à chaque build est, fichier par fichier, « un fichier jamais vu » à chaque fois, mais s’il est signé avec le même certificat, sa provenance reste continue. Pour la mise en œuvre pratique de la signature (types de certificats, Azure Artifact Signing, horodatage), voir l’article sur SmartScreen ci-dessus et « Liste de contrôle minimale de sécurité pour le développement d’applications Windows ».

3.2. Scanner soi-même avant la mise en production

Scanner ses propres livrables de build dans le cadre de la validation de mise en production coûte bien moins cher que de découvrir une détection après qu’elle a déjà touché l’environnement d’un client. Defender fournit l’outil en ligne de commande MpCmdRun.exe, que l’on peut automatiser depuis un script ou une tâche planifiée. Il n’est pas dans le PATH par défaut ; il faut donc se placer dans %ProgramData%\Microsoft\Windows Defender\Platform\<version> (ou %ProgramFiles%\Windows Defender si ce chemin n’existe pas) avant de l’exécuter.7

rem Exécuter depuis une invite de commandes élevée
cd /d "C:\ProgramData\Microsoft\Windows Defender\Platform\<dossier de la version la plus récente>"

rem Scan personnalisé du dossier de release (-ScanType 3)
rem -DisableRemediation : ne pas mettre en quarantaine ni corriger lors d'une détection, afficher seulement le résultat dans la sortie de la commande
MpCmdRun.exe -Scan -ScanType 3 -File "C:\Release\MyApp" -DisableRemediation

Les codes de retour 0 et 2 sont définis, mais ce qui est facile à manquer lorsqu’on utilise cela comme porte de validation, c’est que 0 recouvre non seulement « rien détecté » mais aussi « détecté, et la correction a réussi ». Avec un simple -Scan, on peut se retrouver dans la pire combinaison possible : Defender détecte quelque chose dans le résultat de la release, le met en quarantaine, et le code de retour reste 0 — « propre » — passant ainsi tel quel dans le pipeline. Pour un scan personnalisé, ajoutez -DisableRemediation afin qu’aucune correction ne soit appliquée lors de la détection (le résultat de détection apparaît alors dans la sortie de la commande), et faites en sorte que votre porte de validation ne se limite pas à « arrêter la release et enquêter si 2 est retourné » — vérifiez aussi dans la sortie de commande s’il y a eu détection, et confirmez qu’aucun fichier de sortie n’a disparu.7

3.3. Soumettre à l’avance les fichiers inconnus

Microsoft indique clairement que soumettre un échantillon d’un logiciel inconnu ou suspect « aide à le faire analyser par le système et à commencer à établir sa réputation ».8 Autrement dit, le portail de soumission d’échantillons n’est pas seulement un dernier recours auquel on se tourne après une détection — c’est aussi un outil préventif pour donner à un nouveau binaire sans historique un premier début de réputation. Pour une release majeure — une version majeure, un changement de méthode d’empaquetage, l’adoption d’un outil d’obfuscation, ou tout autre moment où l’apparence extérieure de l’application change de façon substantielle — il vaut la peine de soumettre un échantillon avant de commencer la distribution.

4. La voie de traitement officielle une fois le signalement survenu

4.1. D’abord vérifier les faits — Historique de protection et journal des événements

Commencez par vérifier si un signalement du type « il a disparu » ou « il ne se lance plus » est bien dû à une détection de Defender. Dans l’interface graphique, l’Historique de protection de la sécurité Windows (Protection contre les virus et menaces → Historique de protection) conserve la trace des détections et des mises en quarantaine, et permet de filtrer l’affichage sur les seuls éléments en quarantaine.5

Si vous souhaitez conserver une trace, ou vérifier à distance, utilisez le journal des événements. Les événements de Defender sont enregistrés sous Journaux des applications et des services → Microsoft → Windows → Windows Defender → Operational, et peuvent aussi être récupérés avec Get-WinEvent de PowerShell.12 La détection elle-même est enregistrée sous l’ID d’événement 1116 (logiciel malveillant ou indésirable détecté), et l’action qui en résulte — mise en quarantaine, etc. — sous l’ID 1117.13

# Vérifier les événements de détection (1116) et d'action (1117) de Defender, du plus récent au plus ancien
Get-WinEvent -LogName 'Microsoft-Windows-Windows Defender/Operational' |
    Where-Object { $_.Id -in 1116, 1117 } |
    Select-Object TimeCreated, Id, Message -First 10

À ce stade, notez le nom de la menace (un nom de détection tel que Trojan:Win32/Wacatac.B!ml) ainsi que le chemin et la version du fichier signalé. Votre soumission à Microsoft comme votre explication au client partiront de ces deux informations. La structure d’un nom de détection (type/plateforme/nom de famille) suit la convention de nommage CARO des logiciels malveillants, et un suffixe comme le !ml final peut parfois donner un indice sur l’origine de la détection.14

4.2. Signaler le faux positif à Microsoft

C’est votre solution durable. Soumettez le fichier signalé à tort via le portail de soumission d’échantillons de Microsoft Security Intelligence (microsoft.com/wdsi/filesubmission). La soumission nécessite une connexion, et une fois connecté, vous pouvez suivre l’état du verdict de votre soumission. Les échantillons ne sont pas acceptés par e-mail.3

En tant que développeur, soumettez le fichier en tant que développeur de logiciels (software developer). Attendez que le verdict soit finalisé, et si vous n’êtes pas d’accord avec celui-ci, vous pouvez contacter Microsoft via le formulaire de contact destiné aux développeurs joint au résultat de la soumission, et demander une nouvelle investigation.4 Un fichier soumis est d’abord analysé immédiatement par un système automatisé, et si le fichier a déjà été traité ailleurs, un verdict revient rapidement. Pour les soumissions pas encore traitées, l’analyse priorise les fichiers à large impact ainsi que les soumissions de clients entreprises disposant d’un identifiant Software Assurance.15

Une fois que Microsoft a mis à jour les définitions pour refléter un verdict de faux positif, ce fichier cesse d’être détecté à partir de ce moment. À l’inverse : tant que vous ne le signalez pas, la détection continue dans l’environnement de tous les autres clients, quel que soit le nombre d’exclusions dont vous vous servez pour y remédier temporairement. Il existe aussi une voie possible même pour une détection comportementale qui ne laisse aucun fichier derrière elle : soumettre le fichier de diagnostic (MpSupportFiles.cab) que génère MpCmdRun.exe -GetFiles, et demander une analyse sur cette base.157

Si l’organisation du client a déployé Microsoft Defender for Endpoint (EDR), il existe aussi une voie administrateur : l’administrateur de sécurité du client soumet via la page Soumissions (Submissions) du portail Microsoft Defender et, en parallèle, utilise un indicateur « Autoriser » (Allow) pour supprimer le faux positif dans toute l’organisation.15 Dans ce cas, ne cherchez pas à tout gérer seul — coordonnez-vous avec le service informatique du client.

4.3. Restaurer un fichier mis en quarantaine

Un fichier dont vous êtes certain qu’il s’agit d’un faux positif peut être restauré depuis la quarantaine. Dans l’interface graphique, sélectionnez l’élément dans l’Historique de protection et choisissez « Restaurer ». En ligne de commande, utilisez MpCmdRun.exe.5

rem Lister les éléments en quarantaine
MpCmdRun.exe -Restore -ListAll

rem Restaurer à son emplacement d'origine en indiquant le chemin du fichier mis en quarantaine
MpCmdRun.exe -Restore -FilePath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

Vous pouvez aussi utiliser l’option -Path pour restaurer vers un autre dossier (dans ce cas, l’élément reste également en quarantaine).7 Cela dit, restaurer avant la mise à jour des définitions expose évidemment à un nouveau risque de détection ; en pratique, il est donc plus sûr de procéder dans cet ordre : signalement du faux positif → exclusion temporaire si nécessaire → restauration.

4.4. En cas de détection par un antivirus tiers

Une détection par un EDR ou un antivirus tiers, et non par Defender, ne se résout pas en signalant à Microsoft. Il faut soumettre séparément au canal de signalement de faux positifs propre à l’éditeur du produit qui a détecté le fichier. La plupart des éditeurs proposent un formulaire dédié ; recherchez « <nom de l’éditeur> false positive submission » pour le trouver, et soumettez avec le même nom de détection, le même fichier et les mêmes informations de signature que pour Defender. Si plusieurs produits détectent le fichier en même temps, c’est aussi un signal pour suspecter un facteur du côté du build — obfuscation, packer, ou contenu regroupé.

5. Réponse d’urgence dans l’environnement du client — les exclusions et leurs risques

5.1. La place des exclusions — ce n’est pas une solution permanente

Dans une situation où l’activité du client est bloquée en attendant le verdict du signalement de faux positif, une exclusion Defender devient la mesure d’urgence. Mais il ne faut pas s’y méprendre sur sa nature. Comme Microsoft le rappelle à plusieurs reprises, une exclusion est techniquement une brèche dans la protection, et les principes officiels sont : (1) l’utiliser avec parcimonie, (2) l’utiliser uniquement pour un problème spécifique tel qu’un problème de performance ou de compatibilité applicative, et (3) conserver une trace des raisons qui ont motivé l’exclusion et la revoir régulièrement.6 Notez que l’exclusion décrite ici est spécifiquement une exclusion du scan antivirus de Defender (planifié, à la demande et protection en temps réel). Dans un environnement où Microsoft Defender for Endpoint est déployé, les alertes EDR et d’autres détections peuvent continuer à se déclencher même pour un fichier exclu.16 « J’ai ajouté une exclusion mais je reçois quand même des alertes » correspond à ce comportement attendu, pas à un dysfonctionnement.

Et même en ajoutant une exclusion, suggérer à un client de désactiver la protection en temps réel elle-même, ou Defender dans son ensemble, est hors de question. Les défenses de ce poste chutent alors globalement, y compris face à des menaces qui n’ont rien à voir avec votre application. Avoir demandé un jour à un client de désactiver une fonction de sécurité au nom du traitement d’un faux positif reviendra immanquablement comme un point relevé lors d’un futur audit de sécurité.

5.2. La bonne façon de l’ajouter — chemin complet, périmètre minimal

Une exclusion peut aussi être ajoutée depuis l’interface graphique de la sécurité Windows (Paramètres de protection contre les virus et menaces → Exclusions), mais si vous l’inscrivez dans une procédure documentée, PowerShell est l’option fiable. Gérez la liste d’exclusions avec Add-MpPreference (ajout), Remove-MpPreference (suppression) et Set-MpPreference (remplacement de toute la liste). Set-MpPreference écrase la liste d’exclusions existante, donc utilisez toujours Add-MpPreference pour ajouter une entrée, afin de ne pas effacer les exclusions déjà présentes dans l’environnement du client.16

# Exécuter depuis PowerShell élevé

# Exclusion au niveau du fichier (périmètre minimal -- le chemin complet de l'exécutable, pas un dossier)
Add-MpPreference -ExclusionPath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

# Vérifier les exclusions actuelles
Get-MpPreference | Select-Object ExclusionPath, ExclusionProcess, ExclusionExtension

# Supprimer une fois le faux positif résolu
Remove-MpPreference -ExclusionPath "C:\Program Files\Contoso\ContosoApp\ContosoApp.exe"

-ExclusionPath peut cibler soit un seul fichier, soit un dossier entier, mais indiquer un dossier entraîne l’inclusion de tous les sous-dossiers ; envisagez donc d’abord une exclusion au niveau du fichier.16 L’autre option, -ExclusionProcess, est facile à mal interpréter d’après son nom : elle n’exclut pas le processus indiqué lui-même — elle exclut du scan les fichiers que ce processus ouvre. La consigne officielle est d’utiliser -ExclusionPath si l’on souhaite exclure l’exécutable du processus lui-même.17 Utilisez -ExclusionProcess lorsque les détections ou les problèmes de performance viennent d’une application qui ouvre un grand nombre de fichiers de données, et -ExclusionPath lorsque c’est l’exécutable lui-même qui est mal identifié.

Vous pouvez vérifier qu’une exclusion a bien été appliquée avec MpCmdRun.exe -CheckExclusion -Path <chemin>.7 Dans un environnement géré, l’hypothèse de départ est que les exclusions sont gérées de façon centralisée via Intune ou une stratégie de groupe (Configuration ordinateur → Modèles d’administration → Composants Windows → Antivirus Microsoft Defender → Exclusions), plutôt que définies manuellement sur chaque poste. Microsoft recommande d’utiliser Intune pour définir et modifier les exclusions.1615

5.3. Les exclusions à ne jamais ajouter

Un dossier exclu devient aussi, pour un attaquant, « un endroit que Defender ne regarde pas ». Microsoft énumère explicitement des éléments qui « ne doivent pas être exclus, même si on leur fait confiance et qu’on les croit inoffensifs ».18

  • Exclure un dossier générique tel que C:\, C:\Temp, C:\Users\ ou %Windir%\Temp. Exclure tout un dossier temporaire pour les besoins de sa propre application offre une zone sûre à tous les logiciels malveillants.
  • Exclure par extension, comme .exe, .dll, .tmp ou .zip.
  • Exclure un processus générique, comme cmd.exe, powershell.exe, msbuild.exe ou java.exe.
  • Exclure par simple nom de fichier sans chemin (par exemple ContosoApp.exe). Un logiciel malveillant portant le même nom serait exclu quel que soit son emplacement ; indiquez donc toujours le chemin complet.

En résumé, une exclusion doit être en chemin complet, au périmètre minimal, consignée et limitée dans le temps. Partagez le fait d’avoir ajouté une exclusion, et la raison, avec l’administrateur informatique du client, et supprimez-la une fois confirmé que le verdict du signalement de faux positif est arrivé et que la détection a cessé.

6. Composer avec l’impact sur les performances — « MsMpEng.exe ralentit tout »

À côté des faux positifs, la performance est l’autre sujet récurrent. Symptômes : MsMpEng.exe (l’Antimalware Service Executable) consomme du CPU dans le Gestionnaire des tâches, ou la sortie de fichiers ou les builds de l’application sont lentes. MsMpEng.exe est le service central de l’antivirus Defender, et le comportement par défaut de la protection en temps réel est de scanner de façon synchrone dès qu’un fichier est ouvert (« open now, scan now »).19 Cela signifie qu’une charge de travail qui ouvre et ferme un grand nombre de petits fichiers — builds, écritures de journal fines, usage intensif de fichiers temporaires — déclenche davantage de scans, et sa structure la rend particulièrement exposée à cet impact.

6.1. D’abord mesurer — Performance analyzer

Avant de passer directement de « c’est lent » à « exclure », mesurez ce qui est réellement au cœur de la charge de scan. Defender dispose d’un Performance analyzer dédié : capturez un enregistrement de performance de scan (ETL) avec New-MpPerformanceRecording de PowerShell, et agrégez-le avec Get-MpPerformanceReport.9

# Exécuter depuis PowerShell élevé

# Démarrer l'enregistrement, reproduire l'opération lourde (un build, un traitement par lot, etc.), puis appuyer sur Entrée pour arrêter
New-MpPerformanceRecording -RecordTo .\Defender-scans.etl

# Afficher les fichiers les plus longs à scanner et le détail des scans pour chacun
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 3 -TopScansPerFile 10

Au-delà de -TopFiles / -TopScansPerFile, vous pouvez aussi agréger par processus et par extension, ce qui permet d’identifier précisément quels accès aux fichiers de votre propre application déclenchent des scans. Un point d’attention : la documentation officielle elle-même précise que cet outil sert à obtenir des informations sur les fichiers problématiques — il n’est pas destiné à suggérer des exclusions.10

6.2. Ce qu’on peut faire côté application avant de recourir à une exclusion

Si la mesure montre que le grand volume de fichiers temporaires écrits par votre propre application est au cœur du scan, il existe une marge de manœuvre pour revoir le schéma d’écriture de l’application avant de recourir à une exclusion. Puisque la protection en temps réel se déclenche à l’ouverture d’un fichier19, des changements de conception comme les suivants réduisent le nombre de scans lui-même.

  • Regrouper un traitement qui ouvre et ferme des milliers de petits fichiers intermédiaires vers l’ajout dans un petit nombre de fichiers, ou vers un traitement en mémoire
  • Réduire le schéma consistant à écrire un fichier temporaire puis à le renommer ou le supprimer de façon répétée
  • Cesser d’ouvrir et de fermer le journal à chaque ligne, et écrire au contraire avec un flux maintenu ouvert

Pour mesurer concrètement quel processus touche quel fichier et à quelle fréquence, Process Monitor s’utilise tel quel. Voir « Le guide pratique de Process Monitor (ProcMon) » pour la marche à suivre.

6.3. Sur un poste de développement, utiliser le mode performance de Dev Drive

Dans le contexte d’un build lent sur poste de développement, le Dev Drive associé au mode performance de Windows 11 est la première option à envisager. Sur un Dev Drive (un volume de développement basé sur ReFS), la protection en temps réel de Defender fonctionne dans un « mode performance » asynchrone. Au lieu de scanner de façon synchrone à l’ouverture du fichier, elle utilise une approche « open now, scan later » qui scanne avec un délai après la fin de l’ouverture, et Microsoft indique que cela améliore les performances tout en conservant une protection nettement supérieure à une technique comme l’exclusion de dossier, qui arrête complètement le scan.19 La démarche standard consiste à déplacer l’arborescence source, le cache de paquets et la sortie de build sur un Dev Drive.20

Cela dit, le mode performance ne fonctionne que sur un Dev Drive, et suppose que la protection en temps réel est activée. De plus, il ne traite pas le symptôme « l’utilisation CPU ou mémoire de MsMpEng.exe est élevée » — ce n’est pas la vocation du mode performance ; dans ce cas, la consigne officielle est d’utiliser le Performance analyzer décrit plus haut pour identifier le processus et le chemin en cause.19

Un dernier point utile à connaître : si les scans à la demande (un scan complet planifié, etc.) deviennent lourds pendant les heures de travail, MpCmdRun.exe -Scan dispose d’un commutateur -CpuThrottling. L’activer applique un plafond (50 % par défaut) à l’utilisation CPU du scan.7 Ce n’est cependant pas un format où l’on passe un nombre au commutateur pour choisir un pourcentage arbitraire. Le plafond lui-même se configure via un paramètre de stratégie (ScanAvgCPULoadFactor), et cette valeur n’est pas une limite stricte — c’est un objectif donné au moteur de scan, signifiant « ne pas dépasser ce pourcentage en moyenne ».21

7. Tableau de décision — actions selon le symptôme

Situation À faire d’abord Solution durable
Détecté juste après votre propre build, sur un poste de développement ou en CI Vérifier le nom de détection et le chemin dans l’Historique de protection ou le journal des événements (1116/1117)13. Vérifier ce qui a changé dans le build (obfuscation, packer, contenu regroupé) Soumettre au portail de soumission d’échantillons en tant que développeur3. Revoir le dispositif de signature. Intégrer un scan pré-release dans la CI
Détecté et mis en quarantaine dans l’environnement du client Vérifier le nom de détection, le fichier, et s’il s’agit de Defender ou d’un produit tiers. Soumettre le signalement de faux positif, et si la perturbation de l’activité est sévère, ajouter une exclusion en chemin complet et restaurer le fichier, avec l’accord du service informatique du client5 Une fois le verdict et la mise à jour des définitions confirmés, supprimer l’exclusion. Pour les clients équipés d’EDR, utiliser aussi la voie administrateur (soumission au portail, indicateur Autoriser)15
Détecté par un antivirus tiers Obtenir du client le nom du produit, sa version et le nom de détection Soumettre au canal de signalement de faux positifs propre à cet éditeur. Si plusieurs éditeurs détectent le fichier, suspecter un facteur côté build
« Windows a protégé votre PC » (SmartScreen) apparaît Confirmer qu’il ne s’agit pas d’une détection virale (un mécanisme distinct de la détection de Defender)4 Mettre en ordre la signature de code et le circuit de distribution (voir l’article sur SmartScreen)
Defender (MsMpEng.exe) est lent / les E/S sont lentes Mesurer avec le Performance analyzer et identifier les fichiers/processus critiques9 Améliorer le schéma d’écriture de l’application. Sur poste de développement, utiliser Dev Drive et le mode performance19. Traiter l’exclusion comme un dernier recours, au périmètre le plus restreint possible6

Ce qui est commun à tous les cas se résume à trois points : d’abord établir les faits (nom de détection, cible, produit ayant détecté), toujours engager la solution durable du signalement, et traiter l’exclusion ou la restauration comme une mesure temporaire limitée au périmètre minimal.

8. Résumé

  • Le Defender actuel ne juge pas par correspondance de signatures, mais via l’apprentissage automatique, la protection cloud et l’historique (réputation). Qu’un nouveau binaire à l’historique nul soit suspecté est une conséquence inhérente à cette conception, et une structure qui « dissimule son contenu » — obfuscation, auto-extraction — attire encore davantage la suspicion.
  • Le pilier de la prévention est une signature de code cohérente avec un certificat d’une autorité de certification de confiance. Il n’existe pas de programme d’enregistrement préalable pour prévenir les faux positifs. Un auto-scan avec MpCmdRun.exe avant la mise en production, ainsi qu’une soumission d’échantillon préalable pour une release dont l’apparence extérieure change substantiellement, sont également efficaces.
  • Une fois détecté, établissez le nom de détection et la cible à l’aide de l’Historique de protection et du journal des événements (ID 1116/1117), et soumettez via le portail de soumission d’échantillons de Microsoft Security Intelligence en tant que développeur. Un fichier mis en quarantaine peut être restauré depuis l’Historique de protection ou avec MpCmdRun.exe -Restore.
  • Une exclusion est une mesure temporaire en attendant le verdict du signalement. Chemin complet, périmètre minimal, trace conservée, suppression une fois résolu. Exclure un dossier temporaire, une extension ou un processus générique est strictement à proscrire, car cela crée une cachette pour des logiciels malveillants.
  • Pour un problème de performance, mesurez d’abord avec le Performance analyzer, envisagez d’améliorer le schéma d’écriture de l’application et le mode performance de Dev Drive, et ne pensez à une exclusion limitée que si elle reste nécessaire après cela. Demander à un client de désactiver la protection en temps réel est hors de question.

Articles connexes

Domaines de conseil associés

KomuraSoft LLC assure le conseil sur la définition d’une politique de réponse aux faux positifs et aux avertissements SmartScreen sur les applications distribuées, la conception d’un dispositif de distribution et de mise à jour incluant la signature de code, ainsi que la mesure et le diagnostic des problèmes de performance causés par les antivirus.

Références

  1. Microsoft Learn, Microsoft Defender Antivirus in Windows Overview. Sur le passage en 2015 d’un moteur basé sur des signatures statiques vers un modèle prédictif utilisant l’apprentissage automatique, les sciences appliquées et l’IA, ainsi que sur la détection d’anomalies et la protection basée sur le comportement.  2

  2. Microsoft Learn, Cloud protection and sample submission at Microsoft Defender Antivirus. Sur les modèles d’apprentissage automatique sur l’appareil, l’analyse comportementale et les heuristiques ; l’envoi de métadonnées à la protection cloud (verdict souvent rendu en quelques millisecondes) ; et la structure multicouche de la soumission d’échantillons, de la détonation et de l’analyse big data.  2

  3. Microsoft Learn, Submit files for analysis. Sur la possibilité de soumettre un fichier faux positif via le portail de soumission d’échantillons (microsoft.com/wdsi/filesubmission), la soumission nécessitant une connexion avec un statut consultable, et le fait que les échantillons ne sont pas acceptés par e-mail.  2 3

  4. Microsoft Learn, Software developer FAQ. Sur l’absence d’enregistrement sur une liste connue ou de programme de prévention des faux positifs, sur le fait qu’une signature cohérente avec un certificat d’autorité de certification racine de confiance accélère l’identification de la provenance et l’ajout à la liste des éléments connus, sur la soumission en tant que développeur et la contestation d’un verdict via le formulaire de contact développeurs, et sur le fait que SmartScreen est un mécanisme distinct de l’antivirus Defender.  2 3 4 5 6 7

  5. Microsoft Learn, Restore quarantined files in Microsoft Defender Antivirus. Sur la vérification et la restauration des éléments en quarantaine depuis l’Historique de protection de la sécurité Windows, et la procédure de liste et de restauration de la quarantaine avec MpCmdRun.  2 3 4

  6. Microsoft Learn, Configure custom exclusions for Microsoft Defender Antivirus. Sur le fait qu’une exclusion est une brèche dans la protection devant être utilisée avec parcimonie, employée uniquement pour un problème spécifique plutôt qu’ajoutée de façon préventive, et nécessitant que sa justification soit consignée et revue régulièrement.  2 3

  7. Microsoft Learn, Configure and manage Microsoft Defender Antivirus with the MpCmdRun command-line tool. Sur l’emplacement de MpCmdRun.exe et l’exigence de droits administrateur ; -Scan (scan personnalisé via -ScanType 3, l’option -File, le code de retour 0 recouvrant à la fois « rien détecté » et « détecté mais correction réussie », et 2 signifiant « détecté, non corrigé / nécessite une action utilisateur / erreur de scan » ; -DisableRemediation qui n’applique pas de correction lors d’une détection et affiche le résultat dans la sortie de commande ; la valeur par défaut de -CpuThrottling à 50) ; -Restore (-ListAll/-Name/-FilePath/-Path) ; -CheckExclusion ; et -GetFiles.  2 3 4 5 6 7

  8. Microsoft Learn, How Microsoft identifies malware and potentially unwanted applications. Sur le fait que les avertissements pour « Unknown (logiciel non reconnu) » sont présentés comme un système d’alerte précoce pour des logiciels malveillants non détectés, que la soumission d’échantillons aide à commencer à établir une réputation, et sur les classifications Obfuscator, Evasion software et Bundling software.  2 3 4 5

  9. Microsoft Learn, Performance analyzer for Microsoft Defender Antivirus. Sur la capture d’un enregistrement avec New-MpPerformanceRecording, la reproduction de l’opération, et la procédure d’analyse avec les options -TopFiles/-TopScansPerFile et similaires de Get-MpPerformanceReport.  2 3

  10. Microsoft Learn, Microsoft Defender Antivirus Performance Analyzer reference. Sur le fait que Performance analyzer est un outil destiné à obtenir des informations sur les fichiers problématiques plutôt qu’à suggérer des exclusions, sur la nécessité de définir les exclusions avec prudence car elles réduisent la protection, et sur l’exigence de droits administrateur.  2

  11. Microsoft Learn, Turn on block at first sight. Sur le fait que le backend cloud juge les fichiers inconnus et suspects via des heuristiques, l’apprentissage automatique et une analyse automatisée pour les bloquer en quelques secondes, et sur le fait que l’ouverture d’un fichier peut être suspendue jusqu’à l’arrivée du verdict. 

  12. Microsoft Learn, Troubleshoot Microsoft Defender Antivirus scan issues. Sur l’emplacement du journal des événements de Defender (Journaux des applications et des services → Microsoft → Windows → Windows Defender → Operational) et la méthode de récupération avec Get-WinEvent. 

  13. Microsoft Learn, Review event logs and error codes to troubleshoot issues with Microsoft Defender Antivirus. Sur la liste des ID d’événements de Defender, dont l’ID 1116 (détection) et 1117 (une action telle que mise en quarantaine ou suppression).  2

  14. Microsoft Learn, Malware names. Sur le fait que les noms de détection suivent la convention de nommage CARO (type/plateforme/nom de famille, etc.). 

  15. Microsoft Learn, Address false positives/negatives in Microsoft Defender for Endpoint. Sur le fait qu’un fichier soumis est d’abord analysé immédiatement par un système automatisé, que les soumissions de fichiers à large impact ou de titulaires d’un identifiant Software Assurance sont prioritaires, sur la soumission de MpSupportFiles.cab pour une détection comportementale, la soumission par un administrateur et l’indicateur « Autoriser », et sur la recommandation d’Intune pour la définition des exclusions.  2 3 4 5

  16. Microsoft Learn, Configure and validate exclusions based on file extension and folder location. Sur les rôles distincts de Set-MpPreference (écrase la liste), Add-MpPreference (ajoute) et Remove-MpPreference (supprime) ; sur ExclusionPath pouvant être défini au niveau du fichier ou du dossier (sous-dossiers inclus) ; sur la configuration via la stratégie de groupe, Intune et outils similaires ; sur la vérification d’une exclusion avec MpCmdRun ; et sur le fait que les alertes EDR et d’autres détections peuvent continuer à se déclencher pour un fichier même après son exclusion du scan antivirus.  2 3 4

  17. Microsoft Learn, Configure exclusions for files opened by processes. Sur le fait qu’ExclusionProcess exclut « les fichiers que le processus spécifié ouvre », et sur l’utilisation d’une exclusion de fichier (ExclusionPath) pour exclure le processus lui-même. 

  18. Microsoft Learn, Common mistakes to avoid when defining exclusions. Sur le fait de ne pas exclure C:\ ou les dossiers de type temp, les extensions comme .exe/.dll/.tmp, les processus génériques comme cmd.exe/powershell.exe/msbuild.exe, ou un nom de fichier sans chemin, et sur le fait qu’un élément exclu peut devenir une cachette pour une menace. 

  19. Microsoft Learn, Protect Dev Drive using performance mode. Sur le fait que le comportement par défaut de la protection en temps réel est un scan synchrone « open now, scan now », que le mode performance offre une protection nettement supérieure à une exclusion de dossier via un scan asynchrone « open now, scan later », qu’il ne fonctionne que sur un Dev Drive et uniquement avec la protection en temps réel activée, et sur l’utilisation de Performance Analyzer pour diagnostiquer une utilisation CPU/mémoire élevée de MsMpEng.exe (WinDefend, l’Antimalware Service Executable).  2 3 4 5

  20. Microsoft Learn, Set up a Dev Drive on Windows 11. Sur le fait que Dev Drive est un volume de développement basé sur ReFS, que le déplacement du code de projet, du cache de paquets et de la sortie de build y est recommandé, et que le mode performance est activé par défaut sur un Dev Drive de confiance. 

  21. Microsoft Learn, Microsoft Defender Antivirus full scan considerations and best practices. Sur le fait que le plafond CPU du scan (ScanAvgCPULoadFactor) n’est pas une limite stricte mais un objectif donné au moteur de scan pour ne pas dépasser cette valeur en moyenne, et sur son application par défaut aux scans planifiés (et en option aux scans personnalisés). 

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

Mon application a été signalée comme un virus par Microsoft Defender. Que dois-je faire ?
Ne vous précipitez pas vers une exclusion ou la désactivation de Defender. La voie officielle vers une résolution durable consiste à soumettre le fichier via le portail de soumission d'échantillons de Microsoft Security Intelligence (sample submission), en tant que développeur de logiciels (software developer). En vous connectant, vous pouvez suivre l'état de votre demande ; une fois le verdict de faux positif rendu, une mise à jour des définitions arrête la détection pour la suite. Un fichier déjà mis en quarantaine peut être restauré depuis l'Historique de protection de la sécurité Windows, ou avec l'option -Restore de MpCmdRun.exe.
Comment signaler un faux positif à Microsoft ?
Soumettez le fichier via le portail de soumission d'échantillons de Microsoft Security Intelligence (microsoft.com/wdsi/filesubmission). La soumission nécessite une connexion, et une fois le fichier envoyé, vous pouvez suivre l'état du verdict sur le portail. Le fichier soumis est d'abord analysé immédiatement par un système automatisé, puis examiné par un analyste si nécessaire. Soumettez-le en tant que développeur ; si vous n'êtes pas d'accord avec le verdict, vous pouvez demander une nouvelle investigation via le formulaire de contact destiné aux développeurs, joint au résultat de la soumission.
Est-il approprié de faire ajouter une exclusion dans l'environnement d'un client ?
Cela peut être une option en tant que mesure temporaire en attendant le résultat du signalement de faux positif, mais cela ne doit jamais devenir la solution permanente. Une exclusion est un réglage qui crée une brèche dans la protection de Defender, et Microsoft lui-même précise qu'elle doit être utilisée avec parcimonie, uniquement pour un problème spécifique, et revue régulièrement. Si vous en ajoutez une, limitez-la au périmètre minimal — le chemin complet de l'exécutable, pas un dossier entier —, conservez une trace de qui l'a ajoutée, pourquoi et jusqu'à quand, et supprimez-la une fois le faux positif résolu. Des exclusions larges comme un dossier entier, C:\Temp, ou une extension telle que .exe reviennent à créer une cachette pour des logiciels malveillants.
La signature de code élimine-t-elle les faux positifs ?
Il n'y a aucune garantie, mais l'effet est important. Microsoft ne propose pas de programme de prévention des faux positifs, comme un enregistrement préalable sur une liste connue ; à la place, sa recommandation est de continuer à signer de façon cohérente avec un certificat émis par une autorité de certification racine de confiance. Une signature cohérente permet à l'équipe d'investigation d'identifier rapidement la provenance du programme, ce qui peut accélérer son ajout à la liste des éléments connus. À l'inverse, un binaire non signé — sans aucun indice de provenance d'une build à l'autre — est systématiquement suspecté depuis zéro, comme un fichier inconnu sans historique.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog