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 !
[email protected]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 [email protected]. 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 [email protected] |
ac | Adrian Chadd [email protected] |
ak | Adam Kubicki [email protected] |
am | Albert Mietus [email protected] |
avk | Alexander V. Kalganov [email protected] |
bb | Bob Bishop [email protected] |
bjn | Brent J. Nordquist [email protected] |
bob | Bob Willcox [email protected] |
btm | Brian T. Michely [email protected] |
cg | Coranth Gryphon [email protected] |
cl | Chris Lambertus [email protected] |
crh | Charles Henrich [email protected] |
dc | Dan Cross [email protected] |
dg* | David Greenman [email protected] |
din | Dinesh Nair [email protected] |
dn | David Nugent [email protected] |
dob* | David E. O'Brien [email protected] |
dz | Danny J. Zerkel [email protected] |
ee* | Eivind Eklund [email protected] |
eh | Elijah Hempstone [email protected] |
ehu | Ernest Hua [email protected] |
ejc | Eric J. Chet [email protected] |
gl | Giles Lean [email protected] |
gvr* | Guido van Rooij [email protected] |
gw | Graham Wheeler [email protected] |
imp* | Warner Losh [email protected] |
jb | Jim Bresler [email protected] |
jh | Jake Hamby [email protected] |
jha | John H. Aughey [email protected] |
jk | Jerry Kendall [email protected] |
jkh* | Jordan K. Hubbard [email protected] |
jm | Josef Moellers [email protected] |
jmb* | Jonathan M. Bresler [email protected] |
joe* | Joe Greco [email protected] |
ka | Kalganov Alexander [email protected] |
ki | Kenneth Ingham [email protected] |
ky* | Kazutaka YOKOTA [email protected] |
marc | Marc Slemko [email protected] |
md* | Matt Dillon [email protected] |
mr | Mike Romaniw [email protected] |
mrvm* | Mark Murray [email protected] |
mu | Mudge [email protected] |
or* | Ollivier Robert [email protected] |
pb | Peter Blake [email protected] |
peter* | Peter Wemm [email protected] |
phk* | Poul-Henning Kamp [email protected] |
pst* | Paul Traina [email protected] |
rb | Reinier Bezuidenhout [email protected] |
rd | Rajiv Dighe [email protected] |
rel | Roger Espel Llima [email protected] |
rjk | Richard J Kuhns [email protected] |
rm | Robin Melville [email protected] |
rs | Robert Sexton [email protected] |
sc | Sergei Chechetkin [email protected] |
tao | Brian Tao [email protected] |
tdr | Thomas David Rivers [email protected] |
vk | Vadim Kolontsov [email protected] |
witr | Robert Withrow [email protected] |
xaa | Mark Huizer [email protected] |