Деградация безопасности в цикле обратной связи.

Взяли 10 образцов хорошего кода без уязимостей. Применяли 4 стратегии улучшения (добавь фичи / оптимизируй / улучши безопасность / “размытые” просьбы сделать код лучше) 10 раз. Получили 400 образцов кода от ИИ и их исследовали руками и автоматическими сканерами.

Результат

Чем дальше в лес, тем толще партизаны. Уязвимости появлялись и на ранних итерациях, но чем дальше заходил проект, тем хуже все становилось, чем больше уязвимостей создавала LLM. Наибольшее количество уязвимостей (158) появлялось при стратегии добавления функционала. Наименьшее (38) - при стратегии улучшения безопасности (то есть, вы просите исправить уязвимость, а LLM создает новые).

Важная особенность

Количество уязвимостей росло нелинейно. На поздних итерациях было больше, чем на ранних.

Рекомендации

Human in the loop, пересматривать код, не делать более 3 итераций без человеческого контроля.

Ограничения

Тестировалась только GPT-4o, и только языки C и Java. Человек ничего не исправлял по ходу итераций.

Оригинал статьи (paywall): https://ieeexplore.ieee.org/document/11269659

Открытая статья: https://arxiv.org/html/2506.11022v2

Мой комментарий

Статья подтвердила интуитивные догадки, которые были, наверное, у каждого программиста. Многие замечали, как нейронка “тупеет” по мере работы над проектом. Дает очень хороший результат вначале, но дальше все начинает идти туго.

Я бы еще добавил такой минус(!), что LLM сложно быть небрежной, пофигистичной. И это минус, да. Человек пишет уязвимости по этой причине. И поэтому же он может напрячься, собраться и не писать их, исправить. Нейронка - не может. Она уже исходно была максимально собрана. Прогон “исправь уязвимости” не имеет никаких бонусов перед прогоном “добавь фичу”.

Можно сказать, что модель плохая, а задачи сложные. Это имеет смысл. Но важно понять, почему плохая модель так ошибалась. И возникает вопрос - а новая хорошая модель - прямо вот принципиально иная, или она в принципе такая же, просто фатально ошибается не на третьей итерации а на пятой или двенадцатоой?

comments powered by Disqus