Méfiez-vous des autres points de terminaison RPC en cours d’exécution dans le même processus
Lorsqu’une application réside dans un processus avec d’autres serveurs RPC, toutes les applications écoutent sur tous les protocoles. Par conséquent, si un composant appelle RpcServerUseProtseq* pour LRPC uniquement, il n’est pas nécessairement accessible via LRPC uniquement. Il peut être accessible via d’autres protocoles, car d’autres serveurs RPC dans le processus peuvent être à l’écoute sur des canaux ou des sockets (par exemple).
Comme pour les handles de contexte stricts, le fait de ne pas placer un autre point de terminaison dans le processus ne signifie pas qu’un autre point de terminaison n’existe pas. Quelle que soit la façon dont vous inscrivez votre serveur, il n’existe aucune association spéciale entre votre interface et votre point de terminaison ; toutes les interfaces peuvent être appelées sur tous les points de terminaison de ce processus. C’est une autre raison pour laquelle le modèle de sécurité du point de terminaison est inefficace ; si un descripteur de sécurité est placé sur un point de terminaison, les attaquants peuvent appeler l’interface sur un autre point de terminaison.
Pour garantir qu’un processus soit appelé uniquement sur une séquence de protocole spécifique, inscrivez une fonction de rappel de sécurité et, dans cette fonction, case activée sur quelle séquence de protocole l’appel est effectué.