Le consortium Software Assurance Forum for Excellence in Code (SAFECode) qui réunit de grands éditeurs comme Adobe, EMC, Juniper, Microsoft, Nokia, SAP, Siemens et Symantec, se préoccupe de la sécurité des logiciels. Il veut inciter les éditeurs à mieux peaufiner le codage de leurs applications afin de réduire le nombre de vulnérabilités susceptibles d'être ensuite exploitées par des attaquants potentiels. Son dernier avis, qui donnne des pistes pour limiter les failles au cours du processus de développement logiciel, s'est concentré sur la méthode Agile. Ce cadre est utilisé pour le développement de logiciels en plusieurs étapes. Il permet de répartir le travail entre différentes équipes. Celles-ci collaborent d'abord dans des « sprints » pour développer la première itération de code, puis retravaillent régulièrement ce code pour affiner le produit en fonction des exigences et des apports des utilisateurs.

Le dernier document de SAFECode, intitulé « Practical Security Stories and Security Tasks for Agile Development Environments » traite des pratiques à adopter en matière de sécurité dans l'environnement de développement Agile. Il propose notamment aux équipes de développeur Agile une liste d'objectifs spécifiques, dont certains à réaliser dès l'origne du projet, plus les contraintes qui doivent incomber à chacun des participants. « Les tâches sont passées au crible à la fin de chaque sprint, avant la mise en route du tour suivant. Cela permet de placer les équipes de développeurs Agile sur une trajectoire qui les conduira à un produit final plus sûr », a déclaré Edward Bonvar, ingénieur en logiciel  senior chez Symantec, qui participe au SAFECode.

Une grille de recommandations

Le document comporte 36 recommandations que les équipes Agile pourraient adopter quand elles travaillent sur des produits logiciels. Celui-ci vient compléter un document sur les bonnes pratiques rédigé précédemment par le groupe. Les recommandations émanent directement des équipes de codage, membres du SAFECode, qui ont établi, d'après leur expérience, des modalités qui leur semblent efficaces pour aborder le codage Agile. Chaque objectif décrit dans un langage simple et très pragmatique une situation particulière à laquelle peut-être confrontée un membre de l'équipe. On trouve par exemple, « l'histoire » suivante : « En tant qu'architecte/développeur et en tant que responsable qualité, je dois m'assurer et vérifier que les attaques de type cross-site scripting ne sont pas possibles ». Celle-ci détaille l'ensemble des tâches à accomplir pour réaliser l'objectif attendu, chacune responsabilisant le membre de l'équipe chargé de travailler sur la tâche en question.

Une autre histoire en relation avec celle mentionnée ci-dessus, s'adresse aux développeurs (D) et aux testeurs (T) : «[D/T] Lors de la génération de pages web dynamiques, filtrer l'entrée de tout le contenu non désiré des exécutables chargés par le navigateur (par exemple, des champs générés par l'utilisateur dans une base de données). Considérer toutes les entrées de contenu qui pourraient éventuellement être présentées et consommées par le navigateur, comme des événements générés en dehors du système, des messages de log, des éléments dans une URL, des valeurs de champs de formulaire, etc... Effectuer ce filtrage du côté serveur, empêcher leur utilisation. »

En fonction du nombre de vérifications effectuées pour atteindre l'objectif déterminé après le premier sprint, les tâches peuvent être reportées au prochain tour pour être affinées ou pour répondre à d'autres exigences. La liste des tâches est destinée à guider les équipes Agile dans la réalisation de ces objectifs. Elle doit permettre de réduire les risques de vulnérabilités. « Il ne s'agit pas d'imposer une méthode rigide et inapplicable », a encore déclaré Edward Bonvar. Pour les entreprises membres de SAFECode, « intégrer la sécurité dans Agile était un défi, », a t-il ajouté. « Elles ont déjà réussi à partager leurs expériences. »