Développement C Sécurisé

Prochaines dates
  • Du 15 au 17 avril 2013
  • Du 30 septembre au 2 octobre 2013
  • Du 16 au 18 décembre 2013
Informations générales
  • Code : DCS
  • Durée: 3 jours
  • Participants : 10 Maximum
  • Prix : 1900 € HT
Public visé
  • Ingénieurs / Techniciens
  • Administrateurs systèmes
  • Développeurs
Pré-requis
  • Connaissance du langage C
Moyens
  • Support de cours
  • 80% d’exercices pratiques
  • 1 PC par personne
  • Environnement de développement dédié
Objectifs
  • 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é

Appelez nous : 01 78 76 58 00

Les bonnes pratiques de la programmation sécurisée : Le développement par des experts sécurité

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.

Sa compréhension est donc indispensable pour la pratique d’audits de sécurité très techniques et d’analyse de code (recherche de vulnérabilités). Les applications écrites en C ne sont pas pour autant sécurisées (le langage C étant très proche de la machine, la moindre erreur peut se traduire par une vulnérabilité) Les mécanismes de sécurité intégrés au langage C sont vraiment minimes

Les bonnes pratiques doivent être maitrisées, tout comme certains réflexes à avoir lors du développement Nous insistons grandement tout au long de cette formation sur les aspects sécurité de ce langage, et sur les erreurs à ne pas commettre pour éviter les failles qui sont la cause d’intrusion sur les systèmes.

Nous veillons à suivre les normes ANSI, qui permettent d’assurer le portage simple de vos applications entre différents types d’architectures (Unix/Windows).

Jour n°1

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

Jour n°2

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
Jour n°3

Mémoire partagée entre processus

  • Utilisation d’objets mémoire nommés (FileMapping)
  • Accès concurrents (sémaphores et mutexes)

Gestion d’exceptions Windows

  • __try, __catch, __finally
  • Structured Exception Handlers (SEH)
  • Vectored Exception Handlers (VEH)

Sécurité des interfaces graphiques

  • Problématique du cloisonnement des fenêtres
  • Gestion des messages personnalisés (WM_USER)
  • Shatter attacks (rappels)

Protection des applications Win32 GUI

  • Conception des messages
  • Erreurs à éviter
  • Protections intégrées à Windows

Intoduction à l’analyse par rétro-conception

  • Rappels architecture Intel x86
  • Protections logicielles Technique de détection de débogage
  • Contremesures

2008 - 2013 © Sysdream - N° d'agrément 11930594993