Поделиться через


Строгие дескрипторы контекста и тип строгого контекста

Используйте атрибут strict_context_handle для всех дескрипторов контекста. По умолчанию дескриптор контекста не связан с интерфейсом, что означает, что дескриптор контекста можно создать в одном интерфейсе, а затем передать другому. Это простая атака, и многие серверы RPC не могут предотвратить ее.

Если два интерфейса сосуществуют в одном процессе, злоумышленник может открыть дескриптор контекста в одном интерфейсе и передать его другому интерфейсу, что может перебороть непредвиденные данные. Многие разработчики считают, что их программное обеспечение является единственным интерфейсом в процессе, но очень часто это не так, поскольку как система, так и многие сторонние компоненты используют RPC внутри, и эти интерфейсы могут создавать дескрипторы контекста. При использовании атрибута strict_context_handle время выполнения RPC гарантирует, что контекст, созданный в одном интерфейсе, может быть передан в качестве аргумента только методам этого интерфейса.

В ситуациях, когда приложение разрабатывается для Windows Vista, рекомендуется использовать type_strict_context_handle . Дескрипторы контекста по умолчанию не связаны с определенным типом. Если в одном процессе используются несколько типов дескрипторов контекста, вредоносный клиент может передать дескриптор контекста вместо другого для получения нежелательных результатов. Использование type_strict_context_handle позволяет приложениям обеспечить согласованность типов дескрипторов контекста и предотвратить использование несовпадения типов дескрипторов контекста.