SRP ignorée par AppLocker : diagnostic et correctif GPO sous Windows 10/11

SRP s’affiche comme « Winning Policy » dans vos rapports gpresult/RSOP mais les restrictions ne s’appliquent plus ? Voici un guide pas‑à‑pas pour diagnostiquer et corriger un cas réel où des règles AppLocker actives rendaient SRP inopérant sur Windows 10/11.

Sommaire

Problème rencontré

Les Software Restriction Policy (SRP) sont visibles dans gpresult et dans la Resultant Set of Policy comme « Winning Policy » ; pourtant, la plupart des utilisateurs ne sont plus bloqués comme prévu (lancement d’applications non autorisées, absence de fenêtres d’alerte, comportements incohérents entre postes).

  • Environnement : domaines Active Directory, GPO SRP historiquement déployées.
  • Symptômes : lancement possible d’apps Microsoft (Xbox, Camera, 3D Viewer, OfficeHub, etc.), comportements variables selon l’utilisateur ou la machine.
  • Contexte : présence d’un autre GPO contenant des règles AppLocker.

Fait clé : dès qu’AppLocker (ou WDAC) est actif, Windows ignore silencieusement SRP. Le moteur le plus moderne prend la main.

Pistes de diagnostic explorées

Voici les vérifications réalisées pour reproduire et comprendre le dysfonctionnement.

ÉtapeObjectif
Vérification des règles SRPS’assurer qu’aucune règle n’a été supprimée ou modifiée.
Contrôle du lien GPO / filtrage de sécuritéConfirmer que le GPO est bien lié à l’OU cible et que les ACL de sécurité laissent passer l’objet.
Utilisation de gpresult / RSOPVérifier que le GPO SRP est effectivement appliqué au poste et à l’utilisateur.
Examen des journaux Événements Système & ApplicationRechercher erreurs/avertissements liés à SRP ou AppLocker.
Commande gpupdate /force et redémarrageForcer la réapplication des stratégies.
Vérification des mises à jour récentesDétecter un correctif Windows susceptible d’avoir changé le comportement.
Validation des privilèges utilisateur et de l’UACS’assurer qu’aucune élévation ou paramètre local ne court‑circuitent SRP.

Checklist rapide

  • gpresult confirme la présence de Software Restriction Policies ?
  • Des journaux AppLocker existent‑ils (Applications and Services Logs → Microsoft → Windows → AppLocker) ?
  • Le service Application Identity (AppIDSvc) est‑il démarré ?
  • Une stratégie WDAC (Code Integrity) est‑elle présente sur le poste ?
  • L’étendue des GPO (LIENS/ACL/WMI Filter) permet‑elle à AppLocker de toucher « Tout le monde » ?

Commandes utiles

gpresult /h C:\Temp\rsop.html
gpresult /scope user /v
gpresult /scope computer /v

# PowerShell - politique AppLocker effective

Get-AppLockerPolicy -Effective -Xml | Out-File C:\Temp\Applocker-Effective.xml

# PowerShell - état du service Application Identity

Get-Service AppIDSvc | Format-List Name,Status,StartType 

Cause identifiée

Un GPO AppLocker (distinct du GPO SRP) contenait des règles bloquant de nombreuses applications Microsoft pour le groupe Tout le monde. Or, AppLocker et SRP ne cohabitent pas : dès que des règles AppLocker sont actives, Windows désactive de fait SRP sans avertissement explicite. Résultat : gpresult affiche SRP comme « Winning Policy », mais l’exécution est arbitrée par AppLocker, pas par SRP.

  • AppLocker s’appuie sur le service Application Identity pour l’évaluation.
  • Si AppLocker est en mode Audit ou Enforcement, ses décisions prévalent sur SRP.
  • Le phénomène est identique si une politique WDAC (Windows Defender Application Control) est active : SRP devient inopérant.

