MS14-025 : Une vulnérabilité des préférences de stratégie de groupe peut permettre l'élévation de privilèges : 13 mai 2014

INTRODUCTION
Microsoft a publié le bulletin de sécurité MS14-025. Pour en savoir plus sur ce bulletin de sécurité :

Procédure pour obtenir de l'aide et un support pour cette mise à jour de sécurité

Aide à l'installation des mises à jour :Support pour Microsoft Update

Solutions de sécurité pour les professionnels de l'informatique :Résolution des problèmes de sécurité TechNet et support

Protection de votre ordinateur Windows contre les virus et les logiciels malveillants :Centre de sécurité et de solutions antivirus

Support local selon votre pays :Support international

Plus d'informations

Problèmes connus et informations supplémentaires concernant cette mise à jour de sécurité

Les articles suivants contiennent des informations supplémentaires sur cette mise à jour de sécurité car elle concerne des versions de produits individuels. Les articles peuvent contenir des informations sur les problèmes connus. Si c'est le cas, le problème connu est répertorié sous chaque lien d'article.
  • 2928120 MS14-025 : Description de la mise à jour de sécurité pour les Outils d'administration de serveur distant Windows pour les systèmes sur lesquels la mise à jour 2919355 est installée : 13 mai 2014
  • 2961899 MS14-025 : Description de la mise à jour de sécurité pour les Outils d'administration de serveur distant Windows pour les systèmes sur lesquels la mise à jour 2919355 n'est pas installée : 13 mai 2014
Préférences de stratégie de groupe

Présentation

Certaines préférences de stratégie de groupe peuvent enregistrer un mot de passe. Cette fonctionnalité est supprimée car le mot de passe a été enregistré de façon non sécurisée. Cet article décrit les modifications de l'interface utilisateur et les solutions de contournement disponibles.

Les préférences de stratégie de groupe suivantes ne permettront plus d'enregistrer les noms d'utilisateur et les mots de passe :
  • Mappages de lecteurs
  • Utilisateurs et groupes locaux
  • Tâches planifiées
  • Services
  • Sources de données
Cela affectera le comportement des objets Stratégie de groupe (GPO) existants dans votre environnement qui reposent sur des mots de passe contenus dans ces préférences. Il empêche également la création de nouvelles préférences de stratégie de groupe à l'aide de cette fonctionnalité.

Pour les mappages de lecteurs, les utilisateurs et groupes locaux, ainsi que les services, vous parviendrez à des objectifs similaires grâce à une fonctionnalité plus sécurisée de Windows.

Pour les tâches planifiées et les sources de données, vous ne pourrez pas obtenir les mêmes résultats que ceux possibles via la fonctionnalité non sécurisée de mots de passe de préférences de stratégie de groupe.
Scénarios
Les préférences de stratégie de groupe suivantes sont affectées par cette modification. Chaque préférence est présentée brièvement, puis de façon plus détaillée. En outre, les solutions de contournement qui permettent d'effectuer les mêmes tâches sont fournies.
Préférence affectée S'applique à l'utilisateurS'applique à l'ordinateur
Gestion d'utilisateur localOuiOui
Lecteurs mappésOui
Non
Services
Non
Oui
Tâches planifiées (haut niveau)OuiOui
Tâches planifiées (haut niveau)OuiOui
Tâches immédiates (haut niveau)OuiOui
Tâches immédiates (bas niveau)OuiOui
Sources de donnéesOuiOui

Résumé des modifications

  • Les champs de mot de passe de toutes les préférences concernées sont désactivés. Les administrateurs ne peuvent pas créer de nouvelles préférences à l'aide de ces champs de mot de passe.
  • Le champ nom d'utilisateur est désactivé dans certaines préférences.
  • Les préférences existantes qui contiennent un mot de passe ne peuvent pas être mises à jour. Elles ne peuvent qu'être supprimées ou désactivées, selon le cas pour la préférence spécifique.
  • Le comportement pour les actions de suppression et de désactivation n'a pas changé pour les préférences.
  • Lorsqu'un administrateur ouvre une préférence qui contient l'attribut CPassword, la boîte de dialogue d'avertissement suivante s'affiche pour l'informer de la désapprobation récente. Les tentatives d'enregistrement de modifications apportées aux préférences nouvelles ou existantes qui nécessitent l'attribut CPassword entraîneront l'affichage de la même boîte de dialogue. Seules les actions de suppression et de désactivation ne déclencheront pas de boîtes de dialogue d'avertissement.





Scénario 1 : Gestion d'utilisateur local

La préférence Gestion d'utilisateur local est fréquemment utilisée pour créer des administrateurs locaux qui possèdent un mot de passe connu sur un ordinateur. Cette fonctionnalité n'est pas sécurisée en raison de la manière dont les préférences de stratégie de groupe stockent les mots de passe. Par conséquent, cette fonctionnalité n'est plus disponible. Les raccourcis suivants sont affectés :
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Utilisateurs et groupes locaux -> Nouveau -> Utilisateur local
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Utilisateurs et groupes locaux -> Nouveau -> Utilisateur local

