Que fait l'objet \Device\PhysicalMemory ?
L'objet de section \Device\PhysicalMemory est utilisé par certaines applications pour accéder à la mémoire physique. Les applications de gestion qui essayent de lire le SMBIOS (System Management BIOS) ou d'autres données du BIOS stockées dans le premier mégaoctet de la mémoire physique sont des exemples de cette utilisation.
Qui est concerné par cette fonctionnalité ?
Cette fonctionnalité est intéressante pour les développeurs de matériels et d'applications de gestion du matériel.
Quelles fonctionnalités existantes ont été modifiées dans Windows Server 2003 Service Pack 1 ?
Objet de section Device\PhysicalMemory
Description détaillée
Dans Windows Server 2003 SP1, l'accès en mode utilisateur à l'objet \Device\PhysicalMemory n'est pas autorisé. Tous les types d'accès (lecture, écriture) sont refusés quand l'objet \Device\PhysicalMemory fait l'objet d'un accès par une application en mode utilisateur. L'accès à l'objet \Device\PhysicalMemory est refusé quel que soit le contexte utilisateur (Administrateurs, Utilisateurs, Système local, etc.) dans lequel l'application s'exécute.
L'accès en mode noyau (pilote) à l'objet \Device\PhysicalMemory reste inchangé pour Windows Server 2003 SP1.
Il n'existe pas de moyen de rétablir ce fonctionnement modifié dans Windows Server 2003 SP1.
Pourquoi cette modification est-elle importante ? Quelles menaces permet-elle d'atténuer ?
Cette modification a été faite pour aider à la prévention de menaces de sécurité qui pourraient exploiter la fonctionnalité de l'objet \Device\PhysicalMemory à partir du mode utilisateur.
Dans les précédentes versions de Windows, l'accès à l'objet \Device\PhysicalMemory était protégé par une liste de contrôle d'accès (ACL). Cependant, la liste de contrôle d'accès peut être modifiée par inadvertance. Le fait de refuser tous les accès à l'objet \Device\PhysicalMemory à partir du mode utilisateur garantit que ce scénario ne peut pas se produire.
Quels sont les changements observés ? Existe-t-il des dépendances ?
Si la majorité des applications n'essaient pas d'accéder à la mémoire physique, certaines applications de gestion requérant des informations du BIOS peuvent néanmoins être affectées par cette modification. Beaucoup de ces applications de gestion peuvent essayer de lire des données du SMBIOS.
Comment contourner ces problèmes ?
Les fournisseurs d'applications de gestion sont encouragés à revoir leurs applications quant à l'accès à l'objet \Device\PhysicalMemory et à mettre en œuvre une des solutions de contournement proposées dans cette section.
Remarques |
|---|
|
Les méthodes suivantes peuvent être utilisées pour lire les données de la mémoire physique basse et de la table de microprogrammes à partir d'une application dans Windows Server 2003 SP1. Les applications qui requièrent un accès en écriture à la mémoire physique basse doivent le faire à partir d'un pilote en mode noyau. |
Lecture d'informations du SMBIOS
WMI (Windows Management Instrumentation) est la méthode conseillée pour la lecture d'informations du SMBIOS dans Windows. WMI prend en charge la lecture de propriétés individuelles du SMBIOS (comme la version du BIOS ou le fabricant du système) à partir des classes Win32 contenues dans l'espace de noms root\cimv2.
WMI prend également en charge la lecture de la totalité des données du SMBIOS dans une même mémoire tampon à l'aide de la classe MSSMBios_RawSMBiosTables dans l'espace de noms root\wmi. La propriété SMBiosData renvoie une mémoire tampon contenant la table des données SMBIOS tout entière, sauf le point d'entrée de la table de structure SMBIOS, tel que cela est défini dans la section 2.1.1 de la spécification du SMBIOS.
WMI prend en charge une API COM et une API de scripts pour accéder aux informations WMI. WMI est également pris en charge dans les versions Windows XP SP2 et Windows Server 2003 SP1 de l'environnement de préinstallation Windows (WinPE, Windows Preinstallation Environment).
Dois-je modifier mon code pour utiliser Windows Server 2003 Service Pack 1 ?
Si l'application utilise l'objet \Device\PhysicalMemory, vous devez en modifier le code pour qu'elle fonctionne avec Windows Server 2003 SP1. Il existe deux nouvelles API en mode utilisateur, qui peuvent être utilisées par des applications pour lire différentes tables de microprogramme système. Ces API peuvent être utilisées pour lire des données SMBIOS et ACPI, ainsi que des données brutes du BIOS à partir de la mémoire physique basse. Des précisions sur l'implémentation des API sont disponibles dans le Kit de développement logiciel (SDK) de plate-forme sur le site Web MSDN. Les deux nouvelles API sont :
EnumSystemFirmwareTables, décrite sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=45562.
GetSystemFirmwareTable, décrite sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=45563.
Pour plus d'informations
Les ressources Web suivantes peuvent également être intéressantes si vous êtes concerné par cette modification de fonctionnalité :
-
La section WMI (Windows Management Instrumentation) du Kit de développement logiciel (SDK) de plate-forme de Windows disponible sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=159.
-
La spécification standard de SMBIOS (System Management BIOS) fournie par DMTF (Distributed Management Task Force, Inc.), qui est disponible sur le site Web de DMTF à l'adresse http://go.microsoft.com/fwlink/?LinkId=38721.
-
L'utilitaire de l'environnement de préinstallation de Microsoft® Windows® (Windows PE), qui est disponible en téléchargement sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=38722.