Ecrivez-vous du code sécurisé?

Au CERN, nous sommes excellents dans la production de logiciels, comme des jobs d'analyse complexe, des programmes de contrôle sophistiqués, des outils de surveillance étendue, des applications Web interactives, etc. Ces logiciels sont généralement très fonctionnels et répondent assurément aux besoins et aux exigences définis par son auteur. Toutefois, en raison de contraintes de temps ou tout simplement par ignorance, les aspects de sécurité sont souvent négligés. Dans le passé, il a, par la suite, été encore plus embarrassant pour l'auteur de découvrir que son code était imparfait et avait été détourné pour pénétrer les ordinateurs du CERN, des pages web ou pour voler des données...

 

Ainsi, si vous avez le plaisir ou le devoir de produire des applications logicielles, prenez du temps avant pour vous familiariser avec les pratiques de bonne programmation. Elles devraient non seulement éviter des failles de sécurité de base dans votre code, mais aussi améliorer la lisibilité, la maintenabilité, ainsi que l'efficacité de celui-ci. On trouvera les règles de base pour une bonne programmation, ainsi qu'une liste d'ouvrages de réfèrence sur le développement logiciel, dans la section destinée aux développeurs logiciels sur notre page web. Vous pouvez également tester facilement vos logiciels vous-même. Vérifiez soigneusement les avertissements de votre compilateur et utilisez les analyseurs de code statiques suggérés. De plus, les formations techniques HR fournissent bien sûr d'excellents cours sur la programmation sécurisée en Java, C++, Python, Perl et les langages web. Les prochains cours pratiques, d'une journée, portent sur la sécurisation de PHP, Java et les applications Web (27, 28 et 29 septembre respectivement) ainsi que sur la programmation sécurisée en Python (28 octobre). Il y a encore des places disponibles ! Enfin, n'hésitez pas à contacter Computer.Security@cern.ch si vous préférez un examen externe de votre logiciel !

 

Alors qu'en est-il de vos compétences dans l'écriture de logiciels sécurisés ?

Si vous voulez gagner l'un des trois livres merveilleux sur la sécurité logicielle, veuillez vérifier ce court programme ci-dessous et envoyez les failles de programmation que vous avez identifiées le 12 Septembre au plus tard à Computer.Security@cern.ch :

1 /* Safely Exec program: drop privileges to user uid and group
2 * gid, and use chroot to restrict file system access to jail
3 * directory. Also, don’t allow program to run as a
4 * privileged user or group */
5 void ExecUid(int uid, int gid, char *jailDir, char *prog, char *const
argv[])
6 {
7 if (uid == 0 || gid == 0) {
8 FailExit(“ExecUid: root uid or gid not allowed”);
9 }
10
11 chroot(jailDir); /* restrict access to this dir */
12
13 setuid(uid); /* drop privs */
14 setgid(gid);
15
16 fprintf(LOGFILE, “Execvp of %s as uid=%d gid=%d\n”, prog, uid, gid);
17 fflush(LOGFILE);
18
19 execvp(prog, argv);
20}
(Avec l'aimable autorisation de Barton Miller, University of Wisconsin, Madison, US)

Bien sûr, si vous avez des questions, suggestions ou commentaires, veuillez contacter Computer.Security@cern.ch ou rendez-nous visite à l'adresse http://cern.ch/security.

 

par Computer Security Team