C6248

avertissement C6248 : La définition d'une liste DACL d'un SECURITY_DESCRIPTOR à NULL aboutit à un objet non protégé

Cet avertissement identifie un appel qui affecte la valeur null au champ DACL d'un SECURITY_DESCRIPTOR.Si la liste DACL appartenant au descripteur de sécurité d'un objet a la valeur NULL, une liste DACL nulle est créée.Une liste DACL nulle accorde un accès total à tout utilisateur qui en fait la demande ; le contrôle de sécurité normal n'est pas exécuté pour l'objet.Une liste DACL nulle ne doit pas être confondue avec une liste DACL vide.Une liste DACL vide est une liste DACL correctement allouée et initialisée qui ne contient pas d'entrées de contrôles d'accès.Elle n'accorde aucun accès à l'objet qui lui est assignée.

Les descripteurs de sécurité des objets contenant des listes DACL nulles peuvent être modifiés par des utilisateurs malveillants afin que personne n'ait accès à l'objet.

Même si tous les utilisateurs ont besoin d'accéder à un objet, celui-ci doit être sécurisé afin que seuls les administrateurs puissent modifier sa sécurité.Si seul le créateur a besoin d'un accès à un objet, une liste DACL ne doit pas être définie sur l'objet ; le système choisit une valeur par défaut appropriée.

Exemple

Le code suivant génère cet avertissement car une liste DACL nulle est passée à la fonction SetSecurityDescriptorDacl :

#include <windows.h>

void f( PSECURITY_DESCRIPTOR pSecurityDescriptor )
{
  if (SetSecurityDescriptorDacl(pSecurityDescriptor,
                                TRUE,     // Dacl Present
                                NULL,     // NULL pointer to DACL    
                                FALSE))   // Defaulted

    {
      // Dacl is now applied to an object
    }
}

Pour obtenir un exemple de création d'un descripteur de sécurité, consultez Création d'un descripteur de sécurité pour un nouvel objet C++ (page éventuellement en anglais).Pour plus d'informations, consultez Création d'une liste DACL (page éventuellement en anglais).