Delen via


Strikte en type strikte contextgrepen

Gebruik het kenmerk strict_context_handle voor alle contextingangen. Standaard is een contextgreep niet gekoppeld aan een interface, wat betekent dat er een contextgreep kan worden gemaakt op de ene interface en vervolgens aan een andere kan worden doorgegeven. Dit is een eenvoudige aanval en veel RPC-servers kunnen deze niet voorkomen.

Als twee interfaces naast elkaar bestaan in hetzelfde proces, kan een aanvaller een contextgreep openen op de ene interface en deze doorgeven aan een andere interface, waardoor de onverwachte gegevens mogelijk worden overschreden. Veel ontwikkelaars geloven dat hun software de enige interface in een proces is, maar vaak is dat niet het geval, omdat zowel het systeem als veel onderdelen van derden intern RPC gebruiken, en deze interfaces kunnen contextgrepen maken. Wanneer het kenmerk strict_context_handle wordt gebruikt, zorgt de RPC-uitvoeringstijd ervoor dat een context die op één interface is gemaakt, alleen als argument kan worden doorgegeven aan methoden van die interface.

In situaties waarin een toepassing is ontwikkeld voor Windows Vista, is het gebruik van type_strict_context_handle beschikbaar en aanbevolen. Contextgrepen zijn niet standaard gekoppeld aan een specifiek type. Wanneer meerdere typen contextingangen in hetzelfde proces worden gebruikt, is het mogelijk dat een kwaadwillende client een contextgreep doorgeeft in plaats van een andere om ongewenste resultaten te produceren. Het gebruik van type_strict_context_handle stelt toepassingen in staat om consistentie van contextafhandelingstypen af te dwingen en eventuele niet-overeenkomende contextafhandelingstypegebruik te voorkomen.