Travaux pratiques en Certification et Fuzzing

Travaux pratiques en Certification et Fuzzing

Donnés lors de l’école d’hiver CyberWal in Galaxia

Le CETIC est intervenu lors de l’école d’hiver CyberWal in Galaxia organisée par le projet CyberExcellence (Voir la revue de presse à ce sujet).

Date: 23 décembre 2022

Domaine: Secteur numérique 

Thème d'innovation: Cyber Sécurité 

A propos du projet: CyberExcellence 

Introduction et cours théorique

Le cours théorique “Certification oriented cybersecurity testing of cyber physical systems with fuzzing techniques” a été donné par Christophe Ponsard (CETIC) et Xavier Devroey (UNamur).

La première partie de ce cours , donnée par le CETIC, introduit ce qu’est une certification, ce qu’elle apporte et l’importance d’utiliser des standards ainsi que la manière dont ceux-ci sont établis. Elle détaille ensuite quelques standards et certifications en cybersécurité couramment utilisés avant de présenter plus en détail le standard Common Criteria qui est l’un des plus utilisés pour la sécurité des produits. Ce standard est notamment découpé en classes couvrant différentes activités donnant de l’assurance sur le processus de développement d’un produit. Chaque classe définit différents niveaux d’activités à réaliser en fonction du niveau d’assurance ciblé en fonction de la criticité du produit. Pour chacune de ces activités, des justifications (évidences) doivent être fournies. Enfin, le cours détaille plus en profondeur les classes ATE et AVA, qui portent respectivement sur les tests fonctionnels et sur la détection de vulnérabilités. Ces 2 classes impliquent des activités de tests qui peuvent être réalisées à l’aide d’une technique appelée “Fuzzing” qui faisait l’objet de la suite du cours.

La seconde partie, assurée par UNamur, détaille cette technique de tests de Fuzzing en commençant par en expliquer le principe de base. L’idée est de soumettre un logiciel à des informations d’entrée générées de manière plus ou moins aléatoires afin d’observer comment il y réagit. Lorsque le programme commence à réagir en générant des erreurs, en cessant de répondre ou en montrant des réponses anormales, un bug ou une vulnérabilité en lien avec les entrées est détecté et doit être investigué. Le cours détaille ensuite les différentes techniques de fuzzing : purement aléatoires, basées sur une mutation d’entrées valides ou basées sur une grammaire ainsi que leurs avantages et inconvénients.

Travaux pratiques

Certification

Le cours théorique a été suivi d’une séance de travaux pratiques couvrant les 2 principaux sujets et a été présenté par Guillaume Ginis (CETIC) et Guillaume Nguyen (UNamur).
Un exercice basé sur la certification Critères Communs, inspiré du projet de recherche européen SPARTA, a permis de réfléchir sur les approches possible pour la gestion des mises à jour dans un contexte de voiture autonome certifiée : Est-ce qu’il est nécessaire de re-certifier complètement un système lorsqu’un composant doit être mis à jour ? Comment évaluer l’impact de cette mise à jour ? Cela est-il prévu dans des certifications tel que les critères communs ?
Dans le use case évoqué, la réalisation d’une analyse d’impact permettait de montrer qu’une certification incrémentale est possible. La suite de l’exercice consistait dès lors à identifier les preuves nécessaires pour cette certification incrémentale. Diverses preuves étaient proposées et devaient être associées aux bonnes classes de preuves correspondantes des Critères Communs.

Fuzzing

Le deuxième exercice était centré sur le fuzzing. Une réplique de la communication entre 2 véhicules participant à un peloton de voitures autonomes a été fournie aux étudiants. Cette communication était basée sur ROS (Robot Operating System). Le but de l’exercice est de réaliser des tests de fuzzing sur cette communication en utilisant différentes techniques, de la plus simple à la plus “intelligente”.
Dans un premier temps, le format du message n’est pas connu et le premier exercice utilisera du fuzzing purement aléatoire. Par la suite, les étudiants ont été invités à espionner les communications à l’aide d’une attaque Man in the Middle afin d’obtenir le format des messages échangés et de pouvoir réaliser un test de fuzzing par mutation. Les messages échangés utilisant le format json, ces 2 types de fuzzing ne montrent pas beaucoup d’efficacité si le logiciel est un minimum robuste. Enfin, un test de fuzzing basé sur une grammaire reprenant le format du message a été réalisé. Celui-ci, plus ciblé, a montré effectivement une influence sur le logiciel.

Supports

Tous les supports de formation sont disponibles sur le site de la Winter School : https://cyberwalingalaxia.be/. Quant aux exercices, ceux-ci sont disponibles en public sur github (https://github.com/cetic/certif-tp et https://github.com/cetic/winterschool-tp) afin qu’ils puissent servir à d’autres formations de ce type.