Product SiteDocumentation Site

4.15. Se protéger contre les dépassements de tampon

Dépassement de tampon est le nom d'une attaque courante sur un logiciel[37] qui utilise insuffisamment des vérifications de limites (une erreur de programmation courante, plus particulièrement en langage C) pour exécuter du code machine par des entrées de programme. Ces attaques, contre des logiciels serveur qui attendent des connexions distantes et contre des logiciels locaux qui autorisent des droits élevés aux utilisateurs (setuid ou setgid) peuvent avoir pour conséquence la compromission de tout un système.
Quatre méthodes en particulier permettent de se protéger contre les dépassement de tampon:
  • appliquer un correctif au noyau pour empêcher l'exécution de la pile. Vous pouvez utiliser Exec-shield, OpenWall ou PaX (incluant les correctifs Grsecurity et Adamantix);
  • corriger le code source en utilisant des outils pour trouver des fragments qui pourraient introduire cette faille;
  • recompiler le code pour introduire des vérifications qui empêchent les dépassements en utilisant le correctif pour GCC http://www.research.ibm.com/trl/projects/security/ssp/ (qui est utilisé par http://www.adamantix.org).
Debian GNU/Linux, dans sa version3.0, fournit des logiciels pour implémenter toutes ces méthodes à l'exception de la protection de la compilation du code source (mais cela a été demandé dans le http://bugs.debian.org/213994).
Notez que même si Debian fournissait un compilateur qui fournit cette fonction de protection de dépassement de tampon/pile, tous les paquets auraient besoin d'être recompilés pour introduire cette fonctionnalité. C'est, en fait, ce que fait Adamantix (entre autres fonctionnalités). L'effet de cette nouvelle fonctionnalité sur la stabilité des logiciels doit encore être déterminée (certains programmes ou architectures de processeur pourraient être cassés à cause d'elle).
Dans tous les cas, soyez conscient que même ces contournement peuvent ne pas prévenir les dépassements de tampon car il existe des moyens de circonvenir ceux-ci, comme décrit dans l'http://packetstorm.linuxsecurity.com/mag/phrack/phrack58.tar.gz du magazine phrack ou dans l'alerte du CORE http://online.securityfocus.com/archive/1/269246.
Si vous voulez tester la protection contre les dépassements de tampon une fois que vous l'avez mise en place (quelque que soit la méthode), vous pouvez vouloir installer le paxtest et exécuter les tests qu'il fournit.

4.15.1. Correctif du noyau de protection pour les dépassements de tampon

Des correctifs du noyau liés aux dépassements de tampon incluant le correctif Openwall fournissent une protection contre les dépassements de tampon dans les noyaux Linux2.2. Pour les noyaux2.4 et plus récents, vous devrez utiliser l'implémentation Exec-shield ou l'implémentation PaX (fournies dans le correctif grsecurity, kernel-patch-2.4-grsecurity et dans le correctif Adamantix, kernel-patch-adamantix). Pour plus d'informations sur l'utilisation de ces correctifs, veuillez consulter la section Section 4.14, « Les utilitaires pour ajouter des correctifs au noyau ».

4.15.2. Tester des programmes pour les dépassements

L'utilisation d'outils pour détecter des dépassements de tampon nécessitent dans tous les cas une expérience de programmation pour corriger (et recompiler) le code. Debian fournit par exemple: bfbtester (un testeur de dépassement de tampon qui brutalise des binaires par la force par des dépassements de ligne de commande et d'environnement). D'autres paquets intéressants pourraient aussi être rats, pscan, flawfinder et splint.


[37] Si commune, en fait, qu'elles ont été la base de 20% des failles de sécurité signalés cette année, d'après les http://icat.nist.gov/icat.cfm?function=statistics.