Metis для поиска уязвимостей в коде показывает контекст, граф зависимостей и объяснение находки для разработчика
Без рубрики

Metis: контекстный поиск уязвимостей в коде

Представьте две ситуации. В первой традиционный SAST-инструмент проверяет функцию и сообщает: «Потенциальная утечка памяти». Разработчик открывает код, видит, что память освобождается двумя строками ниже в другом файле, и отклоняет алерт как ложный. Во второй система анализирует ту же функцию, но сначала восстанавливает её место в архитектуре проекта, читает документацию, проверяет, как этот код вызывается из других модулей, и выдаёт: «Здесь действительно утечка, потому что обработчик исключений в caller не гарантирует вызов cleanup, а вот этот путь выполнения его пропускает». Разница не в магии, а в том, что второй подход видит граф, а не строки.

Arm открыла Metis как раз в момент, когда эта проблема стала особенно заметной. Традиционный SAST работает на основе правил и сигнатур: он видит паттерны, но не контекст. Результат — либо пропущенные сложные уязвимости, которые требуют понимания взаимодействия компонентов, либо поток ложных срабатываний, из-за которых разработчики перестают доверять инструменту. Metis пытается решить эту проблему не через более сложные правила, а через другой принцип работы: контекстное рассуждение о коде с помощью LLM и RAG.