Поделиться через


C6248

Предупреждение C6248: установка значения NULL для DACL для SECURITY_DESCRIPTOR приведет к наличию незащищенного объекта.

Это предупреждение означает вызов, устанавливающий полю SECURITY_DESCRIPTOR в DACL значение null.Если установить для DACL, принадлежащего дескриптору безопасности объекта, значение NULL, создается нулевой DACL.Нулевой DACL предоставляет полный доступ всем пользователям, запросившим его; обычные меры проверки безопасности не применяются к объекту.Нулевой DACL не следует путать с пустым DACL.Пустой DACL — это правильно выделенный и инициализированный DACL, не содержащий ACE.Пустой DACL не предоставляет доступа к объекту, которому он присвоен.

Если у объекта нулевой DACL, то злоумышленники могут изменять дескрипторы безопасности таких объектов, чтобы к ним никто не мог получить доступ.

Даже если доступ к объекту нужно предоставить всем, разрешения безопасности для объект должны быть настроены так, чтобы только администраторы могли их изменять.Если доступ к объекту требуется только для его создателя, для объекта не следует устанавливать DACL, система выберет нужное разрешение по умолчанию.

Пример

Это предупреждение возникает в следующем примере кода, поскольку нулевой DACL передается функции 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
    }
}

Полный текст примера создания дескриптора безопасности см. на странице Creating a Security Descriptor for a New Object in C++.Дополнительные сведения см. в разделе Creating a DACL.