Delen via


Dienstweigering

Denial of Service treedt op wanneer een systeem op een zodanige manier wordt overweldigd dat berichten niet kunnen worden verwerkt of als ze zeer langzaam worden verwerkt.

Overtollig geheugenverbruik

Er kan een probleem optreden bij het lezen van een XML-document met een groot aantal unieke lokale namen, naamruimten of voorvoegsels. Als u een klasse gebruikt die is afgeleid van XmlReader, en u de LocalNameeigenschap , Prefix of NamespaceURI eigenschap voor elk item aanroept, wordt de geretourneerde tekenreeks toegevoegd aan een NameTable. De verzameling die door de NameTable wordt bewaard, neemt nooit in omvang af, waardoor een virtueel 'geheugenlek' van de string-verwijzingen ontstaat.

Oplossingen zijn onder andere:

  • Leid af van de NameTable klasse en dwing een maximumquotum voor grootte af. (U kunt het gebruik van een NameTable of de schakeloptie NameTable niet voorkomen wanneer deze vol is.)

  • Vermijd het gebruik van de vermelde eigenschappen en gebruik in plaats daarvan waar mogelijk de MoveToAttribute methode met de IsStartElement methode. Deze methoden retourneren geen tekenreeksen en voorkomen zo het probleem van het overvullen van de NameTable verzameling.

Kwaadwillende client verzendt overmatige licentieaanvragen naar service

Als een kwaadwillende client een service bebomt met overmatige licentieaanvragen, kan dit ertoe leiden dat de server overmatig geheugen gebruikt.

Risicobeperking: Gebruik de volgende eigenschappen van de LocalServiceSecuritySettings klasse:

  • MaxCachedCookies: bepaalt het maximum aantal tijdgebonden SecurityContextTokens dat de server na SPNego of SSL onderhandelingen in de cache opslaat.

  • IssuedCookieLifetime: bepaalt de levensduur van de SecurityContextTokens die de server uitgeeft na SPNego of SSL onderhandelingen. De server slaat gedurende deze periode de SecurityContextToken's in de cache op.

  • MaxPendingSessions: bepaalt het maximum aantal beveiligde gesprekken dat is ingesteld op de server, maar waarvoor geen toepassingsberichten zijn verwerkt. Dit quotum voorkomt dat klanten beveiligde gesprekken met de service tot stand brengen, waardoor de service een status per klant onderhoudt, maar ze nooit gebruikt.

  • InactivityTimeout: bepaalt de maximale tijd dat de service een veilig gesprek actief houdt zonder dat er een toepassingsbericht van de client voor het gesprek wordt ontvangen. Dit quotum voorkomt dat klanten beveiligde gesprekken met de service tot stand brengen, waardoor de service een status per klant onderhoudt, maar ze nooit gebruikt.

WSDualHttpBinding of dubbele aangepaste bindingen vereisen clientverificatie

Standaard is WSDualHttpBinding beveiliging ingeschakeld. Het is echter mogelijk dat, als de clientverificatie wordt uitgeschakeld door de ClientCredentialType eigenschap op None in te stellen, een kwaadwillende gebruiker een denial of service-aanval op een derde dienst kan veroorzaken. Dit kan gebeuren omdat een kwaadwillende client de service kan leiden om een stroom berichten naar een derde service te verzenden.

U kunt dit verhelpen door de eigenschap niet in te stellen op None. Houd ook rekening met deze mogelijkheid bij het maken van een aangepaste binding met een dubbel berichtpatroon.

Controlegebeurtenislogboek kan worden ingevuld

Als een kwaadwillende gebruiker begrijpt dat controle is ingeschakeld, kan die aanvaller ongeldige berichten verzenden waardoor controlevermeldingen worden geschreven. Als het auditlogboek op deze manier wordt ingevuld, mislukt het controlesysteem.

Als u dit wilt verhelpen, stelt u de SuppressAuditFailure eigenschap in op true en gebruikt u de eigenschappen van de Evenementen Viewer om het auditgedrag te beheren. Zie Event Viewer voor meer informatie over het gebruik van de Event Viewer om gebeurtenislogboeken weer te geven en te beheren. Zie Controle voor meer informatie.

Ongeldige implementaties van IAuthorizationPolicy kunnen ertoe leiden dat de service niet meer reageert

Het aanroepen van de Evaluate methode voor een foutieve implementatie van de interface kan ertoe leiden dat de IAuthorizationPolicy service niet meer reageert.

