Skip site navigation (1) Skip section navigation (2)

Projet de vérification du code source FreeBSD

Informations Générales

Introduction

A la lumière de notre récent (et toujours actuel) souci de la sécurité, il est devenu plus qu'évident qu'un examen complet et rigoureux de la sécurité dans les sources FreeBSD nous permettra d'être encore plus sûr de la sécurité de notre systeme d'exploitation, un OS sur lequel de plus en plus de personnes comptent et qui doit donc être conçu de manière sécurisé pour que cela continue à en être ainsi.

La grande quantité dans FreeBSD de code hérité et de code provenant de sources extérieures peut rendre difficile la détection de trous de sécurité avant qu'il ne soit trop tard et aucune tentative de grande envergure n'a encore été tentée pour inspecter le code et trouver d'éventuelles failles dans la sécurité. Un tel projet est très long et les développeurs de FreeBSD n'ont pas forcément le temps de s'occuper d'une telle tâche. Il est désormais temps de commencer un tel projet si nous voulons continuer à développer un système d'exploitation fiable et sûr dans un monde où l'Internet occupe une place grandissante et (je le pense) produit un environnement encore plus hostile pour un système qui ne serait pas assez protégé. La sécurité informatique est une sorte d'accord entre l'administrateur local et le fournisseur de l'OS et ce fournisseur doit faire sa part du travail.

La première chose entreprise par l'équipe de développement en matière de sécurité a été de choisir un "officier de sécurité", Guido van Rooij qui aura pour objectif premier de veiller à la sécurité de notre OS mais aussi d'être présent et actif dans les différentes listes de diffusion électroniques consacrées à la sécurité extérieures au projet FreeBSD. Il devra également tenir informer l'équipe de tout problème potentiel quant à la sécurité pour éviter d'avoir de mauvaises surprise comme cela a déjà été quelquefois le cas.

La deuxième chose à faire sera de relire méthodiquement chaque ligne du code de FreeBSD en recherchant toute commande succeptible de causer des débordements mémoires (sprintf()/strcpy() au lieu de snprintf()/strncpy() et ainsi de suite), les trous de sécurité moins évidents, du code insuffisamment sécurisé, les commentaires amusants à poster sur freebsd-chat ou quoi que ce soit d'autre qui pourrait s'avérer intéressant.

En utilisant la base de modules comme canevas, nous séparerons l'arborescence des sources en plusieurs parties bien plus faciles à gérer tout en gardant une liste des modules déjà inspectés et ceux restant à faire. Une équipe de personnes choisies avec attention est en train d'être créée. Cette équipe est composée "d'auditeurs" et de "critiques" (la plupart des membres étant les deux à la fois). Un auditeur est chargé, avec éventuellement l'aide d'un autre auditeur, de parcourir le code et de rechercher les possibles trous de sécurité et/ou bugs. Une fois qu'une liste raisonnable de modifications est prête, et en considérant que tous les problèmes ont été découverts, elle sera envoyée à un ou plusieurs critiques qui vérifieront la pertinence des changements demandés. Si l'auditeur n'a pas les droits nécessaires pour modifier le code source de FreeBSD (droits de "commit") le critique effectuera les modifications ainsi retenues si elles sont acceptables.

Critères nécessaires :

Pour devenir auditeur, il est préférable soit d'avoir les droits de modification du code source sur freefall.FreeBSD.org soit un accord avec un autre auditeur/critique qui a les droits nécessaires. Il est également préférable d'être sous FreeBSD-current, ou d'avoir accès à son code source car tous nos changements seront effectués sur cette version pour ensuite être portés (autant que nécessaire) sur les anciennes versions 2.1 et 2.2.

Les choses à rechercher et les règles générales à suivre sont suffisamment complexes pour qu'il soit préférable de les répertorier dans un guide de sécurité FreeBSD Security Guide. Veuillez lire ce document si ce n'est déjà fait. D'autres documents excellents sont le catalogue de la programmation sécurisée Secure Programming Checklist et le catalogue de sécurité sous Unix Unix Security Checklist, tous deux disponibles chez AUSCERT.

Formulaire d'inscription :

Voici le formulaire actuel, il est pour l'instant *très* rudimentaire car le projet n'en est qu'à ses débuts. Au fur et à mesure que les personnes intéressées indiqueront quel(s) module(s) ils désirent "auditer" ou "critiquer", nous le complèterons. Lorsque ce tableau sera devenu difficile à gérer, nous le changerons ou nous le mettrons sous forme de page web (ou autre chose :) ). J'ai laissé quelques exemples pour la mise en forme, et cela ne signifie en aucun cas que quelqu'un ait à s'occuper de modules si vastes.

Tout les éléments présents dans la base de données sont des cibles potentielles d'audit -du plus petit comme "cat" au plus gros comme "lib"-, le plus important étant que les auditeurs n'aient pas les yeux plus gros que le ventre et qu'ils prennent des modules adaptés à leur possibilités. Il est inutile de dire que l'on s'occupe de 15 choses à la fois, si seulement 5 sont traitées car les autres auditeurs penseront que les 10 restantes sont en cours de traitement !

