
Strumento automatizzato di analisi delle vulnerabilità binarie che decompila eseguibili tramite Ghidra, esegue la scansione del pseudo-codice C con Semgrep e convalida i risultati utilizzando GPT-3.5-Turbo per ridurre i falsi positivi.
Uno strumento intelligente per l'analisi automatizzata delle vulnerabilità binarie
Dimostrazione:

Callisto è uno strumento intelligente per l'analisi automatizzata delle vulnerabilità binarie. Il suo scopo è decomprimere autonomamente un binario fornito e iterare attraverso il codice pseudocodice generato, alla ricerca di potenziali vulnerabilità di sicurezza in quel pseudo C. Ghidra con il suo decompilatore headless gestisce la parte di decompilazione e analisi del binario. L'analisi del pseudocodice viene inizialmente eseguita da Semgrep (strumento SAST) e poi trasferita a GPT-3.5-Turbo per la validazione dei risultati di Semgrep e per l'identificazione di eventuali vulnerabilità aggiuntive.
Lo scopo previsto di questo strumento è assistere nell'analisi binaria e nella scoperta di vulnerabilità zero-day. L'output mira ad aiutare il ricercatore a identificare potenziali aree di interesse o componenti vulnerabili nel binario, che possono essere seguiti con test dinamici per validazione e sfruttamento. Certamente non catturerà tutto, ma la doppia validazione con Semgrep e GPT-3.5 mira a ridurre i falsi positivi e consentire un'analisi più approfondita del programma.
Per chi desidera utilizzare semplicemente lo strumento come un rapido decompilatore headless, il file output.c creato conterrà tutto il pseudocodice estratto dal binario. Questo può essere inserito nei propri strumenti SAST o analizzato manualmente.
Devo un enorme ringraziamento a Marco Ivaldi @0xdea per le sue regole Semgrep C personalizzate rilasciate pubblicamente e per la sua idea di automatizzare la scoperta di vulnerabilità utilizzando semgrep e l'output di pseudocodice dai decompilatori. Puoi leggere di più sulla sua ricerca qui: Automating binary vulnerability discovery with Ghidra and Semgrep
Requisiti:
pip install semgreppip install -r requirements.txtconfig.txtPer eseguire:
python callisto.py -b <path_to_binary> -ai -o <path_to_output_file>
-ai => abilita l'analisi OpenAI GPT-3.5-Turbo. Richiede di inserire una chiave API OpenAI valida nel file config.txt-o => definisce un file di output, se si desidera salvare l'output-ai e -o sono opzionali-all esegue tutte le funzioni tramite l'analisi OpenAI, indipendentemente dai risultati di Semgrep. Questo flag richiede il flag -ai come prerequisitopython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtEsempio di output del programma:
