Ces tests génèrent des millions d'entrées de programme valides en quelques minutes. Cela permet aux chercheurs d'extraire automatiquement les informations nécessaires du programme qu'ils examinent.

Andreas Zeller, professeur de génie logiciel à l'Université de la Sarre et chercheur au CISPA, s'efforce de déceler les failles de sécurité avant qu'elles ne soient exploitées par les cybercriminels. « Les générateurs de tests modernes peuvent générer des entrées pour le programme en question à grande vitesse », explique Zeller. « Mais pour qu'ils fonctionnent, il est essentiel de connaître la structure de ces entrées afin que le programme n'accepte pas d'entrées invalides. C'est précisément ce sur quoi travaillent nos chercheurs : décrypter la manière exacte dont les entrées de ces programmes doivent être construites. »
En analysant un programme donné et ses entrées, Zeller et ses doctorants, Matthias Hoeschele et Alexander Kampmann, sont capables d'extraire automatiquement ce qu'ils appellent une « grammaire hors contexte ». Il s'agit d'une description de toutes les entrées valides pour un programme spécifique, tout comme la grammaire allemande décrit les phrases correctes en allemand. Les chercheurs du CISPA ont également nommé d'après cette grammaire le système logiciel de correspondance qu'ils ont développé pour cette approche fondamentale. Le prototype, baptisé « Autogram » (contraction d'« automatique » et de « grammaire »), a fait l'objet de premières présentations en septembre 2016 lors de la conférence Automated Software Engineering à Singapour.
« Grâce à la grammaire générée par Autogram, nous pouvons produire des millions d'entrées valides en quelques minutes, ce qui nous permet de tester un programme de manière plus approfondie », explique Zeller. Selon lui, ce grand nombre d'entrées réduit considérablement le risque de passer à côté de failles de sécurité.
Pour extraire la grammaire d'un programme donné, Autogram observe comment celui-ci traite une entrée spécifique. Différentes parties de l'entrée sont traitées à différents endroits du programme, ce qui permet à Autogram de recueillir des informations pertinentes : des données sur la structure des entrées valides et leur relation avec le code du programme. Les grammaires extraites sont en effet très lisibles, car elles utilisent des identifiants spécifiques au code du programme. « Actuellement, nous testons notre prototype en lui faisant analyser un large éventail de formats d'entrée, tels que JSON ou des données tabulaires. Nous utilisons environ un millier d'entrées valides comme base », explique Alexander Kampmann. Ces entrées seront toutefois progressivement supprimées afin de pouvoir extraire la grammaire directement du programme dans une étape ultérieure.
À partir de cette grammaire extraite, les chercheurs peuvent créer de nouvelles entrées de test qui analysent systématiquement le programme. L'efficacité de cette analyse est étudiée dans le cadre de leur projet « tribble ». « Tribble » utilise les grammaires fournies par Autogram, puis compile systématiquement toutes les variables d'entrée et les extraits de code valides.
Les chercheurs en sécurité informatique de l'équipe Zeller possèdent déjà une vaste expérience des tests basés sur la grammaire. En 2012, ils ont publié leur générateur de tests LANGFUZZ, qui analysait en profondeur le navigateur web Firefox à l'aide d'une grammaire alors conçue manuellement. LANGFUZZ est utilisé quotidiennement par les développeurs de Firefox depuis quatre ans et, grâce à lui, plus de 4 000 bogues et failles de sécurité ont été identifiés et corrigés à ce jour.
Les chercheurs de Sarrebruck étendent désormais son champ d'action de Firefox à pratiquement tous les programmes et formats de saisie. « L'objectif à long terme est de réaliser des tests de sécurité entièrement automatisés, applicables à tous les dispositifs, du plus petit objet connecté aux serveurs entiers », explique Zeller.

Plus d'informations