Sécurité des Systèmes d'Exploitation : cours 3

De
Publié par

Master, Supérieur, Master
  • cours - matière potentielle : sese du m2 isidis
Securite des Systemes d'Exploitation : cours 3 Frederic Gava Master ISIDIS, Universite de Paris-Est Creteil Cours SESE du M2 ISIDIS
  • int argc
  • m2 isidis
  • protections debordements
  • format exploitation
  • ingenieurie
  • debordements arithmetiques
  • unsigned int
  • retro-ingenieurie
  • protections integer-overflow ≡
  • exploitation des sections
  • protections ¶
  • securite des systemes d'exploitation
  • bug de format
  • int
Publié le : mardi 27 mars 2012
Lecture(s) : 127
Source : lacl.univ-paris12.fr
Nombre de pages : 58
Voir plus Voir moins
S´ecurit´edesSyste`mesdExploitation:cours3
Frede´ricGava ´
MasterISIDIS,Universite´deParis-EstCr´eteil
Cours SESE du M2 ISIDIS
Plan
1
2
3
4
5
D´ebordementsarithm´etiques
Bug de format
Exploitation des sections
Retro-Inge´nieurie
Protections
Plan
1
2
3
4
5
De´bordementsarithm´etiques
Bug de format
Exploitation des sections
Retro-Inge´nieurie
Protections
Plan
1
2
3
4
5
De´bordementsarithm´etiques
Bug de format
Exploitation des sections
Retro-Inge´nieurie
Protections
Plan
1
2
3
4
5
De´bordementsarithme´tiques
Bug de format
Exploitation des sections
Retro-Ing´enieurie
Protections
Plan
1
2
3
4
5
De´bordementsarithme´tiques
Bug de format
Exploitation des sections
Retro-Inge´nieurie
Protections
D´ebordementsarithme´tiques D´eroulement
1
2
3
4
5
Bug de format du cours
Exploitation des sections
D´ebordementsarithme´tiques
Bug de format
Exploitation des sections
Retro-Inge´nieurie
Protections
SESE : cours 3
Retro-Inge´nieurie
Protections
3 / 54
D
e´bordementsarithm´etiquesefgdBusnoirteRsedntcesitloioatmaorxptEieurieo-Ing´en Integer-Overowite´mhtirastnemerdbo´eD(1)ques
Prenons ce petit programme :
#include<stdio.h> intmain(intargc ,charargv []){ inti , s ; unsigned intu; printf (”sizeof(int) = %inn”,sizeof(int)); for( i=1; i<argc; i++){ u = s = atoi(argv[i]); printf (”%s = 0x%xn”, argv[i], s); printf (”%s + 1 = 0x%x + 1 = %in”, argv[i], s, s+1); printf (”%s1 = 0x%x1 = %in”, argv[i], s, s1); printf (”%s + 1 = 0x%x + 1 = %un”, argv[i], u, u+1); printf (”%s1 = 0x%x1 = %u” v[i], u, u1); n , arg printf (”n”); } }
SESE : cours 3
Protections
4 / 54
D
´ebordementsarithm´etiques des sections ExploitationBug de format Debordementsarithm´etiques(2) ´
Retro-Ing´enieurie
Protections
Voyons voir pour ”./intof 10 2147483647 2147483648 0xffffffff 0”
sizeof(int) = 4
10 = 0xa 10 + 1 = 0xa + 1 = 11 10 - 1 = 0xa - 1 = 9 10 + 1 = 0xa + 1 = 11 10 - 1 = 0xa - 1 = 9
2147483647 = 0x7fffffff 2147483647 + 1 = 0x7fffffff + 1 = -2147483648 2147483647 - 1 = 0x7fffffff - 1 = 2147483646 2147483647 + 1 = 0x7fffffff + 1 = 2147483648 2147483647 - 1 = 0x7fffffff - 1 = 2147483646
SESE : cours 3
5 / 54
D
´ebordementsarithme´tiquesBug de format Exploitation des sections D´ebordements arith ´tiques (3) me
2147483648 = 0x7fffffff 2147483648 + 1 = 0x7fffffff + 1 = -2147483648 2147483648 - 1 = 0x7fffffff - 1 = 2147483646 2147483648 + 1 = 0x7fffffff + 1 = 2147483648 2147483648 - 1 = 0x7fffffff - 1 = 2147483646
0xffffffff = 0x0 0xffffffff + 1 = 0x0 + 1 = 1 0xffffffff - 1 = 0x0 - 1 = -1 0xffffffff + 1 = 0x0 + 1 = 1 0xffffffff - 1 = 0x0 - 1 = 4294967295
0 = 0x0 0 + 1 = 0x0 + 1 = 1 0 - 1 = 0x0 - 1 = -1 0 + 1 = 0x0 + 1 = 1 0 - 1 = 0x0 - 1 = 4294967295
SESE : cours 3
Retro-Ing´enieurie
Protections
6 / 54
De´bordementsarithm´etiques des sectionsBug de format Exploitation De´bordementsarith´etiques(4) m
Retro-Inge´nieurie
Protections
vient du codage des entiers en machines : 4 * 8 = 32 bits ici entierssign´esle bit de poids fort indique le signeentiers entre 231 et 231 - 1 entiersnonsigne´sentre 0 et 232 - 1 sur les nombres limitescalcul faux, conversions hasardeuses, etc. dans le meilleur des cas, le programme part en vrille et se plantedine´decivrese
potentiellement exploitableschangement d’une variable ou d´ebordementdetampon parfoistr`esdiciledesavoirsiuncalculvad´eborder aussi difficile de verifier apres ´ ` degrandespre´cautionssontn´ecessaires affecte C/C++ et Java enAda,GNATge´ne`relesve´ricationsperformances presque identiques (de l’ordre de 1% de perte)
SESE : cours 3
7 / 54
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.