Solution mise en œuvre

  1. Localiser le ou les GPO AppLocker appliqués aux machines/utilisateurs concernés (via gpresult, Group Policy Management).
  2. Désactiver ou ajuster le GPO fautif :
    • Retirer le filtrage « Tout le monde » si la stratégie devait viser un sous‑ensemble restreint.
    • Basculer temporairement en Audit only pour mesurer l’impact sans bloquer.
    • Créer les règles par défaut autorisantes (éditeurs Microsoft, répertoires Program Files, Windows) avant d’ajouter des blocages ciblés.
  3. Forcer l’application : gpupdate /force puis redémarrage (requis si AppIDSvc change d’état).
  4. Vérifier que SRP reprend effet (tests d’exécution, journaux). Voir la section « Vérifications post‑correctif ».

Après suppression du conflit, les restrictions SRP sont de nouveau appliquées comme prévu.

Vérifications post‑correctif

Test simple côté utilisateur

  1. Choisir une application historiquement bloquée par SRP.
  2. Vider le cache des stratégies ou redémarrer la session.
  3. Lancer l’application :
    • Si SRP est actif : message de blocage SRP (ou absence de lancement selon configuration).
    • Si AppLocker est actif : événements AppLocker (800x) apparaissent dans ses journaux.

Scripts rapides d’audit

# 1) Détecter la présence effective de règles AppLocker
$applocker = Get-AppLockerPolicy -Effective -Xml
if ([string]::IsNullOrWhiteSpace($applocker)) {
  "Aucune règle AppLocker effective."
} else {
  "Règles AppLocker détectées (Effective)."
}

# 2) Vérifier l’état du service Application Identity

(Get-Service AppIDSvc).Status

# 3) Indice de WDAC : présence d’une politique Code Integrity

$ciPaths = @(
"$env:windir\System32\CodeIntegrity\SIPolicy.p7b",
"$env:windir\System32\CodeIntegrity\CiPolicies\Active"
)
$ciPaths | ForEach-Object { if (Test-Path $*) { "WDAC : artefact présent -> $*" } }

# 4) Export SRP (machine)

reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers" C:\Temp\SRP_Machine.reg /y

# 5) Rapport gpresult

gpresult /h C:\Temp\rsop.html 

Priorité des mécanismes de contrôle d’exécution

Sur Windows, plusieurs moteurs peuvent contrôler ce qui s’exécute :

  • WDAC (Windows Defender Application Control) – le plus récent, niveau noyau.
  • AppLocker – règles par éditeur, chemin, hash, y compris Packaged apps (UWP).
  • SRP – mécanisme hérité basé sur des règles simples (chemin/hash/zone).

Ordre d’autorité simplifié : WDAC ⟶ AppLocker ⟶ SRP. Si WDAC ou AppLocker est actif, SRP est ignoré.

Bonnes pratiques

  • Ne pas mélanger SRP et AppLocker sur un même périmètre ; choisir un seul moteur.
  • Sur Windows 10/11, privilégier AppLocker ou WDAC ; considérer SRP comme hérité.
  • Documenter les dépendances : AppLocker requiert le service Application Identity démarré.
  • Si vous migrez :
    • Commencer par un mode Audit exhaustif, analyser les événements, bâtir une liste d’autorisations de base (éditeurs Microsoft, répertoires système, outils IT).
    • Passer ensuite en Enforcement progressivement, par groupes pilotes.
  • Éviter les filtres trop larges (« Tout le monde ») sans tests ; préférer des groupes dédiés.
  • Garder des règles par défaut autorisantes pour les chemins %WINDIR% et %ProgramFiles% avant d’ajouter des blocages fins.

Outils et journaux à connaître

OutilButCommande/Accès
gpresult / RSOPVoir les GPO appliquées et la « Winning Policy »gpresult /h C:\Temp\rsop.html
Event Viewer – AppLockerTracer autorisations/refus (événements 800x)Applications and Services Logs → Microsoft → Windows → AppLocker
AppIDSvcService requis pour l’évaluation AppLockerGet-Service AppIDSvc
PowerShell AppLockerExporter la politique effectiveGet-AppLockerPolicy -Effective -Xml
SRP (Registre)Vérifier les règles machine/utilisateurHKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers
WDAC (artefacts)Détecter une politique Code Integrity%windir%\System32\CodeIntegrity\SIPolicy.p7b

