Un « CISSP » pour les programmeurs
L'immense majorité des 7000 failles référencées Mitre dans le courant de l'année 2006 auraient pu très simplement être évitées, car relevant généralement d'erreurs de programmation excessivement courantes. C'est en partant de ce principe que le Sans Institute lance une nouvelle « certification », le GSSP ou GIAC Secure Software Programmer. Un examen qui se passera dans le cadre du tout nouveau SSI, Sans Security Institute. Le programme portera sur la maîtrise de C/C++, Java/J2EE, .NET/ASP et PHP/Perl et sera sanctionné par un diplôme Gssp-C, Gssp-J, Gssp-P selon le langage choisi.
Les trois péchés du codeur
80% des « bugs » ont pour origine 3 négligences fréquentes. Des négligences que l'on n'apprend à corriger ni à l'école, ni dans le cadre de la formation en entreprise, estiment les responsables du Sans. Les filières de formation sont obnubilées par l'algorithmique et perdent de vue les pratiques du métier. Tout au plus certains principes de prudence sont-ils enseignés, mais on est loin d'entendre rabâcher une constante incitation à observer strictement les règles élémentaires de « secure coding ». Ces trois erreurs fondamentales du programmeur sont :
- Accepter des saisies de la part de l'utilisateur sans leurs faire subir une phase de validation et de nettoyage ou formatage. Cela va de la trop célèbre injection 0A0D au coeur d'une URL, en passant par l'injection SQL dans un champ de saisie, l'entrée d'une valeur supérieure à celle qui est normalement admise, le glissement d'une commande html dans un formulaire destiné à du texte pur... la non vérification des « clauses » est un des leviers des adeptes du Fuzzing et l'une des mamelles du hacking de premier niveau, notamment des attaques en « cross site scripting ».
- Autoriser des données placées dans une zone tampon à pouvoir excéder la taille dudit tampon. En termes techniques, c'est ce que l'on appelle un « buffer overflow », BoF ou saturation de tampon. C'est le mot de passe ou l'URL de 255 caractères « plus un appel d'exécutable », c'est l'explosion d'un tampon mémoire, suivie de la possibilité d'exécuter un code arbitraire dans l'espace libre ainsi atteint...et la naissance d'un Sasser, d'un Blaster ou d'un Bot.
- Mal gérer les entiers : ici encore, l'absence de contrôles sur la longueur ou le type d'entiers figurant dans un champ de saisie peut conduire à un overflow. Là encore, un vieux classique des attaques visant les contrôles ActiveX ou le JRE Java.
Le passage d'un Gssp coûtera près de 400$ dans une salle d'examen du Sans, mais des cycles de certification en entreprise, via un formulaire Web, sera également prévu et à un prix légèrement moins élevé.
Les retombées espérées d'une telle certification sont évidentes : le Gssp sert à l'employeur à mieux cerner son propre niveau de qualité -conformément aux procédures d'audit sécurité en vigueur- et à garantir à ses propres clients une assurance « a minima » sur la solidité des logiciels développés. Les clients y verront sans doute la preuve qu'un certain niveau de « points de contrôle » ont instinctivement étés vérifiés, et bien que l'espérance de voir les failles disparaître à jamais, une approche « secure programming » pourrait déjà nettement rayer de la maintenance les principaux accidents de premier niveau. Pour le programmeur, enfin, une certification qualifiante sera un atout indiscutable durant les négociations d'embauche ou de contrat. Ajoutons que le Sans et son Security Institute, bien que travaillant étroitement avec des entreprises commerciales -TippingPoint, Siemens, Juniper- ou du monde administratif ou encore « Open » -Mitre, Open Web Application Security Project (OWASP)- n'est attaché à aucune chapelle, aucune école de programmation, aucune version de langage d'éditeur... et aucune architecture en particulier.
Reste à savoir combien de temps sera nécessaire pour qu'une telle certification parvienne à traverser l'atlantique et ne devienne véritablement populaire.