Udostępnij za pośrednictwem


Information Disclosure (ujawnienie informacji)

Ujawnienie informacji umożliwia atakującemu uzyskanie cennych informacji o systemie. W związku z tym zawsze należy wziąć pod uwagę, jakie informacje ujawniasz i czy mogą być używane przez złośliwego użytkownika. Poniżej wymieniono możliwe ataki na ujawnienie informacji i zapewnia środki zaradcze dla każdego z nich.

Zabezpieczenia komunikatów i protokół HTTP

Jeśli używasz zabezpieczeń na poziomie komunikatów za pośrednictwem warstwy transportu HTTP, pamiętaj, że zabezpieczenia na poziomie komunikatów nie chronią nagłówków HTTP. Jedynym sposobem ochrony nagłówków HTTP jest użycie transportu HTTPS zamiast protokołu HTTP. Transport HTTPS powoduje szyfrowanie całego komunikatu, w tym nagłówków HTTP przy użyciu protokołu Secure Sockets Layer (SSL).

Informacje o zasadach

Zachowanie bezpieczeństwa zasad jest ważne, szczególnie w scenariuszach federacji, w których poufne wymagania dotyczące wystawionego tokenu lub informacje wystawcy tokenu są widoczne w zasadach. W takich przypadkach zaleca się zabezpieczenie punktu końcowego zasad usługi federacyjnej w celu uniemożliwienia osobie atakującej uzyskania informacji o usłudze, takich jak typ oświadczeń do wprowadzenia wystawionego tokenu lub przekierowanie klientów do złośliwych wystawców tokenów. Na przykład osoba atakująca może odnaleźć pary nazw użytkowników/haseł przez ponowne skonfigurowanie łańcucha zaufania federacyjnego w celu zakończenia działania wystawcy, który wykonał atak typu man-in-the-middle. Zaleca się również, aby klienci federacyjni, którzy uzyskują powiązania za pośrednictwem pobierania zasad, sprawdzić, czy ufają wystawcom w uzyskanym łańcuchu zaufania federacyjnego. Aby uzyskać więcej informacji na temat scenariuszy federacji, zobacz Federacja.

Zrzuty pamięci mogą ujawniać informacje o oświadczeniach

Gdy aplikacja ulegnie awarii, pliki dziennika, takie jak pliki utworzone przez dr Watson, mogą zawierać informacje o oświadczeniach. Te informacje nie powinny być eksportowane do innych jednostek, takich jak zespoły pomocy technicznej; w przeciwnym razie eksportowane są również informacje o oświadczeniach, które zawierają dane prywatne. Można temu zapobiec, nie wysyłając plików dziennika do nieznanych jednostek.

Adresy punktów końcowych

Adres punktu końcowego zawiera informacje potrzebne do komunikowania się z punktem końcowym. Zabezpieczenia protokołu SOAP muszą zawierać adres w całości w komunikatach negocjacji zabezpieczeń, które są wymieniane w celu negocjowania klucza symetrycznego między klientem a serwerem. Ponieważ negocjacje zabezpieczeń są procesem uruchamiania, nagłówki adresów nie mogą być szyfrowane podczas tego procesu. W związku z tym adres nie powinien zawierać żadnych poufnych danych; w przeciwnym razie prowadzi do ataków na ujawnienie informacji.

Certyfikaty przeniesione niezaszyfrowane

Jeśli używasz certyfikatu X.509 do uwierzytelniania klienta, certyfikat jest przesyłany w postaci zwykłej wewnątrz nagłówka protokołu SOAP. Należy pamiętać o tym jako o potencjalnym ujawnieniu informacji osobowych (PII). Nie jest to problem z TransportWithMessageCredential trybem, w którym cały komunikat jest szyfrowany przy użyciu zabezpieczeń na poziomie transportu.

Odwołania do usługi

Odwołanie do usługi to odwołanie do innej usługi. Na przykład usługa może przekazać odwołanie do usługi do klienta w trakcie operacji. Odwołanie do usługi jest również używane z weryfikatorem tożsamości zaufania, składnikiem wewnętrznym, który zapewnia tożsamość podmiotu zabezpieczeń docelowych przed ujawnieniem informacji, takich jak dane aplikacji lub poświadczenia do obiektu docelowego. Jeśli nie można zweryfikować tożsamości zaufania zdalnego lub jest niepoprawna, nadawca powinien upewnić się, że żadne dane nie zostały ujawnione, które mogłyby naruszyć bezpieczeństwo, aplikację lub użytkownika.

Środki zaradcze obejmują następujące kwestie:

  • Zakłada się, że odwołania do usług są wiarygodne. Należy zachować ostrożność przy każdym przenoszeniu wystąpień referencyjnych usługi, aby upewnić się, że nie zostały one naruszone.

  • Niektóre aplikacje mogą przedstawiać środowisko użytkownika, które umożliwia interaktywne ustanowienie zaufania na podstawie danych w dokumentacji usługi i danych zaufania sprawdzonych przez hosta zdalnego. Program WCF zapewnia punkty rozszerzalności dla takiego obiektu, ale użytkownik musi je zaimplementować.

NTLM

Domyślnie w środowisku domeny systemu Windows uwierzytelnianie systemu Windows używa protokołu Kerberos do uwierzytelniania i autoryzacji użytkowników. Jeśli z jakiegoś powodu nie można użyć protokołu Kerberos, program NT LAN Manager (NTLM) jest używany jako rezerwowy. To zachowanie można wyłączyć, ustawiając AllowNtlm właściwość na false. Problemy, o których należy pamiętać podczas zezwalania na protokół NTLM, obejmują:

  • Protokół NTLM uwidacznia nazwę użytkownika klienta. Jeśli nazwa użytkownika musi być przechowywana jako poufne, ustaw AllowNTLM właściwość powiązania na falsewartość .

  • Protokół NTLM nie zapewnia uwierzytelniania serwera. W związku z tym klient nie może upewnić się, że komunikuje się z odpowiednią usługą, gdy używasz protokołu NTLM jako protokołu uwierzytelniania.

Określanie poświadczeń klienta lub nieprawidłowej tożsamości wymusza użycie protokołu NTLM

Podczas tworzenia klienta określenie poświadczeń klienta bez nazwy domeny lub określenie nieprawidłowej tożsamości serwera powoduje użycie protokołu NTLM zamiast protokołu Kerberos (jeśli AllowNtlm właściwość jest ustawiona na truewartość ). Ponieważ protokół NTLM nie wykonuje uwierzytelniania serwera, informacje mogą być potencjalnie ujawnione.

Na przykład można określić poświadczenia klienta systemu Windows bez nazwy domeny, jak pokazano w poniższym kodzie języka Visual C#.

MyChannelFactory.Credentials.Windows.ClientCredential = new System.Net.NetworkCredential("username", "password");

Kod nie określa nazwy domeny, dlatego będzie używany protokół NTLM.

Jeśli domena jest określona, ale określono nieprawidłową nazwę główną usługi przy użyciu funkcji tożsamości punktu końcowego, jest używana funkcja NTLM. Aby uzyskać więcej informacji na temat sposobu określenia tożsamości punktu końcowego, zobacz Tożsamość usługi i uwierzytelnianie.

Zobacz też