Udostępnij za pośrednictwem


Uważaj na inne punkty końcowe RPC uruchomione w tym samym procesie

Kiedy aplikacja działa w jednym procesie z innymi serwerami RPC, wszystkie aplikacje monitorują wszystkie protokoły. W związku z tym, jeśli składnik wywołuje RpcServerUseProtseq* tylko dla LRPC, nie musi być dostępny tylko za pośrednictwem LRPC. Może być dostępne za pośrednictwem innych protokołów, ponieważ inne serwery RPC w procesie mogą nasłuchiwać na rurach lub gniazdach sieciowych (na przykład).

Podobnie jak w przypadku ścisłych uchwytów kontekstowych, nieumieszczenie innego punktu końcowego w procesie nie oznacza, że inny punkt końcowy nie istnieje. Niezależnie od sposobu rejestrowania serwera nie ma specjalnego skojarzenia między interfejsem a punktem końcowym; wszystkie interfejsy są wywoływane we wszystkich punktach końcowych w tym procesie. Jest to kolejny powód, dla którego model zabezpieczeń punktu końcowego jest nieskuteczny; Jeśli deskryptor zabezpieczeń zostanie umieszczony w punkcie końcowym, osoby atakujące mogą wywołać interfejs w innym punkcie końcowym.

Aby upewnić się, że proces zostaje wywołany tylko w określonej sekwencji protokołu, zarejestruj funkcję wywołania zwrotnego zabezpieczeń i w tej funkcji sprawdź, w ramach której sekwencji protokołu została wykonana operacja.