Partager via


Renforcement de la sécurité des tâches

L’utilisation de la fonctionnalité de renforcement de la sécurité des tâches permet aux propriétaires de tâches d’exécuter leurs tâches avec les privilèges minimum requis. Notez que cette fonctionnalité est activée par défaut et que les propriétaires de tâches peuvent effectuer d’autres ajustements à l’aide du type d’identificateur de sécurité de jeton de processus de tâche et du tableau des privilèges requis pour la tâche.

Type DE SID de jeton de processus de tâche et tableau des privilèges requis pour la tâche

La spécification de ProcessTokenSidType au niveau de la définition de tâche permet aux propriétaires de tâches de demander l’exécution d’un processus de tâche avec le type SID « none » ou le type SID « sans restriction ». Si le champ est présent dans la définition de tâche, la validation garantit que la tâche UserId contient le nom ou la chaîne SID correspondante pour l’un de ces comptes de service intégrés du système d’exploitation : « SERVICE RÉSEAU » ou « SERVICE LOCAL ».

Le type SID « none » signifie que la tâche s’exécute dans un processus qui ne contient pas de SID de jeton de processus (aucune modification n’est apportée à la liste des groupes de jetons de processus). Dans ce cas, le SID du compte principal de tâche (LocalService/NetworkService) dispose d’un accès complet au jeton de processus.

Le type SID « non restreint » signifie qu’un SID de tâche est dérivé du chemin d’accès complet de la tâche et ajouté à la liste des groupes de jetons de processus. Par exemple, le \Microsoft\Windows\RAC\RACTask qui s’exécute dans le compte de service local, le SID de tâche est dérivé du nom Microsoft-Windows-RAC-RACTask où un « - » est remplacé par un « \ », car « \ » est un caractère de nom d’utilisateur non valide. Le nom de groupe bien connu pour le SID de la tâche est « NT TASK\<modified full task path> » (domainname\username format). La liste de contrôle d’accès discrétionnaire par défaut du jeton de processus (DACL) sera également modifiée pour permettre un contrôle total pour le SID de tâche et le SID du système local uniquement et le contrôle de lecture sur le SID du compte principal de tâche. « schtasks.exe /showsid /tn <full task path> » affiche le SID de tâche correspondant à la tâche.

Lorsqu’une action de tâche non COM démarre, le moteur de planification se connecte au compte principal de la tâche, obtient le jeton de processus et interroge la liste des privilèges dont dispose le jeton, puis le compare à la liste de privilèges spécifiée dans RequiredPrivileges. Si aucun privilège n’est spécifié dans ce dernier, celui-ci est marqué comme SE_PRIVILEGE_REMOVED. L’action exécutable est ensuite démarrée avec le handle de jeton résultant à l’aide de l’API CreateProcessAsUser.

Lorsqu’une action de tâche COM démarre, elle doit être activée par le processus taskhost.exe. Le moteur de planification interroge le bloc de contexte de chaque taskhost.exe en cours d’exécution avec le même compte que la tâche de démarrage. S’il constate qu’un processus hôte a été démarré avec un sur-ensemble de privilèges dont la tâche de démarrage a besoin, cette tâche est hébergée dans ce processus. S’il ne trouve pas un tel processus, il combine les informations de renforcement de toutes les tâches qui s’exécutent dans les taskhosts sous le compte de principal de tâche avec le masque RequiredPrivileges spécifié, puis démarre une nouvelle instance de taskhost.exe.

Si RequiredPrivileges n’est pas présent dans la définition de tâche, les privilèges par défaut du compte principal de tâche sans SeImpersonatePrivilege sont utilisés pour le processus de tâche. Si ProcessTokenSidType n’est pas présent dans la définition de tâche, « non restreint » est utilisé comme valeur par défaut.

Informations d’inscription des tâches

À propos du planificateur de tâches

Contextes de sécurité pour les tâches