Aller au contenu principal

Optimiser les performances de scan sous Windows

La protection en temps réel de Microsoft Defender, ou un EDR tiers, inspecte chaque fichier ouvert par le scanner. Sur un poste de travail comportant des centaines de milliers de fichiers, un premier scan peut prendre des heures, avec Antimalware Service Executable consommant plus de CPU que le scan lui-même. La solution consiste en une seule exclusion de processus pour ggshield-py.exe, le processus qui exécute le scan (ggshield.exe n'est qu'un lanceur).

Exclure le processus du scanner de Microsoft Defender​

Ajoutez une exclusion de processus pour ggshield-py.exe avec le chemin correspondant à votre méthode d'installation. Les caractères génériques couvrent le nom d'utilisateur et le répertoire versionné créé par le script d'installation.

Méthode d'installationExclusion de processus
Script d'installation ou ZIP (par utilisateur)C:\Users\*\AppData\Local\Programs\ggshield\*\ggshield-py.exe
MSI (par machine)C:\Program Files\GitGuardian\ggshield\ggshield-py.exe

Écrivez les chemins par utilisateur avec C:\Users\* : Microsoft Defender résout %LOCALAPPDATA% et %USERPROFILE% vers le profil du compte système, et non celui de l'utilisateur.

attention

Microsoft Defender ne scanne plus les fichiers ouverts par ce processus, alors limitez l'exclusion à ggshield-py.exe et n'ajoutez pas d'exclusions de chemin pour le profil utilisateur. Les détections comportementales de Microsoft Defender for Endpoint s'appliquent toujours.

Déployer l'exclusion​

# Run as administrator. Keep the line for your install method.
Add-MpPreference -ExclusionProcess 'C:\Users\*\AppData\Local\Programs\ggshield\*\ggshield-py.exe'
Add-MpPreference -ExclusionProcess 'C:\Program Files\GitGuardian\ggshield\ggshield-py.exe'

Si Intune ou Configuration Manager gère aussi les exclusions Defender, leur stratégie écrase les modifications locales au prochain démarrage.

Vérifiez le résultat avec Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess, puis chronométrez un scan avec Measure-Command { ggshield machine report }.

Exempter le scanner d'Arbitrary code guard​

Si une stratégie Exploit Protection applique Arbitrary code guard (ACG) à ggshield-py.exe, le scanner ne peut pas utiliser son compilateur JIT regex et les scans prennent plusieurs fois plus de temps, sans aucun avertissement. ACG est désactivé par défaut. Vérifiez, puis exemptez le processus :

Get-ProcessMitigation -Name ggshield-py.exe # DynamicCode Enable: ON means ACG applies
Set-ProcessMitigation -Name ggshield-py.exe -Disable DynamicCode

Pour déployer l'exemption sur l'ensemble du parc, exportez-la avec Get-ProcessMitigation -RegistryConfigFilePath ggshield-exploit-protection.xml et chargez le fichier dans Intune sous Endpoint security > Attack surface reduction > Exploit Protection, ou distribuez-le via Group Policy. Consultez Personnaliser la protection contre les exploits.

Autres antivirus et contrôle des applications​

  • EDR tiers (CrowdStrike Falcon, SentinelOne, Cortex XDR, Carbon Black) : appliquez la même exclusion de processus pour ggshield-py.exe avec la fonctionnalité équivalente de l'éditeur. Lorsque l'un d'eux est l'antivirus principal, Microsoft Defender s'exécute en mode passif, donc configurez plutôt l'EDR.
  • AppLocker, App Control for Business, code integrity guard : ggshield.exe, ggshield-py.exe et le MSI sont signés par GitGuardian, mais les fichiers de support dans le dossier _internal et le plugin du scanner ne le sont pas. Autorisez le répertoire d'installation et C:\Users\*\AppData\Local\GitGuardian\ggshield par chemin, et n'activez pas code integrity guard pour ggshield-py.exe. ggshield machine doctor échoue lorsque le scanner ne peut pas se charger.

Si les scans sont toujours lents​

Enregistrez ce que Microsoft Defender scanne pendant une exécution avec son analyseur de performances, en tant qu'administrateur :

New-MpPerformanceRecording -RecordTo "$env:TEMP\ggshield-defender.etl"
# Run ggshield machine report as the scan user, then press Enter here.
Get-MpPerformanceReport -Path "$env:TEMP\ggshield-defender.etl" -TopProcesses 10 -TopFiles 10

Si ggshield-py.exe figure toujours en tête de la liste des processus, l'exclusion n'est pas appliquée. Examinez les chemins de fichiers dans le rapport avant de le partager avec le support GitGuardian. Consultez Analyseur de performances pour Microsoft Defender Antivirus.