Dienstverweigerung (Denial of Service)Denial of Service

Eine Dienstverweigerung tritt auf, wenn ein System derart überlastet ist, dass Nachrichten nicht verarbeitet werden können oder extrem langsam verarbeitet werden.Denial of service occurs when a system is overwhelmed in such a way that messages cannot be processed, or they are processed extremely slowly.

Übermäßiger SpeicherverbrauchExcess Memory Consumption

Beim Lesen eines XML-Dokuments mit einer großen Anzahl von eindeutigen lokalen Namen, Namespaces oder Präfixen kann ein Problem auftreten.A problem can occur when reading an XML document with a large number of unique local names, namespaces, or prefixes. Wenn Sie eine von XmlReader abgeleitete Klasse verwenden und für jedes Element die Eigenschaft LocalName, Prefix oder NamespaceURI aufrufen, wird die zurückgegebene Zeichenfolge einer NameTable hinzugefügt.If you are using a class that derives from XmlReader, and you call either the LocalName, Prefix or NamespaceURI property for each item, the returned string is added to a NameTable. Die Größe der in der NameTable gespeicherten Auflistung nimmt nie ab, sodass ein virtueller Speicherverlust an Zeichenfolgenhandles eintritt.The collection held by the NameTable never decreases in size, creating a virtual "memory leak" of the string handles.

Mögliche Gegenmaßnahmen:Mitigations include:

  • Leiten Sie von der NameTable-Klasse ab, und erzwingen Sie ein maximales Größenkontingent.Derive from the NameTable class and enforce a maximum size quota. (Die Verwendung einer NameTable lässt sich nicht umgehen, und der Austausch einer vollen NameTable ist nicht möglich.)(You cannot prevent the use of a NameTable or switch the NameTable when it is full.)

  • Verwenden Sie nach Möglichkeit anstelle der genannten Eigenschaften die MoveToAttribute-Methode mit der IsStartElement-Methode. Diese Methoden geben keine Zeichenfolgen zurück und umgehen somit das Problem eines Überlaufs der NameTable-Auflistung.Avoid using the properties mentioned and instead use the MoveToAttribute method with the IsStartElement method where possible; those methods do not return strings and thus avoid the problem of overfilling the NameTable collection.

Ein bösartiger Client sendet übermäßig viele Lizenzanforderungen an den DienstMalicious Client Sends Excessive License Requests to Service

Wenn ein bösartiger Client einen Dienst mit übermäßig vielen Lizenzanforderungen überschwemmt, kann dies eine hohe Speicherauslastung auf dem Server bewirken.If a malicious client bombards a service with excessive license requests, it can cause the server to use excessive memory.

Gegenmaßnahme: Verwenden Sie die folgenden Eigenschaften der LocalServiceSecuritySettings-Klasse:Mitigation: Use the following properties of the LocalServiceSecuritySettings class:

  • MaxCachedCookies: Steuert die maximale Anzahl zeitlich begrenzter SecurityContextToken, die der Server nach einer SPNego- oder SSL-Aushandlung zwischenspeichert.MaxCachedCookies: controls the maximum number of time-bounded SecurityContextTokens that the server caches after SPNego or SSL negotiation.

  • IssuedCookieLifetime: Steuert die Lebensdauer der SecurityContextTokens, die der Dienst nach der SPNego- oder SSL-Aushandlung ausstellt.IssuedCookieLifetime: controls the lifetime of the SecurityContextTokens that the server issues following SPNego or SSL negotiation. Der Server speichert die SecurityContextToken für diesen Zeitraum zwischen.The server caches the SecurityContextTokens for this period of time.

  • MaxPendingSessions: Steuert die maximale Anzahl sicherer Konversationen, die auf dem Server erstellt werden, für die jedoch keine Anwendungsnachrichten verarbeitet wurden.MaxPendingSessions: controls the maximum number of secure conversations that are established at the server but for which no application messages have been processed. Dieses Kontingent verhindert, dass Clients sichere Konversationen auf dem Dienst erstellen, sodass der Dienst den Zustand pro Client beibehält, sie jedoch nicht verwendet.This quota prevents clients from establishing secure conversations at the service, thereby causing the service to maintain state per client, but never using them.

  • InactivityTimeout: Steuert die maximale Zeit, die der Dienst eine sichere Konversation aufrechterhält, ohne eine Anwendungsnachricht vom Client für die Konversation zu erhalten.InactivityTimeout: controls the maximum time the service keeps a secure conversation alive without receiving an application message from the client for the conversation. Dieses Kontingent verhindert, dass Clients sichere Konversationen auf dem Dienst erstellen, sodass der Dienst den Zustand pro Client beibehält, sie jedoch nicht verwendet.This quota prevents clients from establishing secure conversations at the service, thereby causing the service to maintain state per client, but never using them.

WSDualHttpBinding oder benutzerdefinierte Dualbindungen erfordern ClientauthentifizierungWSDualHttpBinding or Dual Custom Bindings Require Client Authentication

Standardmäßig ist die Sicherheit für WSDualHttpBinding aktiviert.By default, the WSDualHttpBinding has security enabled. Es ist jedoch möglich, dass, wenn die Clientauthentifizierung durch Festlegen der ClientCredentialType-Eigenschaft auf None deaktiviert ist, ein böswilliger Benutzer einen Denial-of-Service-Angriff auf einen dritten Dienst verursacht.It is possible, however, that if the client authentication is disabled by setting the ClientCredentialType property to None, a malicious user can cause a denial of service attack on a third service. Die Ursache dafür ist, dass ein böswilliger Benutzer den Dienst anweisen kann, einen Nachrichtenstream an einen dritten Dienst zu senden.This can occur because a malicious client can direct the service to send a stream of messages to a third service.

Legen Sie die Eigenschaft nicht auf None fest, um diese Gefahr zu umgehen.To mitigate this, do not set the property to None. Bedenken Sie diese Möglichkeit auch beim Erstellen einer benutzerdefinierten Nachricht mit dualem Nachrichtenmuster.Also be aware of this possibility when creating a custom binding that has a dual message pattern.

Überwachungsereignisprotokoll kann ausgefüllt werdenAuditing Event Log Can Be Filled

Wenn ein böswilliger Benutzer erkennt, dass die Überwachung aktiviert ist, kann dieser Angreifer ungültige Nachrichten senden, die dazu führen, dass Überwachungseinträge geschrieben werden.If a malicious user understands that auditing is enabled, that attacker can send invalid messages that cause audit entries to be written. Wenn das Überwachungsprotokoll auf diese Weise ausgefüllt wird, schlägt das Überwachungssystem fehl.If the audit log is filled in this manner, the auditing system fails.

Legen Sie die SuppressAuditFailure-Eigenschaft auf true fest, und verwenden Sie die Eigenschaften der Ereignisanzeige zum Steuern des Überwachungsverhaltens, um diese Gefahr zu umgehen.To mitigate this, set the SuppressAuditFailure property to true and use the properties of the Event Viewer to control the auditing behavior. Weitere Informationen zum Verwenden der Ereignisanzeige zum Anzeigen und Verwalten von Ereignisprotokollen finden Sie unter Ereignisanzeige.For more information about using the Event Viewer to view and manage event logs, see Event Viewer. Weitere Informationen finden Sie unter Überwachung.For more information, see Auditing.

Ungültige Implementierungen von IAuthorizationPolicy können zu Dienstfehlern führenInvalid Implementations of IAuthorizationPolicy Can Cause Service Hangs

Das Aufrufen der Evaluate-Methode für eine fehlerhafte Implementierung der IAuthorizationPolicy-Schnittstelle kann Dienstfehler verursachen.Calling the Evaluate method on a faulty implementation of the IAuthorizationPolicy interface can cause the service to hang.

Gegenmaßnahme: Verwenden Sie ausschließlich vertrauenswürdigen Code.Mitigation: Use only trusted code. Verwenden Sie also nur selbst geschriebenen und getesteten Code oder Code von einem vertrauenswürdigen Anbieter.That is, use only code that you have written and tested, or that comes from a trusted provider. Lassen Sie nicht ohne gründliche Prüfung zu, dass nicht vertrauenswürdige Erweiterungen der IAuthorizationPolicy in Ihren Code geladen werden.Do not allow untrusted extensions of IAuthorizationPolicy to be plugged into your code without due consideration. Dies gilt für alle in einer Dienstimplementierung verwendeten Erweiterungen.This applies to all extensions used in a service implementation. WCFWCF unterscheidet nicht zwischen Anwendungscode und Fremdcode, der über Erweiterungspunkte geladen wird. does not make any distinction between application code and foreign code that is plugged in using extensibility points.