Risicobeperking: gebruik alleen vertrouwde code. Gebruik dus alleen code die u hebt geschreven en getest, of die afkomstig is van een vertrouwde provider. Sta niet toe dat niet-vertrouwde extensies van IAuthorizationPolicy in uw code worden opgenomen zonder de nodige overweging. Dit geldt voor alle extensies die worden gebruikt in een service-implementatie. WCF maakt geen onderscheid tussen toepassingscode en externe code die is ingeschakeld via uitbreidbaarheidspunten.

De maximale grootte van het Kerberos-token moet mogelijk opnieuw worden vastgesteld

Als een client tot een groot aantal groepen behoort (ongeveer 900, hoewel het werkelijke aantal afhankelijk van de groepen varieert), kan er een probleem optreden wanneer het blok van een berichtkop groter is dan 64 kilobytes. In dat geval kunt u de maximale grootte van het Kerberos-token verhogen. Mogelijk moet u ook de maximale WCF-berichtgrootte verhogen voor het grotere Kerberos-token.

Automatische inschrijving resulteert in meerdere certificaten met dezelfde onderwerpnaam voor machine

Automatische inschrijving is de mogelijkheid van Windows Server 2003 om gebruikers en computers automatisch in te schrijven voor certificaten. Wanneer een computer zich in een domein bevindt waarvoor de functie is ingeschakeld, wordt een X.509-certificaat met het beoogde doel van clientverificatie automatisch gemaakt en ingevoegd in het persoonlijke certificatenarchief van de lokale computer wanneer een nieuwe computer aan het netwerk wordt toegevoegd. Automatische inschrijving gebruikt echter dezelfde onderwerpnaam voor alle certificaten die in de cache worden gemaakt.

De impact is dat WCF-services niet kunnen worden geopend op domeinen met automatische inschrijving. Dit treedt op omdat de standaardservice X.509-zoekcriteria voor referenties dubbelzinnig kunnen zijn omdat er meerdere certificaten bestaan met de fully qualified Domain Name System (DNS)-naam van de computer. Eén certificaat is afkomstig van automatische inschrijving; de andere kan een zelf uitgegeven certificaat zijn.

Om dit te verhelpen, verwijst u naar het exacte certificaat dat moet worden gebruikt met behulp van een nauwkeuriger zoekcriterium op de <serviceCredentials>. Gebruik bijvoorbeeld de FindByThumbprint optie en geef het certificaat op met de unieke vingerafdruk (hash).

Zie Certificaat automatisch inschrijven in Windows Server 2003 voor meer informatie over de functie voor automatisch inschrijven.

Laatste van meerdere alternatieve onderwerpnamen die worden gebruikt voor autorisatie

In het zeldzame geval dat een X.509-certificaat meerdere alternatieve onderwerpnamen bevat en u autoriseert met de alternatieve onderwerpnaam, kan autorisatie mislukken.

Configuratiebestanden beveiligen met ACL's

U kunt vereiste en optionele claims opgeven in code- en configuratiebestanden voor door CardSpace uitgegeven tokens. Dit resulteert in overeenkomende elementen die worden verzonden in RequestSecurityToken berichten die naar de beveiligingstokenservice worden verzonden. Een aanvaller kan code of configuratie wijzigen om vereiste of optionele claims te verwijderen, waardoor de beveiligingstokenservice een token kan uitgeven dat geen toegang tot de doelservice token toestaat.

Om dit te verhelpen: Toegang tot de computer vereisen om het configuratiebestand te wijzigen. Gebruik toegangsbeheerlijsten (ACL's) voor bestandstoegang om configuratiebestanden te beveiligen. WCF vereist dat code zich in de toepassingsmap of de algemene assemblycache bevindt voordat deze code vanuit de configuratie kan worden geladen. Gebruik map-ACL's om mappen te beveiligen.

Maximum aantal beveiligde sessies voor een service is bereikt

Wanneer een client is geverifieerd door een service en er een beveiligde sessie met de service tot stand is gebracht, houdt de service de sessie bij totdat de client deze annuleert of de sessie verloopt. Elke tot stand gebrachte sessie telt mee voor de limiet van het maximale aantal actieve gelijktijdige sessies met een service. Wanneer deze limiet is bereikt, worden clients die proberen een nieuwe sessie met die service te maken geweigerd totdat een of meer actieve sessies verlopen of worden geannuleerd door een client. Een client kan meerdere sessies met een service hebben en elk van deze sessies telt mee voor de limiet.

Opmerking

Wanneer u stateful sessies gebruikt, is de vorige alinea niet van toepassing. Zie How to: Create a Security Context Token for a Secure Session(s) voor meer informatie over stateful sessies.

Om dit te verhelpen, stelt u de limiet in voor het maximum aantal actieve sessies en de maximale levensduur voor een sessie door de SecurityBindingElement eigenschap van de SecurityBindingElement klasse in te stellen.

Zie ook