jmb@FreeBSD.org

Module Auditeur(s) Critique(s) Etat
bin ac ee* gvr* jh ka mu vk imp* jmb* md* gvr* Ouvert
contrib cg gvr* Ouvert
eBones mrvm* gvr* Ouvert
games ab ee* xaa gvr* Ouvert
init gl gvr* Ouvert
lib ak bjn pst* dg* imp* jkh* gvr* Ouvert
libc ee* mu gvr* Ouvert
libexec crh ee* imp* mr witr gvr* Ouvert
lkm dob* gvr* Ouvert
sbin ee* imp* or* tao jmb* md* gvr* Ouvert
secure dc mrvm* gvr* Ouvert
telnetd ac dn imp* gvr* Ouvert
usr.bin bob ee* jha jm ky* rb rd rjk vk md* gvr* Ouvert
usr.sbin ee* ejc gl imp* jm marc rd md* gvr* Ouvert

Auditeurs/Critiques principaux

Voici la liste des personnes volontaires pour l'audit ou la critique. Elles peuvent être contactées (en anglais) collectivement à l'adresse auditors@FreeBSD.org. Si vous désirez juste contacter les personnes s'occupant d'une catégorie particulière, par exemple usr.sbin, envoyez votre message (en anglais) à audit-usr.sbin@FreeBSD.org.

clé Nom et Email de l'Auditeur / du Critique
ab Aaron Bornstein aaronb@j51.com
ac Adrian Chadd adrian@psinet.net.au
ak Adam Kubicki apk@itl.waw.pl
am Albert Mietus gam@gamp.hacom.nl
avk Alexander V. Kalganov top@sonic.cris.net
bb Bob Bishop rb@gid.co.uk
bjn Brent J. Nordquist nordquist@platinum.com
bob Bob Willcox bob@luke.pmr.com
btm Brian T. Michely brianm@cmhcsys.com
cg Coranth Gryphon gryphon@healer.com
cl Chris Lambertus cmlambertus@ucdavis.edu
crh Charles Henrich henrich@crh.cl.msu.edu
dc Dan Cross tenser@spitfire.ecsel.psu.edu
dg* David Greenman davidg@FreeBSD.org
din Dinesh Nair dinesh@alphaque.com
dn David Nugent davidn@labs.usn.blaze.net.au
dob* David E. O'Brien obrien@NUXI.com
dz Danny J. Zerkel dzerkel@phofarm.com
ee* Eivind Eklund eivind@FreeBSD.org
eh Elijah Hempstone avatar@gandalf.bss.sol.net
ehu Ernest Hua hua@chromatic.com
ejc Eric J. Chet ejc@gargoyle.bazzle.com
gl Giles Lean giles@nemeton.com.au
gvr* Guido van Rooij guido@FreeBSD.org
gw Graham Wheeler gram@oms.co.za
imp* Warner Losh imp@FreeBSD.org
jb Jim Bresler jfb11@inlink.com
jh Jake Hamby jehamby@lightside.com
jha John H. Aughey jha@cs.purdue.edu
jk Jerry Kendall Jerry@kcis.com
jkh* Jordan K. Hubbard jkh@FreeBSD.org
jm Josef Moellers mollers.pad@sni.de
jmb* Jonathan M. Bresler jmb@FreeBSD.org
joe* Joe Greco jgreco@solaria.sol.net
ka Kalganov Alexander top@bird.cris.net
ki Kenneth Ingham ingham@i-pi.com
ky* Kazutaka YOKOTA yokota@zodiac.mech.utsunomiya-u.ac.jp
marc Marc Slemko marcs@znep.com
md* Matt Dillon dillon@best.net
mr Mike Romaniw msr@cuc.com
mrvm* Mark Murray mark@grondar.za
mu Mudge mudge@l0pht.com
or* Ollivier Robert roberto@keltia.freenix.fr
pb Peter Blake ppb@baloo.tcp.co.uk
peter* Peter Wemm peter@FreeBSD.org
phk* Poul-Henning Kamp phk@FreeBSD.org
pst* Paul Traina pst@FreeBSD.org
rb Reinier Bezuidenhout rbezuide@oskar.nanoteq.co.za
rd Rajiv Dighe rajivd@sprynet.com
rel Roger Espel Llima espel@llaic.univ-bpclermont.fr
rjk Richard J Kuhns rjk@grauel.com
rm Robin Melville robmel@nadt.org.uk
rs Robert Sexton robert@kudra.com
sc Sergei Chechetkin csl@whale.sunbay.crimea.ua
tao Brian Tao taob@risc.org
tdr Thomas David Rivers ponds!rivers@dg-rtp.dg.com
vk Vadim Kolontsov vadim@tversu.ac.ru
witr Robert Withrow witr@rwwa.com
xaa Mark Huizer xaa@stack.nl

* = Possède les droits pour modifier le code source (droits de "commit" CVS).