Comparatif SRP, AppLocker, WDAC

CritèreSRPAppLockerWDAC
ObjectifContrôler l’exécution via règles simples (hérité)Contrôle applicatif avancé (éditeurs, chemins, hash, UWP)Contrôle en profondeur (noyau), sécurité maximale
PrécédenceIgnoré si AppLocker/WDAC actifPrend la main sur SRPPrend la main sur AppLocker et SRP
DépendancesAucune service dédiéeApplication Identity requisPolitique Code Integrity (p7b/CI)
Cas d’usageEnvironnements anciens, besoins simplesWindows 10/11, granularité, UWPHardening strict, postes à haute sensibilité

Procédure pas‑à‑pas de correction

Identifier le GPO conflictuel

  1. Sur une machine affectée : gpresult /scope computer /v pour lister les GPO appliqués.
  2. Dans la console Group Policy Management : inspecter chaque GPO contenant un nœud AppLocker (Exe, Script, MSI, Packaged apps, DLL).
  3. Noter le filtrage de sécurité et les WMI filters : la présence de « Tout le monde » est un indicateur fort.

Neutraliser l’impact AppLocker

  • Désactiver temporairement le GPO AppLocker, ou définir Enforcement sur Audit only.
  • Redémarrer le service Application Identity (ou redémarrer le poste) pour réévaluer les politiques.
  • Vérifier que SRP reprend la main (test d’exécution et absence de nouveaux événements AppLocker).

Corriger durablement

  • Si AppLocker est la cible stratégique : retirer SRP et consolider AppLocker (règles par défaut, listes d’autorisation, exceptions par groupes AD).
  • Si SRP doit rester en production : retirer le GPO AppLocker ou en limiter l’étendue à des groupes pilotes non soumis à SRP.
  • Éviter Tout le monde : créer un groupe AD Scope‑AppLocker‑Pilote et y affecter des machines/tests.

Exemples de règles et de scripts

Créer des règles AppLocker par défaut

# Console AppLocker > Exécutable > Créer des règles par défaut
# (Autorise %WINDIR% et %ProgramFiles%, plus les fichiers signés par Microsoft)
  

Détecter en PowerShell la co‑présence SRP/AppLocker/WDAC

$report = [ordered]@{}
$report['AppLockerEffective'] = -not [string]::IsNullOrWhiteSpace((Get-AppLockerPolicy -Effective -Xml 2>$null))
$report['AppIDSvc']            = (Get-Service AppIDSvc -ErrorAction SilentlyContinue).Status
$report['SRP_Machine_Key']     = Test-Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers'
$report['WDAC_SIPolicy']       = Test-Path "$env:windir\System32\CodeIntegrity\SIPolicy.p7b"
$report['WDAC_CI_Active']      = Test-Path "$env:windir\System32\CodeIntegrity\CiPolicies\Active"
$report | Format-List
  

Points d’appui pour SRP

  • Règles par chemin, hash, zone Internet.
  • Utiliser les règles supplémentaires pour désigner des éditeurs de confiance via certificats si applicable.
  • Protéger l’accès d’écriture aux répertoires d’exécution (ex. %ProgramFiles%, %WINDIR%).

Scénarios fréquents et résolution

Les apps Microsoft Store s’exécutent malgré SRP

Les Packaged apps (UWP) sont gérées nativement par AppLocker/WDAC, pas par SRP. Si un GPO AppLocker existe, il s’applique ; sinon, SRP ne voit pas ces apps. D’où une impression de « SRP cassé ».

SRP fonctionne pour certains utilisateurs mais pas d’autres

Vérifier : héritage GPO, sécurité de filtrage, groupes AD, OU, priorité de liens. Un GPO AppLocker ciblant un sous‑groupe peut « doubler » SRP localement.

