Pouvons-nous générer des shellcodes à partir de langage naturel ? Une étude empirique

La rédaction d'exploits logiciels constitue une pratique essentielle pour les analystes en sécurité offensive, afin d'explorer et de prévenir les attaques. En particulier, la création de shellcodes représente un défi technique majeur et une tâche particulièrement chronophage, car elle s'effectue en langage assembleur. Dans ce travail, nous abordons la tâche de génération automatique de shellcodes à partir de descriptions uniquement en langage naturel, en proposant une approche fondée sur la traduction automatique par réseaux neuronaux (NMT, Neural Machine Translation). Nous présentons ensuite une étude empirique réalisée à l'aide d'un nouveau jeu de données (Shellcode_IA32), comprenant 3 200 extraits de code assembleur provenant de shellcodes Linux/x86 réels extraits de bases de données publiques, et annotés en langage naturel. En outre, nous proposons de nouvelles métriques pour évaluer la précision de la NMT dans la génération de shellcodes. L'analyse empirique démontre que la NMT est capable de générer des extraits de code assembleur à partir de descriptions en langage naturel avec une haute précision, et qu'elle parvient, dans de nombreux cas, à produire des shellcodes complets sans erreur.