Maximale Größe des Kerberos-Tokens muss möglicherweise geändert werdenKerberos Maximum Token Size May Need Resizing

Gehört ein Client zu vielen Gruppen (ungefähr 900, obwohl die tatsächliche Anzahl je nach den Gruppen variiert), kann ein Problem auftreten, wenn ein Nachrichtenheaderblock größer als 64 Kilobyte ist.If a client belongs to a large number of groups (approximately 900, although the actual number varies depending on the groups), a problem may occur when a message header's block exceeds 64 kilobytes. In diesem Fall können Sie die maximale Kerberos-Tokengröße erhöhen, wie in den Microsoft Support-Artikel beschrieben "Internet Explorer Kerberos-Authentifizierung funktioniert nicht wegen nicht ausreichenden Puffers Herstellen einer Verbindung mit IIS."In that case, you can increase the maximum Kerberos token size, as described in the Microsoft Support article "Internet Explorer Kerberos authentication does not work because of an insufficient buffer connecting to IIS." Sie müssen unter Umständen auch die maximale WCFWCF-Nachrichtengröße erhöhen, um sie an den größeren Kerberos-Token anzupassen.You may also need to increase the maximum WCFWCF message size to accommodate the larger Kerberos token.

Automatische Registrierung führt zu mehreren Zertifikaten mit gleichem Antragstellernamen für den ComputerAutoenrollment Results in Multiple Certificates with Same Subject Name for Machine

Automatische Registrierung ist die Fähigkeit von Windows Server 2003Windows Server 2003 -Benutzer und-Computer für Zertifikate automatisch registrieren.Autoenrollment is the capability of Windows Server 2003Windows Server 2003 to automatically enroll users and computers for certificates. Befindet sich ein Computer in einer Domäne mit aktivierter Funktion, wird ein X.509-Zertifikat mit dem beabsichtigten Zweck der Clientauthentifizierung automatisch erstellt und in den persönlichen Zertifikatspeicher des lokalen Computers eingefügt, wenn ein neuer Computer mit dem Netzwerk verbunden wird.When a machine is on a domain with the feature enabled, an X.509 certificate with the intended purpose of client authentication is automatically created and inserted into the local computer's Personal certificates store whenever a new machine is joined to the network. Die automatische Registrierung verwendet jedoch den gleichen Antragstellernamen für alle Zertifikate, die sie im Cache erstellt.However, autoenrollment uses the same subject name for all certificates it creates in the cache.

Dies kann zu Fehlern beim Öffnen von WCFWCF-Diensten in Domänen mit automatischer Registrierung führen.The impact is that WCFWCF services may fail to open on domains with autoenrollment. Die Ursache ist, dass die standardmäßigen Suchkriterien des Dienstes für X.509-Anmeldeinformationen mehrdeutig sein können, da mehrere Zertifikate mit dem vollqualifizierten DNS (Domain Name System) des Computers vorhanden sind.This occurs because the default service X.509 credential search criteria might be ambiguous because multiple certificates with the machine's fully qualified Domain Name System (DNS) name exist. Ein Zertifikat stammt aus der automatischen Registrierung, das andere kann ein selbst ausgestelltes Zertifikat sein.One certificate originates from autoenrollment; the other might be a self-issued certificate.

Um dies abzuschwächen, verweisen Sie Zertifikat zu verwenden, indem Sie eine feiner abgestimmte Suchkriterium auf die <ServiceCredentials >.To mitigate this, reference the exact certificate to use by using a more precise search criterion on the <serviceCredentials>. Verwenden Sie z. B. die FindByThumbprint-Option, und geben Sie das Zertifikat anhand seines eindeutigen Fingerabdrucks an (Hash).For example, use the FindByThumbprint option, and specify the certificate by its unique thumbprint (hash).

Weitere Informationen zum Feature "Automatische Registrierung" finden Sie unter automatischen Registrierung von Zertifikaten in Windows Server 2003.For more information about the autoenrollment feature, see Certificate Autoenrollment in Windows Server 2003.

Der letzte von mehreren für die Autorisierung verwendeten alternativen AntragstellernamenLast of Multiple Alternative Subject Names Used for Authorization

In dem seltenen Fall, dass ein X.509-Zertifikat mehrere alternative Antragstellernamen enthält und Sie die Verwendung des alternativen Antragstellernamens autorisieren, kann die Autorisierung fehlschlagen.In the rare case when an X.509 certificate contains multiple alternative subject names, and you authorize using the alternative subject name, authorization may fail.

