Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Denial of Service tritt auf, wenn ein System so überfordert ist, dass Nachrichten nicht verarbeitet werden können oder sie extrem langsam verarbeitet werden.
Übermäßige Arbeitsspeicherauslastung
Beim Lesen eines XML-Dokuments mit einer großen Anzahl eindeutiger lokaler Namen, Namespaces oder Präfixe kann ein Problem auftreten. Wenn Sie eine Klasse verwenden, die von XmlReader abgeleitet wird, und Sie entweder die LocalName, Prefix oder NamespaceURI Eigenschaft für jedes Element aufrufen, wird die zurückgegebene Zeichenfolge einem NameTable hinzugefügt. Die Größe der in der NameTable gespeicherten Auflistung nimmt nie ab, sodass ein virtueller Speicherverlust an Zeichenfolgenhandles eintritt.
Zu den Gegenmaßnahmen gehören:
Leiten Sie von der NameTable Klasse ab und setzen Sie ein maximales Größenlimit durch. (Sie können die Verwendung eines NameTable oder das Umschalten des NameTable nicht verhindern, wenn er voll ist.)
Vermeiden Sie die Verwendung der erwähnten Eigenschaften, und verwenden Sie stattdessen die MoveToAttribute Methode nach Möglichkeit mit der IsStartElement Methode. Diese Methoden geben keine Zeichenfolgen zurück und vermeiden sie daher das Problem, die NameTable Auflistung zu überfüllen.
Bösartiger Client sendet übermäßige Lizenzanforderungen an den Dienst
Wenn ein böswilliger Client einen Dienst mit übermäßigen Lizenzanforderungen bombardiert, kann er dazu führen, dass der Server übermäßigen Arbeitsspeicher verwendet.
Entschärfung: Verwenden Sie die folgenden Eigenschaften der LocalServiceSecuritySettings Klasse:
MaxCachedCookies: Steuert die maximale Anzahl zeitlich begrenzter
SecurityContextToken
, die der Server nach einerSPNego
- oderSSL
-Aushandlung zwischenspeichert.IssuedCookieLifetime: Steuert die Lebensdauer der
SecurityContextTokens
, die der Dienst nach derSPNego
- oderSSL
-Aushandlung ausstellt. Der Server speichert dieSecurityContextToken
s für diesen Zeitraum.MaxPendingSessions: steuert die maximale Anzahl sicherer Unterhaltungen, die auf dem Server eingerichtet wurden, für die jedoch keine Anwendungsnachrichten verarbeitet wurden. Dieses Kontingent verhindert, dass Clients sichere Unterhaltungen auf dem Dienst etablieren, was dazu führt, dass der Dienst den Status pro Client beibehält, ihn aber nie verwendet.
InactivityTimeout: steuert die maximale Zeit, in der der Dienst eine sichere Unterhaltung aktiv hält, ohne eine Anwendungsnachricht vom Client für die Unterhaltung zu erhalten. Dieses Kontingent verhindert, dass Clients sichere Unterhaltungen auf dem Dienst etablieren, was dazu führt, dass der Dienst den Status pro Client beibehält, ihn aber nie verwendet.
WSDualHttpBinding oder benutzerdefinierte Dualbindungen erfordern Clientauthentifizierung
Standardmäßig ist die WSDualHttpBinding Sicherheit aktiviert. Es ist jedoch möglich, dass ein böswilliger Benutzer einen Denial-of-Service-Angriff auf einen dritten Dienst verursachen kann, wenn die Clientauthentifizierung durch das Setzen der ClientCredentialType Eigenschaft auf None deaktiviert ist. Dies kann auftreten, da ein böswilliger Client den Dienst damit beauftragen kann, einen Nachrichtenstrom an einen dritten Dienst zu senden.
Um dies zu verringern, legen Sie die Eigenschaft nicht auf None
. Beachten Sie auch diese Möglichkeit beim Erstellen einer benutzerdefinierten Bindung mit einem dualen Nachrichtenmuster.
Überwachungsereignisprotokoll kann ausgefüllt werden
Wenn ein böswilliger Benutzer versteht, dass die Überwachung aktiviert ist, kann dieser Angreifer ungültige Nachrichten senden, die dazu führen, dass Überwachungseinträge geschrieben werden. Wenn das Überwachungsprotokoll auf diese Weise ausgefüllt ist, schlägt das Überwachungssystem fehl.
Um dies zu vermeiden, legen Sie die SuppressAuditFailure-Eigenschaft auf true
fest und verwenden Sie die Eigenschaften der Ereignisanzeige, um das Überwachungsverhalten zu steuern. Weitere Informationen zur Verwendung der Ereignisanzeige zum Anzeigen und Verwalten von Ereignisprotokollen finden Sie unter "Ereignisanzeige". Weitere Informationen finden Sie unter Überwachung.
Ungültige Implementierungen von IAuthorizationPolicy können dazu führen, dass der Dienst nicht mehr reagiert.
Das Aufrufen der Evaluate Methode für eine fehlerhafte Implementierung der IAuthorizationPolicy Schnittstelle kann dazu führen, dass der Dienst nicht mehr reagiert.
Entschärfung: Verwenden Sie nur vertrauenswürdigen Code. Verwenden Sie dazu nur Code, den Sie geschrieben und getestet haben oder von einem vertrauenswürdigen Anbieter stammen. Lassen Sie nicht zu, dass nicht vertrauenswürdige Erweiterungen IAuthorizationPolicy ohne sorgfältige Prüfung in Ihrem Code verwendet werden. Dies gilt für alle Erweiterungen, die in einer Dienstimplementierung verwendet werden. WCF unterscheidet nicht zwischen Anwendungscode und Fremdcode, der mit Erweiterungspunkten verbunden ist.
Die maximale Größe des Kerberos-Tokens muss möglicherweise neu dimensioniert werden.
Wenn ein Client zu einer großen Anzahl von Gruppen gehört (ca. 900, obwohl die tatsächliche Zahl je nach Gruppe variiert), kann ein Problem auftreten, wenn der Block eines Nachrichtenkopfs 64 KB überschreitet. In diesem Fall können Sie die maximale Größe des Kerberos-Tokens erhöhen. Möglicherweise müssen Sie auch die maximale WCF-Nachrichtengröße erhöhen, um das größere Kerberos-Token zu berücksichtigen.
Automatische Registrierung führt zu mehreren Zertifikaten mit gleichem Antragstellernamen für den Computer
Die automatische Registrierung ist die Funktion von Windows Server 2003, Benutzer und Computer automatisch für Zertifikate zu registrieren. Wenn sich ein Computer in einer Domäne mit aktiviertem Feature befindet, wird automatisch ein X.509-Zertifikat mit dem beabsichtigten Zweck der Clientauthentifizierung erstellt und in den persönlichen Zertifikatspeicher des lokalen Computers eingefügt, wenn ein neuer Computer mit dem Netzwerk verbunden ist. Die automatische Zertifikatsregistrierung verwendet jedoch denselben Subjektnamen für alle Zertifikate, die sie im Cache erstellt.
Die Auswirkung besteht darin, dass WCF-Dienste möglicherweise nicht in Domänen mit automatischer Registrierung geöffnet werden. Dies tritt auf, da die standardmäßigen X.509-Suchkriterien für Anmeldeinformationen möglicherweise mehrdeutig sind, da mehrere Zertifikate mit dem vollqualifizierten DNS-Namen (Domain Name System) des Computers vorhanden sind. Ein Zertifikat stammt aus der automatischen Registrierung; die andere kann ein selbst ausgestelltes Zertifikat sein.
Um dies zu verringern, verweisen Sie auf das genaue Zertifikat, das verwendet werden soll, indem Sie ein genaueres Suchkriterium für die <ServiceCredentials> verwenden. Verwenden Sie beispielsweise die FindByThumbprint Option, und geben Sie das Zertifikat anhand des eindeutigen Fingerabdrucks (Hash) an.
Weitere Informationen zum Feature für die automatische Registrierung finden Sie unter Automatische Zertifikatregistrierung in Windows Server 2003.
Letzter von mehreren alternativen Betreffnamen, die für die Autorisierung verwendet werden
In dem seltenen Fall, wenn ein X.509-Zertifikat mehrere alternative Antragstellernamen enthält und Sie die Verwendung des alternativen Antragstellernamens autorisieren, kann die Autorisierung fehlschlagen.
Schützen von Konfigurationsdateien mit ACLs
Sie können erforderliche und optionale Ansprüche in Code- und Konfigurationsdateien für ausgestellte CardSpace-Token angeben. Dies führt dazu, dass entsprechende Elemente in RequestSecurityToken
Nachrichten ausgegeben werden, die an den Sicherheitstokendienst gesendet werden. Ein Angreifer kann Code oder Konfiguration ändern, um erforderliche oder optionale Ansprüche zu entfernen, und möglicherweise den Sicherheitstokendienst abrufen, um ein Token ausstellen, das keinen Zugriff auf den Zieldienst zulässt.
Zur Entschärfung: Anfordern des Zugriffs auf den Computer, um die Konfigurationsdatei zu ändern. Verwenden Sie Zugriffssteuerungslisten (File Access Control Lists, ACLs), um Konfigurationsdateien zu sichern. WCF erfordert, dass sich Code im Anwendungsverzeichnis oder im globalen Assemblycache befindet, bevor dieser Code aus der Konfiguration geladen werden kann. Verwenden Sie Verzeichnis-ACLs zum Sichern von Verzeichnissen.
Maximale Anzahl sicherer Sitzungen für einen Dienst erreicht
Wenn ein Client von einem Dienst erfolgreich authentifiziert wird und eine sichere Sitzung mit dem Dienst eingerichtet wird, verfolgt der Dienst die Sitzung, bis der Client sie abbricht oder die Sitzung abläuft. Jede festgelegte Sitzung zählt zum Grenzwert für die maximale Anzahl aktiver gleichzeitiger Sitzungen mit einem Dienst. Wenn dieser Grenzwert erreicht ist, werden Clients, die versuchen, eine neue Sitzung mit diesem Dienst zu erstellen, abgelehnt, bis mindestens eine aktive Sitzung abläuft oder von einem Client abgebrochen wird. Ein Client kann mehrere Sitzungen mit einem Dienst haben, und jede dieser Sitzungen zählt zum Grenzwert.
Hinweis
Wenn Sie zustandsbehaftete Sitzungen verwenden, trifft der vorhergehende Absatz nicht zu. Weitere Informationen zu zustandsbehafteten Sitzungen finden Sie unter So erstellen Sie ein Sicherheitskontext-Token für eine sichere Sitzung.
Um dies zu verringern, legen Sie den Grenzwert für die maximale Anzahl aktiver Sitzungen und die maximale Lebensdauer für eine Sitzung fest, indem Sie die SecurityBindingElement Eigenschaft der SecurityBindingElement Klasse festlegen.