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.