Технологии AutoFix: исправление 2/3 багов с первой попытки
Вендоры крупных платформ разработки и стартапы с разной степенью успеха создают технологию AutoFix. В ее основе находятся LLM, которые анализируют уязвимость и ее контекст, а затем предлагают вариант ее исправления. Насколько хорошо у них это получается можно судить по текущим результатам:
- наиболее “зрелые” модели LLM способны исправить примерно 2/3 всех обнаруженных уязвимостей с первой попытки, но использование пользовательских подсказок позволяет улучшить этот результат;
- коммерческие и открытые модели имеют схожие показатели производительности при разной стоимости эксплуатации.
То есть, использовать Autofix можно, но внедрять исправленный код в прод без дополнительной верификации нужно аккуратнее. Например, исправление проблемы, связанной со слабым шифрованием или использованием небезопасных протоколов, может привести к сбоям в работе приложения.
Есть и другие ограничения:
- сложности с зависимостями и импортами: модели часто не могут правильно обработать сложные зависимости и импорты в кодовой базе. Например, когда LLM предлагает переписать код для использования методов безопасной сериализации, но не предлагает импортировать библиотеку для этой задачи.
- LLM могут предлагать новые зависимости для проекта, которые могут принести новые уязвимости в этот проект;
- недостаточный контекст: модели часто предлагают исправления, которые не соответствуют шаблонам проектирования или общей архитектуре проекта.
С учётом этих ограничений, разработчики технологий AutoFix используют пользовательские подсказки вместе с большим контекстом о коде. Пользователь может указать предпочтительные библиотеки (например, для логирования, алгоритмов шифрования и генерации случайных чисел).
Помимо инструкций от пользователя, увеличить точность ответов помогает механизм повторных поптыток. LLM генерирует несколько исправлений для одной и той же уязвимости и таким образом увеличивает шансы на получение правильного варианта.