
Outil automatisé d'analyse de vulnérabilités binaires qui décompile des exécutables via Ghidra, analyse du pseudo-code C avec Semgrep, et valide les résultats en utilisant GPT-3.5-Turbo pour réduire les faux positifs.
Un outil intelligent et automatisé d'analyse de vulnérabilités binaires
Démo :

Callisto est un outil intelligent et automatisé d'analyse de vulnérabilités binaires. Son but est de décompiler de manière autonome un binaire fourni et de parcourir le pseudo-code produit à la recherche de potentielles vulnérabilités de sécurité dans ce pseudo-code C. Le décompilateur headless de Ghidra est ce qui pilote la partie décompilation et analyse binaire. L'analyse du pseudo-code est d'abord effectuée par l'outil SAST Semgrep, puis transmise à GPT-3.5-Turbo pour valider les résultats de Semgrep, ainsi que pour identifier d'éventuelles vulnérabilités supplémentaires.
L'objectif de cet outil est d'assister l'analyse binaire et la découverte de vulnérabilités zero-day. Les résultats visent à aider le chercheur à identifier des zones d'intérêt potentielles ou des composants vulnérables dans le binaire, qui peuvent ensuite être soumis à des tests dynamiques pour validation et exploitation. Il ne détectera certainement pas tout, mais la double validation avec Semgrep puis GPT-3.5 vise à réduire les faux positifs et à permettre une analyse plus approfondie du programme.
Pour ceux qui souhaitent simplement utiliser l'outil comme un décompilateur headless rapide, le fichier output.c créé contiendra tout le pseudo-code extrait du binaire. Celui-ci peut être intégré à vos propres outils SAST ou analysé manuellement.
Je remercie chaleureusement Marco Ivaldi @0xdea pour ses règles Semgrep C personnalisées publiées publiquement ainsi que pour son idée d'automatiser la découverte de vulnérabilités en utilisant semgrep et le pseudo-code issu des décompilateurs. Vous pouvez en lire plus sur ses recherches ici : Automating binary vulnerability discovery with Ghidra and Semgrep
Prérequis :
pip install semgreppip install -r requirements.txtconfig.txtPour exécuter :
python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>
-ai => active l'analyse OpenAI GPT-3.5-Turbo. Nécessite de placer une clé API OpenAI valide dans le fichier config.txt-o => définit un fichier de sortie, si vous souhaitez sauvegarder les résultats-ai et -o sont des paramètres optionnels-all exécutera toutes les fonctions via l'analyse OpenAI, indépendamment des résultats de Semgrep. Ce flag nécessite le flag -ai préalablepython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtExemple de sortie du programme :