Schutz von Konfigurationsdateien mit ZugriffssteuerungslistenProtect Configuration Files with ACLs

Sie können erforderliche und optionale Ansprüche im Code und in Konfigurationsdateien für von CardSpaceCardSpace ausgestellten Token angeben.You can specify required and optional claims in code and configuration files for CardSpaceCardSpace issued tokens. Dies führt dazu, dass entsprechende Elemente in RequestSecurityToken-Nachrichten ausgegeben werden, die an den Sicherheitstokendienst gesendet werden.This results in corresponding elements being emitted in RequestSecurityToken messages that are sent to the security token service. Ein Angreifer kann den Code oder die Konfiguration ändern, um erforderliche oder optionale Ansprüche zu entfernen, sodass der Sicherheitstokendienst möglicherweise einen Token ausstellt, der keinen Zugriff auf den Zieldienst gewährt.An attacker can modify code or configuration to remove required or optional claims, potentially getting the security token service to issue a token that does not allow access to the target service.

Erfordern Sie zum Ändern der Konfigurationsdatei den Zugriff auf den Computer, um diese Gefahr zu umgehen.To mitigate: Require access to the computer to modify the configuration file. Verwenden Sie Zugriffssteuerungslisten zum Sichern von Konfigurationsdateien.Use file access control lists (ACLs) to secure configuration files. WCFWCF erfordert, dass sich Code im Anwendungsverzeichnis oder im globalen Assemblycache befindet, bevor er aus der Konfiguration geladen werden kann. requires that code be in the application directory or the global assembly cache before it will allow such code to be loaded from configuration. Verwenden Sie Verzeichnis-Zugriffssteuerungslisten zum Sichern von Verzeichnissen.Use directory ACLs to secure directories.

Maximale Anzahl von sicheren Sitzungen für einen Dienst wurde erreichtMaximum Number of Secure Sessions for a Service Is Reached

Wenn ein Client erfolgreich durch einen Dienst authentifiziert wird und eine sichere Verbindung mit dem Dienst eingerichtet wird, verfolgt der Dienst die Sitzung, bis sie vom Client abgebrochen wird oder abläuft.When a client is successfully authenticated by a service and a secure session is established with the service, the service keeps track of the session until the client cancels it or the session expires. Jede eingerichtete Sitzung wird auf den Grenzwert für die maximale Anzahl gleichzeitiger aktiver Sitzungen mit dem Dienst angerechnet.Every established session counts against the limit for the maximum number of active simultaneous sessions with a service. Wenn dieser Grenzwert erreicht wird, werden Clients abgelehnt, die versuchen, eine neue Sitzung mit diesem Dienst zu erstellen, bis eine oder mehrere aktive Sitzungen ablaufen oder vom Client abgebrochen werden.When this limit is reached, clients that attempt to create a new session with that service are rejected until one or more active sessions expire or are canceled by a client. Ein Client kann über mehrere Sitzungen mit einem Dienst verfügen, und jede dieser Sitzungen wird auf den Grenzwert angerechnet.A client can have multiple sessions with a service, and each one of those sessions counts toward the limit.

Hinweis

Wenn Sie zustandsbehaftete Sitzungen verwenden, trifft der vorhergehende Absatz nicht zu.When you use stateful sessions, the previous paragraph does not apply. Weitere Informationen zu statusbehaftete Sitzungen finden Sie unter Vorgehensweise: Erstellen Sie ein Sicherheitskontexttoken für eine Sicherheitssitzung.For more information about stateful sessions, see How to: Create a Security Context Token for a Secure Session.

Legen Sie den Grenzwert für die maximale Anzahl aktiver Sitzungen und die maximale Lebensdauer für eine Sitzung über die SecurityBindingElement-Eigenschaft der SecurityBindingElement-Klasse fest, wenn Sie dieses Sicherheitsproblem vermeiden möchten.To mitigate this, set the limit for the maximum number of active sessions and the maximum lifetime for a session by setting the SecurityBindingElement property of the SecurityBindingElement class.

Siehe auchSee Also

SicherheitsüberlegungenSecurity Considerations
Offenlegung vertraulicher InformationenInformation Disclosure
Erhöhen der BerechtigungenElevation of Privilege
Denial-of-Service-AngriffeDenial of Service
ReplayangriffeReplay Attacks
ManipulationTampering
Nicht unterstützte SzenarienUnsupported Scenarios