98
Science de la sécurité du système d’information
Deuxième partie
en Scheme, en Perl ou en Python, parce que ces langages sont plus restrictifs et
ne comportent pas de pointeurs qui contiennent des adresses de zones arbitraires
en mémoire, modifiables par le programmeur. Même à supposer que le traducteur
du langage ou la machine virtuelle chargée de l’exécuter soient eux-mêmes affectés
d’erreurs, leur exploitation malveillante serait très difficile.
Cette possibilité qu’offre le langage C d’utiliser des adresses explicites qui désignent des emplacements arbitraires en mémoire a ses raisons d’être : C a été
conçu à l’origine pour écrire un système d’exploitation (Unix en l’occurrence), et
un auteur de système d’exploitation a besoin d’accéder à des zones de mémoire
situées à des emplacements physiques arbitraires, ne serait-ce que... pour gérer la
mémoire elle-même. Cette possibilité n’est d’aucune utilité réelle pour un serveur
Web ou pour un logiciel d’affichage de documents, et elle devient au contraire une
nuisance. Le malheur est que la popularité de C, accrue par des qualités extralangagières telles que la disponibilité sans supplément de coût sur tout système
Unix et la relative légèreté du compilateur, ont contribué à sa propagation auprès
de communautés de développeurs d’applications, pour lesquels il n’était sans doute
pas le mieux adapté.
Sécurité par analyse du code
Les lignes qui suivent concernent sans doute plus les auteurs de logiciels que les
administrateurs de réseaux. Mais quel administrateur n’est pas à ses heures développeur ? Ne serait-ce que de logiciels d’administration, souvent écrits en Perl,
langage dont il sera question ci-dessous.
Analyses statiques et méthodes formelles
L’analyse statique de programme (static code analysis) désigne un ensemble de techniques destinées à déterminer certaines propriétés d’un programme sans déclencher son exécution, par opposition aux méthodes de test. L’énoncé même de ce
projet montre qu’il peut avoir des applications dans le domaine de la sécurité.
Une première famille de méthodes qui se rattachent à cette catégorie comporte
des méthodes formelles :
Précédent

- 112/276

Suivant