Les processeurs Intel renforcent la sécurité en utilisant ce que l'on appelle les «anneaux de protection».
Il y en a 4, numérotés de 0 à 3. Le code s'exécutant dans l'anneau 0 a les privilèges les plus élevés; il peut (pratiquement) faire ce qu'il veut avec votre ordinateur. Le code dans l'anneau 3, d'autre part, est toujours sur une laisse serrée; il n'a que des pouvoirs limités pour influencer les choses. Et les anneaux 1 et 2 ne sont actuellement utilisés à aucune fin.
Un thread s'exécutant dans un anneau privilégié supérieur (tel que l'anneau 0) peut passer à un anneau de privilège inférieur (tel que l'anneau 1, 2 ou 3) à volonté. Cependant, la transition à l'inverse est strictement réglementée. C'est ainsi que la sécurité des ressources hautement privilégiées (telles que la mémoire) etc. est maintenue. Naturellement, votre code de mode utilisateur (applications et tout) s'exécute dans l'anneau 3 pendant que le code du système s'exécute dans l'anneau 0. Cela garantit que les threads en mode utilisateur ne peuvent pas déranger les structures de données du système d'exploitation et autres ressources critiques.
Pour plus de détails sur la façon dont tout cela est réellement implémenté, vous pouvez lire l'article this. En outre, vous pouvez également passer par les manuels Intel, en particulier Vol 1 et Vol 3A, que vous pouvez télécharger here.
C'est l'histoire des processeurs Intel. Je suis sûr que d'autres architectures ont quelque chose de similaire.
Le thread en mode utilisateur peut truquer, mais en quoi cela serait-il différent de simplement utiliser ntdll.dll? Ajoutez aux questions plus d'informations sur pourquoi cela vous concerne. –
Je pense que l'OP est inquiet à propos de la transition vers l'anneau 0, puis l'exécution de code non-O/S arbitraire alors que l'anneau 0. – ChrisW
Windows effectue une validation sur ses paramètres exposés (à usermode). Vous ne pouvez pas * transmettre des données non valides sans le savoir. Oui, il y a des cas d'angle négligés. Juste, recherchez les vulnérabilités d'escalade de privilèges locaux. Il y a une tonne d'entre eux – unixman83