gpresult affiche SRP « Winning », mais rien n’est bloqué

Comportement attendu si AppLocker/WDAC est actif : l’interface Resultant Set of Policy ne signale pas toujours la préemption. Les journaux AppLocker sont l’indicateur le plus fiable.

Méthode d’audit express

  1. Exporter gpresult /h.
  2. Ouvrir l’Observateur d’événements sur les canaux AppLocker (chercher les 800x).
  3. Vérifier Get-AppLockerPolicy -Effective.
  4. Confirmer l’absence/présence de SIPolicy.p7b (WDAC).
  5. Décider : conserver AppLocker/WDAC OU conserver SRP (pas les deux).

Plan de migration SRP → AppLocker/WDAC

  1. Inventorier les exécutables réellement utilisés (journaux SRP/AppLocker, télémétrie).
  2. Basculer en Audit AppLocker/WDAC sur un périmètre pilote.
  3. Construire une politique « autoriser par défaut » (éditeurs Microsoft, chemins système), puis affiner.
  4. Élargir par vagues, documentation, communication utilisateurs.
  5. Décommissionner SRP une fois l’équivalence atteinte.

Résumé exécutable

  • Symptôme : SRP visible comme « Winning Policy » mais non appliquée pour la majorité des utilisateurs.
  • Cause : un GPO AppLocker actif (souvent filtré « Tout le monde ») préempte SRP.
  • Fix : désactiver/ajuster AppLocker (réduire l’étendue, activer les règles par défaut, ou migrer totalement vers AppLocker/WDAC). Après retrait du conflit, SRP refonctionne immédiatement.

Annexes : commandes et extraits prêts à l’emploi

Forcer l’application des GPO

gpupdate /force
shutdown /r /t 0   # si nécessaire après modification AppIDSvc
  

Exporter les clés SRP pour audit

reg export "HKLM\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers" C:\Temp\SRP_Machine.reg /y
reg export "HKCU\Software\Policies\Microsoft\Windows\Safer\CodeIdentifiers" C:\Temp\SRP_User.reg /y
  

Vérifier la politique AppLocker par catégories

(Get-AppLockerPolicy -Effective).RuleCollections | Select-Object Name, EnforcementMode
  

Points de contrôle GPO

  • Ordre de liens (LSDOU) et paramètres de liaisons.
  • Filtres WMI : s’appliquent‑ils réellement aux machines ciblées ?
  • Groupes de sécurité : éviter « Tout le monde », préférer des groupes d’affectation explicites.

Conclusion

Ce cas illustre un piège classique : AppLocker actif = SRP neutralisé. La bonne approche consiste à choisir un seul moteur de contrôle d’exécution sur un périmètre donné, à documenter ses dépendances (service Application Identity pour AppLocker, politique Code Integrity pour WDAC) et à valider l’effet via les journaux. En supprimant ou corrigeant le GPO AppLocker fautif, les restrictions SRP ont été rétablies immédiatement, sans autre changement. Si votre cible est Windows 10/11, anticipez une migration vers AppLocker ou WDAC pour bénéficier d’un contrôle plus fin et d’une meilleure compatibilité avec les applications modernes, tout en conservant une trajectoire claire et auditée.

FAQ

Pourquoi gpresult montre SRP « Winning » si AppLocker gagne réellement ?
Parce que gpresult/RSOP reflète l’état des paramètres GPO, pas le moteur d’exécution qui tranche in fine. Quand AppLocker est actif, ses décisions prévalent sans que SRP soit explicitement marqué comme « désactivé ».

Faut‑il désinstaller SRP si l’on adopte AppLocker ?
Pas nécessairement, mais il faut retirer les GPO SRP de l’étendue où AppLocker/WDAC s’applique, pour éviter les ambiguïtés et simplifier la maintenance.

Comment tester sans impacter la production ?
Créer un groupe pilote, lier le GPO AppLocker en Audit only, surveiller les événements, ajuster, puis élargir graduellement.

Sommaire