Advertencia C6248

Si establece DACL de SECURITY_DESCRIPTOR como NULL, dará como resultado un objeto desprotegido.

Comentarios

Si la DACL que pertenece al descriptor de seguridad de un objeto se establece en NULL, se crea una DACL null. Una DACL null concede acceso total a cualquier usuario que lo solicite; no se realiza la comprobación de seguridad normal con respecto al objeto. Una DACL null no se debería confundir con una DACL vacía. Una DACL vacía es una DACL inicializada y con propiedades asignadas correctamente que no contiene ninguna ACE. Una DACL vacía no concede ningún acceso al objeto al que se asigna. Usuarios malintencionados podrían modificar los descriptores de seguridad de los objetos que tienen DACL null, lo que haría que nadie tuviera acceso al objeto. Incluso en una situación en la que todos los usuarios necesitan acceso a un objeto, únicamente los administradores deben poder modificar la seguridad de ese objeto. Si únicamente el creador necesita acceso a un objeto, no se debe establecer una DACL en dicho objeto; el sistema elegirá el valor predeterminado adecuado.

Nombre del análisis de código: CREATINGNULLDACL

Ejemplo

El código siguiente genera esta advertencia porque se pasa una DACL null a la función 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
    }
}

Para ver un ejemplo completo de cómo crear un descriptor de seguridad, consulte el artículo sobre la creación de un descriptor de seguridad para un nuevo objeto en C++. Para obtener más información sobre cómo crear DACL, vea Creación de una DACL.