C’est la tradition, le Sans sort son habituel palmarès des « 25 fautes de programmation à ne plus commettre à partir de ce jour ». Il faut croire que les impératifs de rendement et le stakhanovisme des pondeurs de code rendent sourds, car les « fautes à éviter » de 2009 ressemblent à s’y méprendre à celles de 2008, légèrement assaisonnées d’un zeste d’inspiration fleurant bien l’Owasp.
Les erreurs les plus courantes sont classées en trois catégories : Interactions dangereuses entre différents composants, gestion des ressources risquées et défenses poreuses. Et l’on retrouve dans la première section les injections SQL, les XSS, les injections de commandes noyau et autres accès au shell, les CSRF, les « race conditions » et les « indices » révélateurs fournis par les messages d’erreur. La deuxième classification regroupe les BoF et autres jeux sur les limites d’adressage mémoire, la récupération de données externes empoisonnées ou de chemins d’accès, l’injection de code, la récupération de données ou de programmes sans le moindre contrôle d’intégrité et les calculs à résultat erroné (un classique qui remonte à la haute époque des « crics » des calculatrices scientifiques et autres « ordinateurs personnels de poche » des années 80). Dans la catégorie « défenses poreuses », là encore, rien que du classique, du solide, de l’immuable : mauvais contrôles d’accès, algo crypto dépassé (vous avez dit MD5 ou WEP ?), mots de passe « codés en dur » dans des fichiers de paramétrage ou des applications, par exemple, générateurs aléatoires prévisibles ou absence de générateur de données aléatoires (voir les attributions de port IP de la dernière faille Kaminsky et la dernière attaque en date contre l’implémentation de MD5 dans certains SSL), usage abusif de niveaux de privilèges inadaptés (admin pour exécuter Notepad et Solitaire) ou délocalisation sur les postes de travail des mécanismes de contrôle d’accès serveur.