Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour un pilote, la divulgation d’informations concerne généralement l’exposition d’informations à une application par le biais d’une mauvaise gestion des mémoires tampons. Par exemple, un pilote avec une requête d’E/S mise en mémoire tampon indique normalement la quantité de données retournées en définissant le membre Information de la structure de bloc IOStatus . Le gestionnaire d’E/S utilise ensuite ces informations pour copier les résultats dans la mémoire tampon de l’application.
Si le pilote indique que d’autres données sont retournées, le gestionnaire d’E/S copie des données supplémentaires à partir de SystemBuffer. Toutefois, si le pilote n’a pas rempli le reste de SystemBuffer, tout ce qui était dans cette mémoire sera renvoyé à l’application, ce qui pourrait exposer des données sensibles à l’application. Témoin du problème avec les pilotes réseau où des informations supplémentaires peuvent être envoyées à d’autres systèmes, car les mémoires tampons de données utilisées n’ont pas été effacées. Par exemple, une réponse ping ICMP peut inclure des informations supplémentaires. Ce problème d’exposition de données par inadvertance est très réel et se produit dans un large éventail de systèmes.
Pour un pilote de filtre de système de fichiers ou de système de fichiers, il existe un risque supplémentaire de divulguer des informations de fichier aux utilisateurs qui ne doivent pas être autorisés à accéder aux données. Cette opération peut être effectuée de plusieurs façons différentes :
Pilote de filtre qui utilise ZwCreateFile pour ouvrir le fichier, puis fournit l’accès aux données via son handle intermédiaire. La fonction ZwCreateFile ouvre par défaut le fichier et ignore les vérifications de sécurité, car la requête provient du mode noyau. Par conséquent, l’accès à l’aide de ce handle peut divulguer des informations qui ne seraient pas normalement disponibles pour une application.
Si le pilote de filtre souhaite appliquer des vérifications d’accès pour s’assurer qu’il n’expose pas les données qui ne doivent pas être exposées, le pilote de filtre doit spécifier OBJ_FORCE_ACCESS_CHECK dans le paramètre ObjectAttributes de la fonction ZwCreateFile .
Pilote de filtre qui ouvre un handle en mode noyau, en contournant les vérifications d’accès, mais ne spécifie pas OBJ_KERNEL_HANDLE. Par conséquent, le handle créé est placé dans la table de handles du processus actuel. Ce handle, avec un accès total aux données, est alors visible en mode utilisateur. Une application non autorisée peut surveiller ces handles et essayer de les utiliser pour accéder aux données.
Un pilote de filtre de système de fichiers ou de système de fichiers qui envoie une demande IRP_MJ_CREATE, puis la traite dans le contexte d’un thread de travail système. Lorsque l’IRP est traité par le thread de travail système, l’opération de création est normalement terminée à l’aide des privilèges du thread système. Par conséquent, l’accès à l’aide de ces privilèges système peut divulguer des informations qui ne seraient normalement pas disponibles pour l’application.
Un pilote de filtre de système de fichiers ou un système de fichiers qui effectue des E/S basées sur des objets de fichier sans confirmer que le processus appelant doit être autorisé à accéder aux données.
En raison de leur rôle unique dans la gestion et la protection des informations, les systèmes de fichiers et les pilotes de filtre de système de fichiers doivent être particulièrement vigilants pour garantir leur protection des informations.