INSA, examen de sécurité logicielle

Divulgâchage : L’examen fini, les copies corrigées, on peut enfin partager le sujet de cette année et sa correction. Amusez-vous bien.

Cette année, nous étions à l’INSA CVL pour notre cours de sécurité logicielle en Master 2 STI. Nous avons déjà partagé les supports de cours et l’examen de l’année précédente (et son corrigé).

Avec l’aimable autorisation de l’INSA CVL

L’examen étant terminé (et corrigé), on peut donc vous partager le sujet de cette année et son corrigé sans peur de fuites qui ruinerait ce contrôle des connaissances.

Le sujet

Le principe est le même que l’an passé : la société Speed-e-Dev a remis le couvert et proposé une nouvelle version de son blog, à vous de chercher les vulnérabilités dans leur code source.

Les supports de cours et les sujets d’examen sont sur la page spécifique de ce cours.

Chaque vulnérabilité découverte rapporte deux points. Chaque erreur en fait perdre un. La note est sur vingt. Vous voulez tenter votre chance ?

Bugs : Trois erreurs sont présentes dans la version PDF et empêcheraient certaines pages de fonctionner. Sans incidence sur les vulnérabilité mais si vous voulez tester, c’est problématique. Ces bugs sont corrigés dans le code source dans l’archive. Et mentionnés sur le corrigé (si vous voulez les détails).

Avertissement : Vous vous doutez bien que pour que les étudiants puissent trouver des vulnérabilités, le code en est truffée, on vous déconseille donc de pousser ce code en prod, à moins que vous ne montiez un honey pot. Sinon, autant publier vos codes d’accès SSH, vous gagnerez du temps.

Le corrigé

Comme promis, le code source contient au moins 15 vulnérabilités. À se demander pourquoi Speed-e-Dev continue de développer des applications vu leur niveau et surtout, comment trouvent-ils les financements ? Au programme :

  1. Informations sensibles mal protégées,
  2. Identifiants faibles,
  3. Injections SQL,
  4. Injection de commandes,
  5. Cross Site Scripting,
  6. Cross Site Request Forgery,
  7. Authentification défectueux,
  8. Contrôle d’accès défectueux,
  9. Fixation de session,
  10. Redirection arbitraires,
  11. Cryptographie défectueuse,
  12. Stockage des mots de passes,
  13. Débordement dans le tas,
  14. Double free.
  15. Variables non initialisées.