https://thenewstack.io/mcp-vulnerability-exposes-the-ai-untrusted-code-crisis/

Непонятно почему это рассматривается как новая проблема. И до появления LLM код получал одобрение не потому, что его написал человек, а после прохождения тестов, сканеров, ревью, ручных проверок QA и всего остального, что удалось «впихнуть» в CI и SDLC. Были исключения для отдельных людей и отдельных проектов, но это были именно исключения.

И то, что действительно изменилось сейчас — это существенно увеличившийся объём кода на одного программиста и визуальная адекватность кода, которая притупляет бдительность. И эти факторы будут только расти: создавать код будет всё проще.

И это то, почему QA как часть процесса разработки становится всё более важным.

Направлений решения проблемы я вижу несколько, но ни одно из них не является простым и универсальным:

  • Выстраивание чётких процессов одобрения кода: даже если код на первый взгляд выглядит адекватно, он всё равно может содержать любые ошибки
  • Улучшение документации: чем больше контекста будет у LLM, тем меньше вероятность ошибок
  • Обучение Context Engineering всех разработчиков: чем лучше разработчики будут понимать, как строить контекст для LLM, тем меньше вероятность ошибок
  • Объяснение им всех рисков и их ответственности: разработчики должны понимать, что они несут ответственность за код, который они коммитят, вне зависимости от того, кто его написал
  • Автоматизация проверок кода старыми методами: тесты всех уровней, линтеры, статические анализаторы, dead-code-сканеры (это прямо беда LLM), поиск заглушек
  • Включение QA на ранних этапах SDLC: это даст улучшение спецификаций, возможность построить QA-тесты, доступные разработчикам и так далее
  • Использование LLM для проверки кода
  • Внедрение Canary Deployment и/или Ring-based Deployment чтобы сократить ожидаемые потери от ошибок
  • Внедрение Feature Flag для отключения новых фич для критичных проектов
  • Улучшение Observability, мониторинга и алертинга