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++.