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.orgModule | 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 |