Programmation sécurisée
Classes de vulnérabilités
«If builders built buildings the way programmers wrote programs, then
the first woodpecker that came along would destroy civilization. »
-- Gerald Weinberg - http://en.wikipedia.org/wiki/Gerald_Weinberg
V3.1
Conception
www.failblog.org
Conception
Vulnérabilité de conception : vulnérabilité
dans l’architecture de l’application ou les choix
« stratégiques » de l’application
Agencement des composants
Choix des modèles d’application / des protocoles
Conception
Exemples de cas d’erreur de conception :
Faible séparation des tâches et des opérations
Si une opération est compromise alors l’ensemble des
opérations est impacté
Absence d’approche modulaire
Périmètre du programme à sécuriser est plus
important / fragmenté
Redondance du code et donc des vulnérabilités
Mauvais choix des algorithmes et des normes
utilisées
Implémentation
Erreur dans l’implémentation: écart entre les spécifications
et l’implémentation d’une fonctionnalité
Un attaquant va exploiter un défaut d’implémentation
d’un protocole réseau, d’un algorithme, etc.
Il est nécessaire de connaitre parfaitement le langage de
programmation et ses pièges
Certains langages plus « faciles » que d’autres
Exemple: C vs Java
Importance de la relecture du code
Exemple MS : 1 développeur = 1 relecteur
Adhérence à la sécurité du système d’exploitation :
Utilisation des bibliothèques spécifiques au système
1 / 36 100%