Compartilhar via


C6248

Aviso C6248: a definição de DACL de um SECURITY_DESCRIPTOR NULL resultarão em um objeto desprotegido

Este aviso identifica uma chamada que define o campo DACL de um SECURITY_DESCRIPTOR como null. Se a DACL ao qual pertence o descritor de segurança de um objeto é definida como nulo, nulo DACL é criado. Uma DACL null concede acesso total a qualquer usuário que solicita a ele; a verificação de segurança normal não é executada com relação ao objeto. Uma DACL null não deve ser confundida com uma DACL vazia. Uma DACL vazia é uma DACL alocada e corretamente inicializada que não contém nenhum ACEs. Uma DACL vazia não concede nenhum acesso ao objeto, a que ele é atribuído.

Objetos que possuem DACLs null podem ter os descritores de segurança alterados por usuários mal-intencionados para que ninguém tenha acesso ao objeto.

Mesmo se todos precisam de acesso a um objeto, o objeto deve ser protegido para que somente os administradores podem alterar a sua segurança. Se apenas o criador precisa acessar um objeto, uma DACL não deve ser definida no objeto; o sistema escolherá um padrão apropriado.

Exemplo

O código a seguir gera este aviso porque um null DACL é passado para o SetSecurityDescriptorDacl função:

#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
    }
}

Para ver um exemplo completo sobre como criar o descritor de segurança, consulte Criando um descritor de segurança para um novo objeto em C++. Para obter mais informações, consulte a criação de uma DACL.