Objectifs :
Le C est le langage indispensable pour la conception d’applicatifs système et réseau, quand un accès et une maîtrise directe sur les éléments du système d’exploitation et du matériel sont exigés. De plus, la majorité des programmes des divers systèmes d’exploitation (Unix/Windows) sont codés en C. - Apprendre par la pratique la programmation sécurisée en C - Comprendre les fondamentaux de la sécurité liée au développement d’applications en C - Acquérir les bons réflexes lors de la conception et l’implémentation d’applications - Savoir mettre en oeuvre des mécanismes de sécurité
Public cible :
- Ingénieurs / Techniciens - Administrateurs systèmes - Développeurs
Contenu :
Rappel des besoins Rappels - Du code source au binaire exécutable Langage C (structure, normes, conven- tions de nommage) - Modélisation de données complexes (listes chaînées, ...) - Compilation : alertes et erreurs - Nécessité du développement sécurisé - Vulnérabilités classiques - Débordements de zones mémoires Conditions de course Shatter attacks - Fuites d’information - Etudes de cas réels (bogues et vulnérabilités) Importance de la gestion de la mémoire en C Gestion de la mémoire - Portée des variables et effets sur le programme - Allocation/libération de mémoire dynamique Allocation de la mémoire - Fuite de mémoire (memory leak) - Routines sécurisées d’allocation/libération de mémoire - Détection de fuites de mémoire Débordements de tampon : exploitation et prévention Processus - Création de processus et manipulation - Protection de la mémoire Processus légers (threads) - Création de processus légers et manipulation - Protection de la mémoire Mémoire partagée entre processus Gestion d’exceptions Windows Sécurité des interfaces graphiques Protection des applications Win32 GUI Intoduction à l’analyse par rétro-conception
|