96
Science de la sécurité du système d’information
Deuxième partie
L’article des CACM cite quelques attaques réussies par débordement de tampon
sur la pile, et énumère plusieurs remèdes de nature à les prévenir :
1. les développeurs du projet OpenBSD passent en revue le code de l’ensemble
de leur système pour y repérer les séquences d’instructions affectées par une
telle vulnérabilité, et ajouter des contrôles de nature à vérifier la longueur des
chaînes de caractères concernées ; ils ont créé, pour les aider dans ce travail
de bénédictin, des logiciels qui automatisent une partie des opérations ;
2. il existe des logiciels ou des bibliothèques de sous-programmes qui instrumentent le compilateur de façon qu’il insère automatiquement des contrôles
adéquats dans le programme compilé :
• StackGuard place dans la pile un marqueur spécial, et détecte grâce à
lui toute altération anormale de l’adresse de retour,
• StackShield modifie le comportement du compilateur gcc de façon à
ce qu’il insère dans le programme compilé des séquences d’instructions destinées à maintenir une copie de secours de la pile des adresses
de retour, et à détecter ainsi toute altération anormale de la pile du
processus,
• RAD est une modification du compilateur gcc qui insère au début et
à la fin des appels de fonctions des instructions qui recopient la pile
des adresses de retour, un peu comme StackShield ;
3. il existe également un projet baptisé SmashGuard qui se propose d’implanter les opérations destinées à protéger la pile contre les débordements de
tampons dans le matériel, par la modification des instructions d’appel et de
retour de fonction, ce qui éviterait d’une part de modifier ou de recompiler d’innombrables logiciels, d’autre part de détériorer les performances des
systèmes en voulant les rendre plus sûrs.
CULTURE gcc
gcc est le compilateur de base du projet GNU. Un compilateur est un programme qui
traduit le texte d’un programme vers un langage de plus bas niveau, souvent le langage
machine de l’ordinateur sur lequel on souhaite que le programme s’exécute. Initialement
conçu pour le langage C, gcc sert désormais à traduire d’autres langages, tels que C++,
Ada ou Java. C’est un logiciel libre.
Précédent

- 110/276

Suivant