% INF889A — Analyse de programmes pour la sécurité logicielle % UQAM — Département d'informatique % Plan de cours — Hiver 2020 * Horaires, locaux et enseignants: Responsable(s) du cours ======================= Coordination ------------ Privat, Jean PK-4830 poste 3314 Description du cours ==================== Objectifs --------- Étudier les vulnérabilités et l'exploitation logicielle en utilisant des techniques et outils axés sur l'analyse de programmes et de langages de programmation. Sommaire du contenu ------------------- Principes et techniques mis en œuvre par les outils de sécurité logicielle et les logiciels malveillants pour l'analyse, la détection, l'exploitation, la protection, etc. de problèmes de sécurité dans les programmes informatiques. Analyse des techniques et des mécanismes impliqués dans les failles logicielles modernes et les contre-mesures proposées par la littérature scientifique et l'industrie. Étude des langages de programmation et des pratiques de développement d'un point de vue de la sécurité. Contenu du cours ================ La première partie du cours présente les fondements de l'analyse de programmes (analyses statiques, analyses data-flow, propagations de contraintes, analyses interprocédurales, interprétation abstraite, etc.) La seconde partie du cours est consacrée à de l'étude et à des discussion sur des sujets d'actualité, sur les travaux des étudiants, sur des articles scientifiques et sur des outils et biliothèque d'analyse de programme et de sécurité logicielle. Modalités d'évaluation ====================== Note: comme c'est la première occurrence du cours, les échéances données ici sont approximatives et s'adapteront en fonction du déroulement. - Participation en classe: 10% - Examen intra (après la première partie du cours): 30% - Étude et présentation d'un outil: 15% - Étude et présentation d'un article: 15% - Travail de session (projet): 30% Examen intra, 30% ----------------- Examen à livre fermé, portant sur la première partie du cours. Une feuille de note personnelle est autorisée: manuscrite (ni impression ni photocopie), format lettre, recto verso. Études et présentations, 2x 15% ------------------------------- Les étudiants devront étudier et présenter - un outil d'analyse de programme et/ou de sécurité logicielle (dans un premier temps) - un article scientifique (dans un second temps) Les sujets étudiés sont choisis par les étudiants, mais validés par le professeur. Les présentations seront réparties sur la session (10%). De courts documents écrits devront être produits après la présentation en prenant en compte les commentaires (5%). Travail de session (projet), 30% -------------------------------- Travail de session approfondi sur un domaine du choix des étudiants qui peut prendre plusieurs formes: compte-rendu de lecture dans un sous-domaine du cours ou connexe, mise-en-œuvre pratique de concepts vu en cours, développement de logiciel, etc. Le travail de session est découpé en livrables - Semaine 5: Choix du sujet (5%) - Semaine 10: Rencontre d'étapes (5%) - Semaine 15: Présentations finales (10%) - Semaine 15 aussi: mini-rapport résumant la présentation (10%) Médiagraphie ============ - Anders Møller et Michael I. Schwartzbach, *Static Program Analysis*, notes de cours, 2019 (200 pages, gratuit, optionnel) - Flemming Nielson, Hanne Riis Nielson et Chris Hankin, *Principles of Program Analysis*, Springer, 2005 (452 pages, complémentaire) - Autres références données en classe