Modifications importantes

Action : créer ou remplacer
  • Les champs Nom d'utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés.
  • La boîte de dialogue d'avertissement s'affiche lorsque l'utilisateur ouvre ou essaie d'enregistrer des modifications apportées à une préférence existante qui contient un mot de passe.




Action : mise à jour
  • Les champs Mot de passe et Confirmer le mot de passe sont désactivés.
  • La boîte de dialogue d'avertissement s'affiche lorsque l'utilisateur ouvre ou essaie d'enregistrer des modifications apportées à une préférence existante qui contient un mot de passe.




Action : suppression
  • Aucun changement de comportement

Solutions de contournement

Si vous utilisiez la préférence de stratégie de groupe pour définir des mots de passe d'administrateurs locaux, le script suivant peut servir d'alternative sécurisée à CPassword. Copiez et enregistrez le contenu dans un nouveau fichier Windows PowerShell, puis exécutez le script comme indiqué dans sa section .EXAMPLE.

Microsoft fournit des exemples de programmation à des fins d'illustration uniquement, sans garantie expresse ou implicite. Ceci inclut, de manière non limitative, les garanties implicites de qualité marchande ou d'adéquation à un usage particulier. Cet article suppose que vous connaissiez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière. Toutefois, ils ne modifieront pas ces exemples pour fournir des fonctionnalités supplémentaires ou créer des procédures répondant à vos besoins spécifiques.

 function Invoke-PasswordRoll{<#.SYNOPSISCe script peut être utilisé pour définir les mots de passe du compte local sur les ordinateurs distants pour les mots de passe aléatoires. La combinaison nom d'utilisateur/mot de passe/serveur est enregistrée dans un fichier CSV.Les mots de passe de compte enregistrés dans le fichier CSV peuvent être chiffrés à l'aide d'un mot de passe choisi par les administrateurs afin que les mots de passe de compte ne soient pas inscrits en texte clair sur le disque.Les mots de passe chiffrés peuvent être déchiffrés à l'aide d'une autre fonction dans ce fichier : ConvertTo-CleartextPasswordFonction : Invoke-PasswordRollAuteur : MicrosoftVersion : 1.0.DESCRIPTIONCe script peut être utilisé pour définir les mots de passe du compte local sur les ordinateurs distants pour les mots de passe aléatoires. La combinaison nom d'utilisateur/mot de passe/serveur est enregistrée dans un fichier CSV.Les mots de passe de compte enregistrés dans le fichier CSV peuvent être chiffrés à l'aide d'un mot de passe choisi par les administrateurs afin que les mots de passe de compte ne soient pas inscrits en texte clair sur le disque.Les mots de passe chiffrés peuvent être déchiffrés à l'aide d'une autre fonction dans ce fichier : ConvertTo-CleartextPassword.PARAMETER ComputerNameGroupe d'ordinateurs à utiliser pour exécuter le script à l'aide de l'accès distant PowerShell..PARAMETER LocalAccountsGroupe de comptes locaux dont le mot de passe doit être modifié..PARAMETER TsvFileNameFichier dans lequel exporter les combinaisons nom d'utilisateur/mot de passe/serveur..PARAMETER EncryptionKeyMot de passe avec lequel chiffrer le fichier TSV. Utilise le chiffrement AES. Seuls les mots de passe enregistrés dans le fichier TSV seront chiffrés, le nom d'utilisateur et le nom du serveur seront en texte clair..PARAMETER PasswordLengthLongueur des mots de passe générés aléatoirement pour les comptes locaux..PARAMETER NoEncryptionNe chiffrez pas les mots de passe de compte enregistrés dans le fichier TSV. Cela a pour effet d'écrire les mots de passe en texte clair sur le disque.	.EXAMPLE. .\Invoke-PasswordRoll.ps1    #Charge les fonctions de ce fichier de scriptInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator","CustomLocalAdmin") -TsvFileName "LocalAdminCredentials.tsv" -EncryptionKey "Password1"Connexion à tous les ordinateurs enregistrés dans le fichier « computerlist.txt ». Si le compte local « administrateur » et/ou « CustomLocalAdmin » est présent sur le système, son mot de passe est modifié en un mot de passe généré aléatoirement d'une longueur de 20 caractères (paramètre par défaut). Les combinaisons nom d'utilisateur/mot de passe/serveur sont enregistrées dans LocalAdminCredentials.tsv, et les mots de passe de compte sont chiffrés en AES à l'aide du mot de passe « Password1 »..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Charge les fonctions de ce fichier de scriptInvoke-PasswordRoll -ComputerName (Get-Content computerlist.txt) -LocalAccounts @("administrator") -TsvFileName "LocalAdminCredentials.tsv" -NoEncryption -PasswordLength 40Connexion à tous les ordinateurs enregistrés dans le fichier « computerlist.txt ». Si le compte local « administrateur » est présent sur le système, son mot de passe est modifié pour un mot de passe généré aléatoirement d'une longueur de 40 caractères. Les combinaisons serveur/nom d'utilisateur/mot de passe sont stockées dans LocalAdminCredentials.tsv non chiffré..NOTESConditions requises : -PowerShellv2 ou supérieur doit être installé-La communication à distance PowerShell doit être activée sur tous les systèmes sur lesquels le script sera exécutéComportement de script :-Si un compte local est présent sur le système, mais n'est pas spécifié dans le paramètre LocalAccounts, le script affiche un avertissement à l'écran pour vous avertir de la présence de ce compte local. Le script continue de s'exécuter lorsque cela se produit.-Si un compte local est spécifié dans le paramètre LocalAccounts, mais que le compte n'existe pas sur l'ordinateur, rien ne se passe (AUCUN compte ne sera créé).-La fonction ConvertTo-CleartextPassword, contenue dans ce fichier, peut être utilisée pour déchiffrer les mots de passe enregistrés sous forme chiffrée dans le fichier TSV.-Si la connexion à un serveur spécifié dans ComputerName est impossible, PowerShell renvoie un message d'erreur.-Microsoft conseille aux entreprises de changer régulièrement tous les mots de passe locaux et de domaine.#>    [CmdletBinding(DefaultParameterSetName="Encryption")]    Param(        [Parameter(Mandatory=$true)]        [String[]]        $ComputerName,        [Parameter(Mandatory=$true)]        [String[]]        $LocalAccounts,        [Parameter(Mandatory=$true)]        [String]        $TsvFileName,        [Parameter(ParameterSetName="Encryption", Mandatory=$true)]        [String]        $EncryptionKey,        [Parameter()]        [ValidateRange(20,120)]        [Int]        $PasswordLength = 20,        [Parameter(ParameterSetName="NoEncryption", Mandatory=$true)]        [Switch]        $NoEncryption    )    #Chargez toutes les classes .net nécessaires    Add-Type -AssemblyName "System.Web" -ErrorAction Stop    #Il s'agit du scriptblock qui sera exécuté sur chaque ordinateur spécifié dans ComputerName    $RemoteRollScript = {        Param(            [Parameter(Mandatory=$true, Position=1)]            [String[]]            $Passwords,            [Parameter(Mandatory=$true, Position=2)]            [String[]]            $LocalAccounts,            #Vous pouvez ainsi noter quel était le nom de serveur auquel le script était connecté. Les enregistrements DNS peuvent parfois être désordonnés, cela peut donc se révéler utile.            [Parameter(Mandatory=$true, Position=3)]            [String]            $TargettedServerName        )        $LocalUsers = Get-WmiObject Win32_UserAccount -Filter "LocalAccount=true" | Foreach {$_.Name}        #Vérifiez si l'ordinateur comprend des comptes utilisateur locaux dont les mots de passe ne seront pas modifiés par ce script        foreach ($User in $LocalUsers)        {            if ($LocalAccounts -inotcontains $User)            {                Write-Warning "Le serveur '$($TargettedServerName)' a un compte local '$($User)' dont le mot de passe n'est PAS modifié par ce script."            }        }        #Pour chaque compte local spécifié existant sur ce serveur, modifiez le mot de passe        $PasswordIndex = 0        foreach ($LocalAdmin in $LocalAccounts)        {            $Password = $Passwords[$PasswordIndex]            if ($LocalUsers -icontains $LocalAdmin)            {                try                {                    $objUser = [ADSI]"WinNT://localhost/$($LocalAdmin), user"                    $objUser.psbase.Invoke("SetPassword", $Password)                    $Properties = @{                        TargettedServerName = $TargettedServerName                        Username =  $LocalAdmin                        Password = $Password                        RealServerName = $env:computername                    }                    $ReturnData = New-Object PSObject -Property $Properties                    Write-Output $ReturnData                }                catch                {                    Write-Error "Erreur lors de la modification du mot de passe de l'utilisateur$($LocalAdmin) sur le serveur$($TargettedServerName)"                }            }            $PasswordIndex++        }    }    #Générez le mot de passe sur le client exécutant ce script, et non sur l'ordinateur distant. System.Web.Security n'est pas disponible dans le profil .NET Client. Cet appel #    effectué sur le client qui exécute le script assure que .NET runtime ne doit être installé que sur un seul ordinateur (et non sur tous les systèmes dont le mot de passe doit être modifié).    function Create-RandomPassword    {        Param(            [Parameter(Mandatory=$true)]            [ValidateRange(20,120)]            [Int]            $PasswordLength        )        $Password = [System.Web.Security.Membership]::GeneratePassword($PasswordLength, $PasswordLength / 4)        #Cette opération n'est jamais censée échouer, mais je place toujours un contrôle de validité au cas où        if ($Password.Length -ne $PasswordLength)        {            throw new Exception("Le mot de passe renvoyé par GeneratePassword n'a pas la longueur nécessaire. Longueur requise : $($PasswordLength). Longueur générée : $($Password.Length)")        }        return $Password    }    #Principale fonctionnalité - Générez un mot de passe et accédez à distance aux ordinateurs pour modifier le mot de passe des comptes locaux spécifiés    if ($PsCmdlet.ParameterSetName -ieq "Encryption")    {        try        {            $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider            $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))        }        catch        {            Write-Error "Erreur lors de la création de la clé de chiffrement TSV" -ErrorAction Stop        }    }    foreach ($Computer in $ComputerName)    {        #Vous devez générer 1 mot de passe pour chaque compte qui pourrait être modifié        $Passwords = @()        for ($i = 0; $i -lt $LocalAccounts.Length; $i++)        {            $Passwords += Create-RandomPassword -PasswordLength $PasswordLength        }        Write-Output "Connexion au serveur '$($Computer)' pour revenir aux mots de passe administrateur local spécifiés"        $Result = Invoke-Command -ScriptBlock $RemoteRollScript -ArgumentList @($Passwords, $LocalAccounts, $Computer) -ComputerName $Computer        #Si le chiffrement est utilisé, chiffrez le mot de passe avec la clé fournie par l'utilisateur avant de l'écrire sur le disque        if ($Result -ne $null)        {            if ($PsCmdlet.ParameterSetName -ieq "NoEncryption")            {                $Result | Select-Object Username,Password,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation            }            else            {                #Filters out $null entries returned                $Result = $Result | Select-Object Username,Password,TargettedServerName,RealServerName                foreach ($Record in $Result)                {                    $PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String ($Record.Password)                    $Record | Add-Member -MemberType NoteProperty -Name EncryptedPassword -Value (ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString)                    $Record.PSObject.Properties.Remove("Password")                    $Record | Select-Object Username,EncryptedPassword,TargettedServerName,RealServerName | Export-Csv -Append -Path $TsvFileName -NoTypeInformation                }            }        }    }}function ConvertTo-CleartextPassword{<#.SYNOPSISCette fonction peut être utilisée pour déchiffrer les mots de passe qui ont été enregistrés sous forme chiffrée par la fonction Invoke-PasswordRoll.Fonction : ConvertTo-CleartextPasswordAuteur : MicrosoftVersion : 1.0.DESCRIPTIONCette fonction peut être utilisée pour déchiffrer les mots de passe qui ont été enregistrés sous forme chiffrée par la fonction Invoke-PasswordRoll..PARAMETER EncryptedPasswordMot de passe chiffré enregistré dans un fichier TSV..PARAMETER EncryptionKeyMot de passe utilisé pour le chiffrement..EXAMPLE. .\Invoke-PasswordRoll.ps1    #Charge les fonctions de ce fichier de scriptConvertTo-CleartextPassword -EncryptionKey "Password1" -EncryptedPassword 76492d1116743f0423413b16050a5345MgB8AGcAZgBaAHUAaQBwADAAQgB2AGgAcABNADMASwBaAFoAQQBzADEAeABjAEEAPQA9AHwAZgBiAGYAMAA1ADYANgA2ADEANwBkADQAZgAwADMANABjAGUAZQAxAGIAMABiADkANgBiADkAMAA4ADcANwBhADMAYQA3AGYAOABkADcAMQA5ADQAMwBmAGYANQBhADEAYQBjADcANABkADIANgBhADUANwBlADgAMAAyADQANgA1ADIAOQA0AGMAZQA0ADEAMwAzADcANQAyADUANAAzADYAMAA1AGEANgAzADEAMQA5ADAAYwBmADQAZAA2AGQA"Déchiffre le mot de passe chiffré enregistré dans le fichier TSV.#>    Param(        [Parameter(Mandatory=$true)]        [String]        $EncryptedPassword,        [Parameter(Mandatory=$true)]        [String]        $EncryptionKey    )    $Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider    $SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionKey))    [SecureString]$SecureStringPassword = ConvertTo-SecureString -String $EncryptedPassword -Key $SecureStringKey    Write-Output ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($SecureStringPassword)))}
  Les administrateurs peuvent ajouter des comptes d'administrateur locaux en créant un groupe Active Directory et en l'ajoutant au groupe des administrateurs locaux via les préférences de stratégie de groupe -> Groupe local. Cette action ne met pas en cache les informations d'identification. La boîte de dialogue est semblable à la suivante. Cette solution de contournement nécessite une connexion aux services de domaine Active Directory lorsque l'utilisateur est connecté à l'aide de ces informations d'identification.





Scénario 2 : Lecteurs mappés

Les administrateurs utilisent des mappages de lecteur pour allouer des emplacements réseau aux utilisateurs. La fonctionnalité de protection de mot de passe est utilisée pour assurer un accès autorisé au lecteur. Les raccourcis suivants sont affectés :
  • Configuration utilisateur -> Paramètres Windows -> Mappages de lecteurs -> Nouveau -> Lecteur mappé

Modifications importantes

Action : Créer, mettre à jour ou remplacer
  • Les champs Nom d'utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés.



Action : supprimer
  • Aucun changement de comportement

Solutions de contournement

Au lieu d'utiliser la méthode des mots de passe pour l'authentification, vous pouvez utiliser l'Explorateur Windows pour gérer les autorisations de partage et attribuer des droits aux utilisateurs. Vous pouvez utiliser des objets Active Directory pour contrôler les autorisations d'accès au dossier.


Scénario 3 : Services

Vous pouvez utiliser la préférence Services pour modifier les propriétés des services de manière à ce qu'ils s'exécutent dans un contexte différent de leur contexte de sécurité original. Les raccourcis suivants sont affectés :
  • Configuration de l'ordinateur -> Paramètres du Panneau de configuration -> Services -> Nouveau -> Service

Modifications importantes

Démarrage : Aucune modification, automatique ou manuelle
  • Les champs Mot de passe et Confirmer le mot de passe sont désactivés.
  • L'administrateur ne peut utiliser que des comptes intégrés.



Démarrage : Désactiver
  • Aucun changement de comportement
Nouvelle boîte de dialogue
  • Les administrateurs qui tentent d'utiliser des utilisateurs non intégrés pour ce compte reçoivent l'avertissement suivant :




Solutions de contournement

Les services peuvent toujours être exécutés en tant que compte système local. Les autorisations de service peuvent être modifiées comme indiqué dans l'article suivant dans la Base de connaissances Microsoft :
256345 Comment configurer les paramètres de stratégie de groupe pour définir la sécurité des services système

Remarque
 Si le service que vous souhaitez configurer n'est pas présent, vous devez configurer les paramètres sur un ordinateur qui exécute ce service.


Scénario 4 : Tâches planifiées et immédiates (haut niveau)

Ceci permet d'exécuter des tâches planifiées dans un contexte de sécurité spécifique. La possibilité d'enregistrer des informations d'identification pour que les tâches planifiées s'exécutent en tant qu'utilisateur arbitraire lorsque cet utilisateur n'est pas connecté n'est plus disponible. Les préférences suivantes sont affectées. (Sachez que sur certaines plates-formes, «Windows 7 au moins » est remplacé par « Windows Vista et les versions ultérieures ».)
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche planifiée (Windows 7 au moins)
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche immédiate (Windows 7 au moins)
  •  Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche planifiée (Windows 7 au moins)
  •  Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche immédiate (Windows 7 au moins)

Modifications importantes

Action : créer, mettre à jour ou remplacer
  • Lorsque vous sélectionnez l'option Exécuter la tâche que l'utilisateur soit connecté ou non, une boîte de dialogue n'invite plus l'administrateur à entrer ses informations d'identification.
  • La case à cocher Ne pas enregistrer le mot de passe est désactivée. Par défaut, la case est également activée.



Action : Supprimer

Aucun changement de comportement

Solutions de contournement

Pour les tâches « tâche planifiée (Windows 7 au moins) » et « tâche immédiate (Windows 7 au moins) », les administrateurs peuvent utiliser des comptes d'utilisateurs spécifiques lorsque l'utilisateur est connecté. Ils peuvent aussi avoir accès aux ressources locales uniquement en tant que cet utilisateur. Ces tâches peuvent toujours s'exécuter dans le contexte du service local. 



Scénario 5 : Tâches planifiées et immédiates (bas niveau)

Il s'agit de la version de bas niveau des préférences utilisées pour exécuter les tâches planifiées dans un contexte de sécurité spécifique. La possibilité d'enregistrer des informations d'identification pour que les tâches planifiées s'exécutent en tant qu'utilisateur arbitraire lorsque cet utilisateur n'est pas connecté n'est plus disponible. Les raccourcis suivants sont affectés :
  •  Configuration ordinateur -> - Paramètres du Panneau de configuration> Tâches planifiées -> Nouvelle -> Tâche planifiée
  •  Configuration ordinateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche immédiate (Windows XP)
  •  Configuration utilisateur -> Paramètres du Panneau de configuration> Tâches planifiées -> Nouvelle -> Tâche planifiée
  •  Configuration utilisateur -> Paramètres du Panneau de configuration -> Tâches planifiées -> Nouvelle -> Tâche immédiate (Windows XP)

Modifications importantes

Action : Créer, mettre à jour ou remplacer
  • La case à cocher Exécuter en tant que est désactivée. Les champs Nom d'utilisateur, Mot de passe et Confirmer le mot de passe sont tous désactivés.



Action : Supprimer

Aucun changement de comportement

Solutions de contournement

Pour les éléments « Tâche planifiée » et « Tâche immédiate (Windows XP) », les tâches planifiées s'exécutent à l'aide des autorisations qui sont actuellement disponibles pour le service local. 


Scénario 6 : Sources de données

La préférence Sources de données est utilisée pour associer une source de données à un ordinateur ou un utilisateur. Cette fonctionnalité n'enregistre plus les informations d'identification pour permettre l'accès aux sources de données protégées par un mot de passe. Les raccourcis suivants sont affectés :
  • Configuration ordinateur -> Paramètres du Panneau de configuration -> Sources de données
  • Configuration utilisateur -> Paramètres du Panneau de configuration -> Sources de données

Modifications importantes

Action : créer, mettre à jour ou remplacer
  • Les champs Nom d'utilisateur, Mot de passe et Confirmer le mot de passe sont désactivés.



Action : supprimer
  • Aucun changement de comportement

Solutions de contournement

Aucune solution de contournement n'est disponible. Cette préférence n'enregistre plus les informations d'identification pour permettre l'accès aux sources de données protégées par un mot de passe.


Désapprobation de CPassword

Suppression de CPassword

Le script Windows PowerShell inclus dans cet article de la Base de connaissances Microsoft permet de détecter si un domaine contient des préférences de stratégie de groupe susceptibles d'utiliser CPassword. Si CPassword XML est détecté dans une préférence donnée, il s'affiche dans cette liste.


Détection des préférences CPassword

Ce script doit être exécuté depuis un répertoire local sur le contrôleur de domaine à nettoyer. Copiez et enregistrez le contenu dans un nouveau fichier Windows PowerShell, définissez votre lecteur système, puis exécutez le script comme indiqué ci-dessous.

 <#.SYNOPSISLes objets Stratégie de groupe de votre domaine peuvent comporter des préférences qui enregistrent les mots de passe pour différentes tâches, comme les suivantes :    1. Sources de données    2. Mappages de lecteurs    3. Utilisateurs locaux    4. Tâches planifiées (XP et niveau supérieur)    5. ServicesCes mots de passe sont enregistrés dans SYSVOL comme préférences de stratégie de groupe et ne sont pas sécurisés en raison du chiffrement faible (AES 32 octets). Par conséquent, nous vous recommandons de ne pas déployer ces préférences dans votre environnement de domaine et de supprimer toute préférence existante de ce type. Ce script vise à aider l'administrateur à rechercher les préférences de stratégie de groupe dans le SYSVOL du domaine qui contient les mots de passe. .DESCRIPTIONCe script doit être exécuté sur un contrôleur de domaine ou un ordinateur client installé avec les Outils d'administration de serveur distant pour imprimer les préférences qui contiennent un mot de passe comprenant des informations, telles que l'objet de stratégie de groupe, le nom de préférence et le chemin GPEdit sous lequel cette préférence est définie.Une fois que vous avez obtenu la liste des préférences affectées, vous pouvez les supprimer à l'aide de l'éditeur de la Console de gestion des stratégies de groupe. .SYNTAXGet-SettingsWithCPassword.ps1 [-Path  <String>] .EXAMPLEGet-SettingsWithCPassword.ps1 -Path %WinDir%\SYSVOL\domainGet-SettingsWithCPassword.ps1 -Path  <Chemin d'accès du dossier de sauvegarde de l'objet de stratégie de groupe> .NOTESSi le module PS de stratégie de groupe est introuvable, le résultat contiendra les GUID d'objets Stratégie de groupe au lieu des noms d'objets Stratégie de groupe. Vous pouvez exécuter ce script sur un contrôleur de domaine ou réexécuter le script sur le client après avoir installé les Outils d'administration de serveur distant et activé le module de stratégie de groupe.Vous pouvez aussi utiliser les GUID d'objets Stratégie de groupe pour obtenir les noms d'objets Stratégie de groupe à l'aide de l'applet de commande Get-GPO. .LINKhttp://go.microsoft.com/fwlink/?LinkID=390507 #>#----------------------------------------------------------------------------------------------------------------# Paramètres d'entrée#--------------------------------------------------------------------------------------------------------------param(    [string]$Path = $(throw "-Path is required.") # Chemin d'accès du répertoire où se trouvent les GPP. )#---------------------------------------------------------------------------------------------------------------$isGPModuleAvailable = $false$impactedPrefs = { "Groups.xml", "ScheduledTasks.xml","Services.xml", "DataSources.xml", "Drives.xml" }#----------------------------------------------------------------------------------------------------------------# importer le module Stratégie de groupe s'il est disponible#----------------------------------------------------------------------------------------------------------------if (-not (Get-Module -name "GroupPolicy")){   if (Get-Module -ListAvailable |          Where-Object { $_.Name -ieq "GroupPolicy" })    {        $isGPModuleAvailable = $true        Import-Module "GroupPolicy"    }    else    {        Write-Warning "Impossible d'importer le module Stratégie de groupe pour PowerShell. Par conséquent, des GUID d'objet de stratégie de groupe sont signalés.                        Exécutez ce script sur le contrôleur de domaine pour obtenir le nom des objets de stratégie de groupe ou utilisez l'applet de commande Get-GPO (sur le contrôleur de domaine) pour obtenir le nom de l'objet de stratégie de groupe à partir du GUID d'objet de stratégie de groupe."    }}else{    $isGPModuleAvailable = $true}Function Enum-SettingsWithCpassword ( [string]$sysvolLocation ){    # GPMC tree paths    $commonPath = " -> Preferences -> Control Panel Settings -> "    $driveMapPath = " -> Preferences -> Windows Settings -> "        # Obtenez de manière récursive tous les fichiers xml dans l'emplacement SYSVOL    $impactedXmls = Get-ChildItem $sysvolLocation -Recurse -Filter "*.xml" | Where-Object { $impactedPrefs -cmatch $_.Name }            # Chaque fichier xml contient plusieurs préférences. Parcourez chaque préférence pour vérifier si elle    # contient l'attribut cpassword et l'afficher    foreach ( $file in $impactedXmls )    {        $fileFullPath = $file.FullName                # Définissez la catégorie GPP. Si le fichier est situé dans le dossier Machine dans SYSVOL        # le paramètre est défini dans la configuration de l'ordinateur, sinon le         # paramètre fait partie de la configuration de l'utilisateur          if ( $fileFullPath.Contains("Machine") )        {            $category = "Computer Configuration"        }        elseif ( $fileFullPath.Contains("User") )        {            $category = "User Configuration"        }        else        {            $category = "Unknown"        }        # Obtenez le contenu d'un fichier au format XML        try        {            [xml]$xmlFile = get-content $fileFullPath -ErrorAction Continue        }        catch [Exception]{            Write-Host $_.Exception.Message        }        if ($xmlFile -eq $null)        {            continue        }        switch ( $file.BaseName )        {            Groups             {                 $gppWithCpassword = $xmlFile.SelectNodes("Groups/User") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Local Users"            }            ScheduledTasks            {                $gppWithCpassword  = $xmlFile.SelectNodes("ScheduledTasks/*") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Scheduled Tasks"            }            DataSources            {                $gppWithCpassword = $xmlFile.SelectNodes("DataSources/DataSource") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Data sources"            }            Drives            {                $gppWithCpassword = $xmlFile.SelectNodes("Drives/Drive") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Drive Maps"            }            Services            {                $gppWithCpassword = $xmlFile.SelectNodes("NTServices/NTService") | where-Object { [String]::IsNullOrEmpty($_.Properties.cpassword) -eq $false }                $preferenceType = "Services"            }            default            {   # effacer gppWithCpassword et preferenceType pour l'élément suivant.                try                {                    Clear-Variable -Name gppWithCpassword -ErrorAction SilentlyContinue                    Clear-Variable -Name preferenceType -ErrorAction SilentlyContinue                }                catch [Exception]{}            }        }        if ($gppWithCpassword -ne $null)        {            # Créez le nom d'objet Stratégie de groupe à partir du GUID extrait du chemin d'accès             $guidRegex = [regex]"\{(.*)\}"            $match = $guidRegex.match($fileFullPath)            if ($match.Success)            {               $gpoGuid = $match.groups[1].value               $gpoName = $gpoGuid            }            else            {               $gpoName = "Unknown"            }            if($isGPModuleAvailable -eq $true)            {                try                 {                       $gpoInfo = Get-GPO -Guid $gpoGuid -ErrorAction Continue                    $gpoName = $gpoInfo.DisplayName                }                catch [Exception] {                    Write-Host $_.Exception.Message                }            }            # affichez les préférences contenant cpassword            foreach ( $gpp in $gppWithCpassword )            {                if ( $preferenceType -eq "Drive Maps" )                {                    $prefLocation = $category + $driveMapPath + $preferenceType                }                else                {                    $prefLocation = $category + $commonPath + $preferenceType                }                $obj = New-Object -typeName PSObject                 $obj | Add-Member –membertype NoteProperty –name GPOName    –value ($gpoName)      –passthru |                       Add-Member -MemberType NoteProperty -name Preference -value ($gpp.Name)     -passthru |                       Add-Member -MemberType NoteProperty -name Path       -value ($prefLocation)                Write-Output $obj             }        } # fin si $gppWithCpassword    } # fin foreach $file} # fin fonctions Enum-PoliciesWithCpassword#-----------------------------------------------------------------------------------# Vérifiez que le chemin est valide. Énumérez tous les paramètres qui contiennent cpassword. #-----------------------------------------------------------------------------------if (Test-Path $Path ){    Enum-SettingsWithCpassword $Path}else{    Write-Warning "Ce répertoire n'existe pas : $Path"}  


Exemple d'utilisation (en supposant que le lecteur système est C)

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | Format-List

Remarque Sachez que vous pouvez également cibler n'importe quel objet Stratégie de groupe de sauvegarde pour le chemin au lieu du domaine.

Le script de détection génère une liste semblable à la suivante :



Pour les listes plus longues, pensez à enregistrer les résultats dans un fichier :

.\Get-SettingsWithCPassword.ps1 –path “C:\Windows\SYSVOL\domain” | ConvertTo-Html > gpps.html

Suppression des préférences CPassword

Afin de supprimer les préférences qui contiennent des données CPassword, nous vous suggérons d'utiliser la Console de gestion des stratégies de groupe (GPMC) sur le contrôleur de domaine ou depuis un client sur lequel les Outils d'administration de serveur distant sont installés. Vous pouvez supprimer n'importe quelle préférence en cinq étapes sur ces consoles. Pour ce faire, procédez comme suit :
  1. Dans la console GPMC, ouvrez la préférence qui contient des données CPassword.
  2. Modifiez l'action en Supprimer ou Désactiver, selon le cas applicable à la préférence.
  3. Cliquez sur OK pour enregistrer vos modifications.
  4. Attendez un ou deux cycles d'actualisation de stratégie de groupe pour que les modifications se propagent aux clients.
  5. Une fois les modifications appliquées à tous les clients, supprimez la préférence.
  6. Répétez les étapes 1 à 5 autant de fois que nécessaire pour nettoyer la totalité de votre environnement. Si le script de détection ne renvoie aucun résultat, vous avez terminé.

Informations sur le hachage de fichier

Nom de fichierHachage SHA1Hachage SHA256
Windows6.0-KB2928120-ia64.msuB2A74305CB56191774BFCF9FCDEAA983B26DC9A6DCE8C0F9CEB97DBF1F7B9BAF76458B3770EF01C0EDC581621BC8C3B2C7FD14E7
Windows6.0-KB2928120-x64.msu386457497682A2FB80BC93346D85A9C1BC38FBF71AF67EB12614F37F4AC327E7B5767AFA085FE676F6E81F0CED95D20393A1D38D
Windows6.0-KB2928120-x86.msu42FF283781CEC9CE34EBF459CA1EFE011D5132C3016D7E9DBBC5E487E397BE0147B590CFBBB5E83795B997894870EC10171E16D4
Windows6.1-KB2928120-ia64.msu5C2196832EC94B99AAF9B074D3938525B72196909958FA58134F55487521243AD9740BEE0AC210AC290D45C8322E424B3E5EBF16
Windows6.1-KB2928120-x64.msuEA5332F4E289DC799611EAB8E3EE2E86B7880A4B417A2BA34F8FD367556812197E2395ED40D8B394F9224CDCBE8AB3939795EC2A
Windows6.1-KB2928120-x86.msu7B7B6EE24CD8BE1AB3479F9E1CF9C98982C8BAB1603206D44815EF2DC262016ED13D6569BE13D06E2C6029FB22621027788B8095
Windows8-RT-KB2928120-x64.msuE18FC05B4CCA0E195E62FF0AE534BA39511A8593FCAED97BF1D61F60802D397350380FADED71AED64435D3E9EAA4C0468D80141E
Windows8-RT-KB2928120-x86.msuA5DFB34F3B9EAD9FA78C67DFC7ACACFA2FBEAC0B7F00A72D8A15EB2CA70F7146A8014E39A71CFF5E39596F379ACD883239DABD41
Windows8.1-KB2928120-x64.msuA07FF14EED24F3241D508C50E869540915134BB46641B1A9C95A7E4F0D5A247B9F488887AC94550B7F1D7B1198D5BCBA92F7A753
Windows8.1-KB2928120-x86.msuDE84667EC79CBA2006892452660EB99580D27306468EE4FA3A22DDE61D85FD3A9D0583F504105DF2F8256539051BC0B1EB713E9C
Windows8.1-KB2961899-x64.msu10BAE807DB158978BCD5D8A7862BC6B3EF20038BEC26618E23D9278FC1F02CA1F13BB289E1C6C4E0C8DA5D22E1D9CDA0DA8AFF51
Windows8.1-KB2961899-x86.msu230C64447CC6E4AB3AD7B4D4655B8D8CEFBFBE98E3FAD567AB6CA616E42873D3623A777185BE061232B952938A8846A974FFA7AF
update security_patch security_update security bug flaw vulnerability malicious attacker exploit registry unauthenticated buffer overrun overflow specially-formed scope specially-crafted denial of service DoS TSE
Propriétés

ID d'article : 2962486 - Dernière mise à jour : 10/02/2015 18:27:00 - Révision : 5.0

Windows RT 8.1, Windows 8.1, Windows 8.1 Enterprise, Windows 8.1 Pro, Windows Server 2012 R2 Datacenter, Windows Server 2012 R2 Essentials, Windows Server 2012 R2 Foundation, Windows Server 2012 R2 Standard, Windows 8, Windows 8 Enterprise, Windows 8 Pro, Windows Server 2012 Datacenter, Windows Server 2012 Essentials, Windows Server 2012 Foundation, Windows Server 2012 Standard, Windows 7 Service Pack 1, Windows Server 2008 R2 Service Pack 1, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2

  • atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2962486
Commentaires