Quelle est la fonction de la protection contre les correctifs du noyau ?
La protection contre les correctifs du noyau interdit les pilotes en mode noyau qui étendent ou remplacent les services du noyau par des moyens non documentés. Cette fonctionnalité décrit les modifications de la stratégie associée à la mise à jour corrective du noyau pour les systèmes d'exploitation 64 bits Microsoft Windows Server 2003 Service Pack 1.
Qui est concerné par cette fonctionnalité ?
Cette fonctionnalité s'adresse principalement aux développeurs de pilotes, mais elle peut également s'avérer utile aux informaticiens.
Quelles fonctionnalités existantes ont été modifiées dans Windows Server 2003 Service Pack 1 ?
Stratégie de mise à jour corrective pour les systèmes 64 bits
Description détaillée
Microsoft Windows Server 2003 SP1 et les versions ultérieures de Windows pour les systèmes 64 bits n'autorisent pas la correction du noyau, excepté via des correctifs logiciels Microsoft autorisés.
Pourquoi cette modification est-elle importante ?
Les pilotes en mode noyau qui étendent ou remplacent les services du noyau par des moyens non documentés (tels que le raccordement des tables des services du système) peuvent interférer avec d'autres logiciels et affecter la stabilité du système d'exploitation. Pour les systèmes x86, Microsoft déconseille de telles pratiques mais ne les empêche pas par programme (cela rendrait un grand nombre de logiciels distribués sur le marché incompatibles). Une base identique de logiciels distribués sur le marché n'existe pas pour les systèmes 64 bits. Il est donc possible d'ajouter ce niveau de protection au noyau sans rompre la compatibilité.
Quels sont les changements observés ?
De nombreuses structures du système sont protégées sur les systèmes 64 bits, notamment les tables de répartition des services du système, la table de description d'interruptions et la table de description globale. En outre, le système d'exploitation n'autorise pas les logiciels tiers à allouer de la mémoire « sur le côté » et à l'utiliser comme pile du noyau. Si le système d'exploitation détecte l'une de ces modifications ou tout autre correctif non autorisé, il génère un contrôle de bogues avec pour code d'arrêt 0x109 puis il arrête le système.
Comment contourner ces problèmes ?
Pour des raisons de compatibilité avec les ordinateurs Windows à processeur x64, les pilotes ne sont pas autorisés à modifier le noyau. Les actions suivantes sont bloquées dans Windows Server 2003 SP1 pour les ordinateurs à processeur x64 :
-
modifier les tables des services du système, par exemple en raccordant la table KeServiceDescriptor ;
-
modifier la table de description d'interruptions ;
-
modifier la table de description globale ;
-
utiliser des piles du noyau qui ne sont pas allouées par celui-ci ;
-
appliquer un correctif sur une partie du noyau (détecté sur les systèmes AMD64 uniquement).
La protection des correctifs du noyau pourrait être étendue dans de futures mises à jour système, afin de les protéger contre de nouvelles techniques malveillantes basées sur les correctifs, à mesure que sont détectées de nouvelles vulnérabilités. Pour éviter les problèmes de compatibilité avec ces mises à jour, les pilotes ne doivent pas tenter de mettre à jour le noyau au moyen d'autres mécanismes.
Les pilotes destinés aux autres plates-formes doivent aussi éviter d'appliquer des correctifs au noyau pour garantir la stabilité et la fiabilité du système d'exploitation et provoquer moins de problèmes aux utilisateurs.
Dois-je modifier mon code pour utiliser Windows Server 2003 Service Pack 1 ?
Windows Server 2003 SP1 pour les systèmes x64 est une nouvelle plate-forme qui nécessite de nouveaux pilotes. Ces nouveaux pilotes doivent être conformes à la stratégie d'application des correctifs x64 qui est décrite sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=38447 (en anglais).
Pour plus d'informations, voir le Kit de développement de pilotes Microsoft Windows (DDK) sur le site Web de Microsoft à l'adresse http://go.microsoft.com/fwlink/?LinkId=38448 (en anglais).