Udostępnij za pośrednictwem


154

Ostrzeżenie C6248: ustawienie DACL SECURITY_DESCRIPTOR na NULL spowoduje niechroniony obiekt

Ostrzeżenie to identyfikuje wywołanie, która ustawia pole listy DACL SECURITY_DESCRIPTOR na null.Jeśli lista DACL, należąca do deskryptora zabezpieczeń obiektu ma wartość NULL, tworzona jest lista DACL o wartości null.Lista DACL o wartości null przyznaje pełny dostęp każdemu użytkownikowi, którzy go zażąda; w odniesieniu do obiektu nie wykonywane jest sprawdzenie bezpieczeństwa.Nie należy mylić DACL o wartości null z pustą listą DACL.Pusta lista DACL jest poprawnie zaalokowaną i zainicjowaną DACL, która nie zawiera ACE.Pusta lista DACL nie przyznaje dostępu do przypisanego do niej obiektu.

Obiekty posiadające listy DACL o wartości null są narażone na zmianę ich deskryptorów zabezpieczeń przez złośliwych użytkowników tak, aby nikt nie miał dostępu do obiektu.

Nawet jeśli wszyscy potrzebują dostępu do obiektu, powinien być on zabezpieczony tak, że tylko administratorzy mogą zmieniać jego zabezpieczenia.Jeśli tylko twórca potrzebuje dostępu do obiektu, lista DACL nie powinna być ustawiona na obiekt; system wybierze odpowiednią wartość domyślną.

Przykład

Poniższy kod generuje to ostrzeżenie, ponieważ DACL o wartości null jest przekazana do funkcji 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
    }
}

Aby zobaczyć pełny przykład dotyczący sposobu tworzenia deskryptora zabezpieczeń, zobacz Tworzenie deskryptora zabezpieczeń dla nowego obiektu w C++.Aby uzyskać więcej informacji, zobacz Tworzenie listy DACL.