Sécurité
OpenBSD s'attaque au buffer overflow
La prochaine version de l'Unix libre, axé autour de la sécurité, entend limiter voire supprimer ce type d'erreurs qui constituent la faille la plus fréquente des logiciels. L'occasion de revenir sur les fondements techniques du problème. (Mardi 15 avril 2003)
     
En savoir plus
La très grande majorité des failles découvertes ou exploitées ces dernières années concerne le dépassement de "buffer", que l'on peut traduire littéralement par "mémoire tampon". Il suffit pour s'en convaincre de consulter le dossier que nous y consacrons. Une technique qui semble se répéter à l'envi, sorte de talon d'Achille de la sécurité informatique dans lequel s'engouffrent nombre de pirates.

L'OpenBSD Project - système d'exploitation libre et multi-plates-formes dérivé d'Unix et particulièrement porté sur la sécurité - vient d'annoncer de son côté que sa nouvelle version prévue le premier mai prochain supprimera purement et simplement les dépassements de buffer !

Une histoire de tampon et de pile

Le principe du "dépassement de tampon" est le suivant: sont écrites, dans la zone mémoire utilisée par une application, plus de données que prévu. Cet excès provoque une sorte de détournement d'aiguillage au niveau d'une zone mémoire particulière : la "pile". Cette zone est appelée par les fonctions de l'application pour obtenir les données locales dont elle ont besoin pour s'exécuter.

Or, la pile fonctionne selon le principe - bien connu des logisticiens - du LIFO (last in, first out), qui veut que la dernière information entrée soit rangée avant toutes les autres et soit la première à sortir. Cela provoque, quand une chaîne de caractère trop longue est soumise au buffer, l'écrasement des dernières données enregistrées dans la pile et sème la confusion et l'anarchie dans le système qui assure alors une redirection royale vers une "adresse" qui n'est pas celle normalement prévue, mais bien celle du code malveillant. Dès lors, la prise de contrôle des fichiers 'racine" est facilitée et la chute du système assurée.

Quelles mesures prendre pour s'en prémunir ?
La première réaction est bien sûr, côté développeur, de ne pas utiliser de fonctions susceptibles d'ouvrir la voie au dépassement de buffer. En langage C, par exemple, les fonctions strcpy() et strcat() sont particulièrement "dangereuses" car elles ne permettent pas de contrôler les limites du buffer. Des librairies de fonctions développées pour pallier à ce manque sont par ailleurs disponibles.

Autre vérification : s'assurer qu'aucune instruction ne peut exécuter aucune autre instruction contenue dans la pile. L'utilisation d'outils de compilation de code permet par ailleurs de détecter et de supprimer la présence de fonctions sensibles, les versions les plus récentes prévoyant ce genre de problèmes. C'est particulièrement vrai pour les logiciels et applications Open Source car le code doit nécessairement passer par une phase de recompilation.

En savoir plus
Des prometteuses annonces chez OpenBSD Project
Sans dévoiler précisément les détails techniques de la nouvelle mouture d'OpenBSD, la parade choisie semble s'organiser autour de la place de la pile dans la mémoire, une place qui sera déterminée au hasard, de sorte que le code malicieux devra être adapté au système visé pour être efficace. De plus, la nouvelle version réorganisera la structure selon laquelle les données sont stockées dans la pile afin de vérifier si la dernière information rentrée a été modifiée ou non.

[Fabrice DEBLOCK, JDN Solutions]
 
Accueil | Haut de page
 
 

  Nouvelles offres d'emploi   sur Emploi Center
Auralog - Tellmemore | Publicis Modem | L'Internaute / Journal du Net / Copainsdavant | Isobar | MEDIASTAY