Question de sécurité

Signaler
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
-
Yop,

Voila j'ai apris récemment que le flag IF (int flag) quand il est à 0 stop toutes les interruptions matériels , donc la clock fonctionne plus , le clavier non plus , enfin bref tout les périphérique connectés aux 2 8259 (je ne sais plus si NMI et reset sont concerné). Et il existe en ASM une instruction (CLI) qui met ce flag à 0. Ma question est la suivante, j'espère que il y à une sécurité à cela :s si oui laquelle ? car en plus ds le cadre scolaire, on va devoir programmer un dispatcher et tout le toutim et donc cette fonction va aparètre ds le code et donc si je test chez moi cava pas le faire :D . Donc voila je me demandai si windows intégrai une sécurité à cela :D

++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]

2 réponses

Messages postés
141
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
20 avril 2011

Salut,

Pour ce qui concerne les interruptions concernées par CLI/STI la datasheet de Intel nous donne la description suivante :
************************************
If protected-mode virtual interrupts are not enabled, CLI clears the IF flag in the EFLAGS register. No other flags are affected. Clearing the IF flag causes the processor to ignore maskable external interrupts. The IF flag and the CLI and STI instruction have no affect on the generation of exceptions and NMI interrupts.
When protected-mode virtual interrupts are enabled, CPL is 3, and IOPL is less than 3; CLI clears the VIF flag in the EFLAGS register, leaving IF unaffected.
************************************

Normalement, une application dans l'espace utilisateur n'a pas le privilège 3, il faut être dans l'espace "kernel" pour celà (on trouve d'ailleur l'utilisation de CLI/STI essentiellement dans les handlers d'interruption, donc dans le contexte noyau avec les privilèges qui en découlent).
Je parle pour linux/unix, mais je pense que Windows2000/XP/2003/Vista doivent fonctionner sur ce principe aussi ... c'est principe même de la protection par gestion de privilège sur les CPUs modernes. (Attention, Win95/98 ne gèrent pas ces contextes il me semble !! d'où leurs vulnérabilité d'ailleur ;) ).

D'ailleurs la datasheet est clair sur ce point de protection :

************************************

Protected Mode Exceptions
#GP(0) If the CPL is greater (has less privilege) than the IOPL of the current
program or procedure.
************************************

#GP(0) étant le "General Protection Fault" bien connu sous le doux nom de GPF ;)

Donc la question de la protection de windows me semble résolu ...
Par contre, si le but des TP est de réaliser des drivers et d'utiliser CLI/STI ... alors là, c'est une autre question ... c'est un peu comme si tu donnais les clefs de ton appart à un inconnu en lui disant de ne pas entrer chez toi :)

Gentoo... que du bonheur ...
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
mmm oui le kernel mode sous NT , oui effect 95 et 98 non pas cette architecture. Pourtant l'asm étant un langage de ba niveau je pensai que cela était possible, surtout que une bête disquette de boot avec le prog asm ferai l'affaire, vu que IF stop le intérruptions matériels. Mais oui ok sous NT pas possible alors , c'est bien ce que je voulai savoir, merci bien.
++
deck_bsd
___________________________________
[http://deck-bsd.eurower.net]