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


C6248

Обновлен: Ноябрь 2007

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

Полный пример создания дескриптора безопасности см. в разделе Создание дескриптора безопасности для нового объекта в C++.

См. также

Другие ресурсы

Создание DACL