Предупреждение C6248

При задании DACL SECURITY_DESCRIPTOR значение NULL приведет к незащищенным объектам.

Замечания

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

Имя анализа кода: CREATINGNULLDACL

Пример

Следующий код создает это предупреждение, так как в функцию SetSecurityDescriptorDacl передается значение NULL DACL:

#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".