Реверс-инжиниринг Go-бинарника через Ghidra MCP в Cursor, одна уязвимость пропущена
Хули подключил GhidraMCP к Cursor, и агент определил бинарник на Go, восстановил маршруты и нашёл обход пути. SQL-инъекцию модель composer 1.5 пропустила, а Opus 4.6 на том же промпте нашла обе уязвимости.
Что сделали
Хули собрал на Go сервер на gin без отладочных символов и специально оставил в нём SQL-инъекцию и обход пути. Он загрузил его в Ghidra с расширением GolangAnalyzerExtension и подключил GhidraMCP к Cursor, чтобы агент сам вызывал декомпилятор Ghidra. Сначала агента попросили только определить бинарник и его функции, и он сам обращался к MCP. Потом его попросили восстановить исходный код на Go и проверить уязвимости.
Что получилось
С моделью composer 1.5 Cursor правильно восстановил маршруты, библиотеки и структуру файлов (с мелкими ошибками в названиях маршрутов) и нашёл обход пути. А код с SQL-инъекцией он восстановил как уже исправленный и уязвимость пропустил. Opus 4.6 на том же промпте поймала обе уязвимости, но тоже перепутала названия некоторых маршрутов.
На что обратить внимание
Результат сильно зависит от модели. Более слабая composer 1.5 пропустила SQL-инъекцию, которую более сильная Opus 4.6 нашла с тем же промптом.
Пояснение
Ghidra это бесплатный инструмент АНБ для реверс-инжиниринга, он разбирает скомпилированные программы обратно в читаемый код. Обход пути (path traversal) это уязвимость, через которую можно прочитать файлы за пределами разрешённой папки. Бинарник без отладочных символов (stripped) не хранит имён функций, поэтому разбирать его сложнее.
Кому пригодится
Специалистам по безопасности и участникам CTF, которые хотят попробовать ИИ-агента в разборе бинарников.
Попробуйте сами с Cursor
Подключись к Ghidra через MCP и разбери этот бинарник на Go [путь или название], определи его маршруты и эндпоинты, затем поищи уязвимости вроде path traversal или SQL-инъекции. Дай отчёт о найденном и отметь всё, в чём не уверен, чтобы я перепроверил вручную.
Нужна помощь с запуском? Вступайте в сообщество AI Pack ↗
Источник: blog.huli.tw ·