
Автоматизированный инструмент анализа уязвимостей бинарных файлов, который декомпилирует исполняемые файлы с помощью Ghidra, сканирует псевдо-C код с помощью Semgrep и проверяет находки с использованием GPT-3.5-Turbo для уменьшения ложных срабатываний.
Интеллектуальный автоматизированный инструмент анализа уязвимостей в бинарных файлах
Демонстрация:

Callisto — это интеллектуальный автоматизированный инструмент анализа уязвимостей в бинарных файлах. Его цель — автономно декомпилировать предоставленный бинарный файл и проанализировать полученный псевдокод на предмет потенциальных уязвимостей безопасности в этом псевдо-коде C. Безголовый декомпилятор Ghidra выполняет декомпиляцию и анализ бинарного файла. Анализ псевдокода изначально выполняется инструментом SAST Semgrep, а затем передаётся GPT-3.5-Turbo для верификации находок Semgrep, а также для возможного выявления дополнительных уязвимостей.
Предполагаемое назначение этого инструмента — помощь в анализе бинарных файлов и поиске уязвимостей нулевого дня. Результаты работы призваны помочь исследователю выявить потенциальные области интереса или уязвимые компоненты в бинарном файле, которые затем можно проверить динамическим тестированием для верификации и эксплуатации. Инструмент, конечно, не поймает всё, но двойная верификация с помощью Semgrep и GPT-3.5 направлена на уменьшение количества ложных срабатываний и позволяет провести более глубокий анализ программы.
Для тех, кто хочет использовать инструмент только как быстрый безголовый декомпилятор, создаваемый файл output.c будет содержать весь извлечённый псевдокод из бинарного файла. Его можно подключить к собственным инструментам SAST или проанализировать вручную.
Я очень благодарен Marco Ivaldi @0xdea за его опубликованные пользовательские правила Semgrep для C, а также за его идею автоматизировать обнаружение уязвимостей с помощью Semgrep и псевдокода из декомпиляторов. Подробнее о его исследовании можно прочитать здесь: Automating binary vulnerability discovery with Ghidra and Semgrep
Требования:
pip install semgreppip install -r requirements.txtconfig.txtЗапуск:
python callisto.py -b <путь_к_бинарному_файлу> -ai -o <путь_к_выходному_файлу>
-ai => включить анализ OpenAI GPT-3.5-Turbo. Требуется размещение действительного ключа API OpenAI в файле config.txt-o => задать выходной файл, если требуется сохранить результат-ai и -o — необязательные параметры-all — запустить все функции через анализ OpenAI, независимо от наличия находок Semgrep. Этот флаг требует предварительного флага -aipython callisto.py -b vulnProgram.exe -ai -o results.txtpython callisto.py -b vulnProgram.exe -ai -all -o results.txtПример вывода программы:
