Degr de difficult
I
maginons que vous ayiez crire un ex- lides implique un contrle du flux d'excution
trait de code compil sans avoir la chance du programme au moyen de simples adresses
de disposer du code source correspon- valides diriges vers ces segments.
dant. Par ailleurs, vous constatez que ce Les donnes, mentionnes plus haut,
code compil prsente les caractristiques sont places dans la mmoire tampon,
inhrentes une vulnrabilit par surdbit et peuvent parfois prendre la forme de don-
de la mmoire tampon. Dans la mesure o nes d'entre de l'utilisateur. Le programme
l'analyse de dsassemblage est un pro- peut, en effet, accepter des donnes d'entre
cessus extrmement long, un outil capable
d'automatiser le processus d'exploitation de
cette vulnrabilit potentielle se rvlerait
Cet article explique...
trs utile. Nous allons donc vous prsenter Comment identifier ce genre particulier de bo-
l'installation possible d'un tel outil. gues sans avoir recours au code source,
Dire qu'un programme est affect par Comment suivre les tapes ncessaires la
un bogue de surdbit de la mmoire tampon tche d'exploitation de ce bogue,
base sur la pile signifie qu'il existe un lieu, Les critres gnraux relatifs un modle de
la dnomme mmoire tampon, o les don- code gnrique d'exploitation,
nes sont copies. Ce type de mmoire Les raisons pour lesquelles cette automatisa-
tion est une aide prcieuse.
tampon existe dans la pile o ces dernires
sont pointes par des adresses. Par ailleurs,
lorsque les donnes sont enfin copies, les Ce qu'il faut savoir...
limites ne sont pas contrles, avec le risque
Les bases lmentaires de la programmation
vident d'un surdbit. Si la mmoire tampon en C sous Linux,
est effectivement en surdbit, certains autres Le fonctionnement du systme d'exploitation
segments hors de son champ d'action sont de Linux,
leur tour modifis. La manipulation efficiente Le fonctionnement de la pile sous Linux.
de tels segments contenant des donnes va-
Utilisation de la logique
des ensembles flous
La thorie relative la logique des
ensembles flous traite l'ambigut afin
d'essayer de catgoriser l'incertitude
et de classer cette dernire mathma-
tiquement. L'ensemble des nombres
entiers en mathmatiques possde une
cardinalit infinie, l'instar de l'ensem-
ble des nombres rels, etc. Toutefois,
en matire d'informatique, tout est fini
et les calculs dots d'oprandes trop
importants peuvent chouer.
exemple : 0x41414141).
if(verbose)
fprintf(stdout, "-> Buffer len: %ld\n", strlen(buffer));
Il est intressant de remarquer qu'un Suite sur la page suivante
remplacement partiel russi revient
altrer trois octets sur quatre de
%eip. Il impossible de suspecter tantes de poids afin d'en indiquer le rien de plus que crer des mmoires
l'adresse 0xbfff4141 dans un rempla- degr de danger et de dterminer tampons remplies de A lorsque c'est
cement partiel puisqu'il s'agit d'une l'ventuel remplacement. ce qui lui est ordonn de faire. Une
adresse valide pointant vers la pile. politique relativement facile com-
Toutefois, l'adresse 0xbf414141 est prendre pour produire de telles don-
bien plus suspecte car il est rare
Premier algorithme de nes utiles est illustre par la clbre
que la pile augmente plus. Bien que cration de donnes technique de la force brute. Nous
l'implmentation finale prenne en utiles allons crer des mmoires tampons
compte ce problme, il serait assez Le sous-systme responsable de la de toutes les longueurs possibles,
judicieux d'affecter des valeurs cons- cration de donnes utiles ne fait qui seront ensuite teste l'une aprs
Informations
sur les tests
Nous avons ralis les tests sur un
ordinateur portable Acer quip de
l'Intel P4, d'une unit centrale de 2,0
Ghz, et d'une RAM partage de 128
Mo. Le systme d'exploitation utilis
tait Mandrake 9.0 (Dolphin), excut
partir du poste de travail Vmware.
Les applications testes taient dis-
ponibles sous forme de packages
issus des CD d'installation de Man- Figure 7. Essai sur efstool au moyen du mode des canaux de
drake 9.0. communication
Deuxime algorithme
de contrle
Une seconde implmentation po-
tentielle d'un sous-systme d'ex-
cution et d'inspection pourrait
reposer sur l'appel du systme
ptrace(). Cette mthode prsente
un ensemble correct de fonctionna-
lits de niveau infrieur, dont cer-
taines seront sans doute adoptes Figure 9. Essai sur ifenslave au moyen du mode ptrace
dans l'outil. Enfin, ptrace permet
d'activer un processus permettant d'un signal. Nous appellerons processus fils. Le dernier proces-
de contrler l'excution d'un autre. ptrace() avec PTRACE _ TRACEME sus sera cr au moyen de fork().
Le processus ainsi pist se compor- en tant que valeur de la requte PTRACE _ GETREGS nous permettra
te normalement, jusqu' dtection afin d'activer le contrle sur les d'intercepter toutes les valeurs