Cours 2023-2024

Analyse de programmes pour la cybersécurité [INFOM227]

  • 5 crédits
  • 30h+15h
  • 1er quadrimestre
Langue d'enseignement: Français

Acquis d'apprentissage

À la fin de ce cours, l’étudiant·e sera capable de :

  • Décrire et expliquer les principes des différentes méthodes d'analyse statiques de programmes.
  • Décrire et expliquer les principes des différentes méthodes d'analyse dynamiques de programmes.
  • Choisir une stratégie d’analyse statique de programme adéquate en fonctions des objectifs de cybersécurité visés.
  • Réaliser une analyse dynamique de programme en appliquant une approche de fuzzing adéquate.

Objectifs

L’objectif de ce cours est d’introduire l’étudiant·e aux principales méthodes d’analyse statiques et dynamiques de programmes en vue d’identifier des problèmes potentiels liés à la cybersécurité.

Contenu

Le cours vise à introduire les différents aspects de l’analyse statique et de l’analyse dynamique pour la cybersécurité et le développement de logiciels sûrs. Le contenu comprendd’une part les différents types d’analyse statique : l’analyse data-flow et l’interprétation abstraite (framework, terminaison, correction, concept de widening,  ...), l’analyse interprocédurale et l’analyse control-flow et l’analyse en présence de pointeurs. Ces types d’analyses seront illustrés au travers de deux applications pratiques : l’analyse de mauvais usages d’APIs et l’analyse de dépendances. D’autre part, le cours comprend une introduction à l’analyse dynamique au travers du fuzzing : fuzzing lexical, fuzzing syntaxique et fuzzing sémantique. Enfin, il s’agira de voir comment mettre en œuvre ces différents types d’analyse au sein d’un cycle de développement applicatif.


Méthodes d'enseignement

Le cours se compose de séances magistrales et de séances de travaux pratiques.

Mode d'évaluation

L’évaluation repose sur la réalisation d’un projet.

Sources, références et supports éventuels

  • Nielson, Flemming, Hanne R. Nielson, and Chris Hankin. "Principles of program analysis." Springer Science & Business Media, 2004.
  • Zeller, Andreas, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler. "The fuzzing book." 2019.
  • Hejderup, J., Beller, M., Triantafyllou, K. et al. “PRÄZI: from package-based to call-based dependency networks.” Empirical Software Engineering 27, 102 (2022). https://doi.org/10.1007/s10664-021-10071-9
  • Amann, Sven, Hoan Anh Nguyen, Sarah Nadi, Tien N. Nguyen, and Mira Mezini. "A systematic evaluation of static api-misuse detectors." IEEE Transactions on Software Engineering 45, no. 12 (2018). https://doi.org/10.1109/TSE.2018.2827384

Langue d'enseignement

Français

Lieu de l'activité

NAMUR

Faculté organisatrice

Faculté d'informatique
rue Grandgagnage 21
5000 NAMUR
T. 081725252
F. 081724967
secretariat.info@unamur.be

Cycle

Etudes de 2ème cycle