Лидеры мнений

Код, написанный ИИ, изменил то, что SAST должен обнаруживать

mm
Добавьте Unite.AI в избранные источники в Google

Наблюдение за тем, как помощник по кодированию ИИ производит рабочую функцию за несколько секунд, может показаться прорывом. Код компилируется. Тесты проходят. Запрос на слияние выглядит чистым. Для команд разработки, которые находятся под давлением, чтобы выпускать быстрее, это кажется прогрессом.

Но функциональный код и безопасный код – это не одно и то же.

Код, сгенерированный ИИ, изменил форму программных рисков. Проблема не в том, что большие языковые модели пишут “плохой” код. Во многих случаях они пишут код, который выглядит отполированным, следует знакомому шаблону фреймворка и решает запрошенную задачу. Проблема более тонкая: код может быть функционально правильным, но при этом быть небезопасным, устаревшим, чрезмерно разрешающим или контекстно неправильным.

Это различие имеет значение, потому что статическое тестирование безопасности приложений, или SAST, было построено для мира, где разработчики писали код с человеческой скоростью, а команды безопасности проверяли предсказуемые закономерности рисков. ИИ изменил обе стороны этого уравнения. Объем кода увеличивается, коммиты становятся меньше, и небезопасные закономерности теперь могут быть сгенерированы в масштабе.

Результатом является новый вопрос для команд программного обеспечения: что должно обнаруживать SAST, когда автор кода не обязательно является человеком?

Работающий код больше не является сильным сигналом

В течение многих лет команды программного обеспечения использовали приблизительную иерархию доверия. Если код компилировался, проходил тесты и выживал после проверки коллег, он приближался к производству. Сканирование безопасности добавляло еще один слой, но функциональность оставалась первым барьером.

Помощники по кодированию ИИ нарушают эту иерархию, потому что они особенно хороши в производстве кода, который кажется завершенным. Они могут подразумевать боилерплейт, подключать API, генерировать обработку ошибок и соответствовать стилю существующего репозитория. Это делает их полезными, но также делает их ошибки более трудными для обнаружения.

Человеческий проверяющий может просмотреть функцию, написанную ИИ, и подумать: “Это выглядит нормально”. Это именно риск. Многие уязвимости, сгенерированные ИИ, не являются экзотическими. Они являются знакомыми проблемами, такими как уязвимости инъекций, слабая валидация, небезопасные значения по умолчанию, небезопасная десериализация, проблемы с журналированием и устаревшие выборы зависимостей.

Недавние исследования сделали это напряжение более трудным для игнорирования. Например, весенний обзор безопасности кода GenAI 2026 года от Veracode показал, что модели кодирования ИИ стали намного сильнее в производстве синтаксически правильного кода, чем безопасного кода. Другими словами, ИИ становится очень хорошим в написании программного обеспечения, которое работает, но это не означает, что он становится одинаково хорошим в написании программного обеспечения, которое можно доверять.

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

Старая модель SAST была построена для человеческих узких мест

Традиционное SAST всегда имело трудную задачу. Оно сканирует исходный код, сопоставляет закономерности с известными слабостями и предупреждает команды до того, как уязвимый код будет отправлен. В конвенциональном цикле разработки это уже создает трение: слишком много предупреждений, слишком много ложных положительных результатов и не достаточно времени, чтобы исправить все.

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

Когда помощник ИИ может сгенерировать службу, файл теста, интеграцию API и фрагмент конфигурации в одной сессии, проверка безопасности не может полагаться на те же предположения. Риск не в одной безалаберной строке кода. Это умножение правдоподобного кода на десятки файлов, каждый из которых имеет небольшие решения, которые модель приняла от имени команды.

Именно здесь современные инструменты SAST нуждаются в эволюции. Они не могут просто сканировать известные сигнатуры уязвимостей после того, как запрос на слияние почти завершен. Они должны работать ближе к рабочему процессу разработчика, понимать закономерности изменений, сгенерированных ИИ, и помогать командам разделить безвредную автоматизацию и рискованную автоматизацию.

ИИ вводит долг безопасности с машинной скоростью

Технический долг не является новым. Долг безопасности – это более опасный родственник: он накапливается, когда уязвимости, слабые предположения и рискованные обходы остаются в кодовой базе, потому что они не достаточно срочны, чтобы исправить сегодня.

ИИ может ускорить этот процесс.

Разработчик может попросить помощника “добавить аутентификацию”, “очистить этот ввод” или “подключить этот конечный пункт к базе данных”. Модель обычно производит ответ. Но если подсказка не включает правильные ограничения безопасности, ответ может полагаться на устаревшие практики, неполную валидацию или небезопасные значения по умолчанию. Хуже, он может быть достаточно хорошим, чтобы пройти непринужденную проверку.

Существует несколько закономерностей, специфичных для ИИ, которые SAST теперь должен распознавать:

  • Безопасный боилерплейт: ИИ часто производит код, который напоминает лучшую практику, но пропускает один важный контроль, такой как проверки авторизации или кодирование вывода.
  • Устаревшие предположения о зависимостях: Модель может предложить библиотеки, версии или API, основанные на закономерностях, которые были распространены в ее обучающих данных, но больше не рекомендуются.
  • Контекстно-свободные исправления: ИИ может исправить местный симптом, не понимая более широкого потока приложения, создавая пробелы в безопасности в других местах.
  • Повторяющиеся уязвимые шаблоны: Если один и тот же запрос производит один и тот же ошибочный шаблон в нескольких репозиториях, одна слабость может тихо распространиться по всей организации.

Это не только о том, чтобы найти плохой код. Это о том, чтобы обнаружить, когда код был произведен без достаточного контекста.

SAST должен понимать намерение, а не только синтаксис

Следующее поколение SAST должно выйти за пределы простого сопоставления закономерностей. Известные закономерности уязвимостей все еще имеют значение, и многие базовые ошибки должны быть пойманы автоматически. Но код, написанный ИИ, повышает планку, потому что синтаксис редко рассказывает всю историю.

Рассмотрим конечную точку, которая извлекает записи клиентов. Код может использовать параметризованные запросы, обрабатывать ошибки правильно и проходить стандартные проверки инъекций. Но он обеспечивает ли изоляцию аренды? Он проверяет ли, что текущий пользователь имеет право доступа к запрошенной записи? Он журналирует ли чувствительные данные?

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

Это не всегда проблемы синтаксиса. Это проблемы намерения.

SAST нуждается в большем понимании бизнес-логики, потока данных, конвенций фреймворка и отношений между изменением и остальной частью приложения. Цель не в том, чтобы сделать SAST “оснащенным ИИ” для маркетинговых целей. Цель – сделать его контекстно-осведомленным enough, чтобы поймать виды ошибок, которые ИИ, скорее всего, совершит.

Разработчикам все еще нужно учиться безопасности, но по-другому

Лучшие инструменты помогут, но они не удалят человеческую ответственность. Помощники по кодированию ИИ делают разработчиков более продуктивными, но они также делают это легче для команд принять код, который они не полностью понимают.

Это создает проблему обучения. Традиционное ежегодное обучение безопасности слишком медленное и слишком оторвано от повседневной работы. Разработчикам нужны короткие, практические уроки, доставляемые рядом с моментом, когда они принимают решения. Именно здесь микрообучение становится актуальным: небольшие, сосредоточенные моменты обучения могут укрепить безопасные привычки кодирования без удаления инженеров из их рабочего процесса на часы.

Лучшее образование по безопасности в эпоху кодирования ИИ будет выглядеть меньше, как класс, и больше, как хорошо сформулированное объяснение внутри запроса на слияние, предупреждение IDE, которое учит, а не раздражает, или краткая заметка об исправлении, объясняющая, почему шаблон, сгенерированный ИИ, рискован.

Процесс проверки должен измениться

Проверка кода использовалась для ответа на знакомые вопросы: читаем ли код, решает ли он проблему, ломает ли он что-то?

Код, написанный ИИ, добавляет новые вопросы. Была ли подсказка осведомлена о безопасности? Ввел ли модель зависимость? Скопировала ли она шаблон из другого места в репозитории без понимания, почему этот шаблон существовал? Проверил ли разработчик логику или только вывод?

Это не означает, что каждый коммит, сгенерированный ИИ, нуждается в форензической экспертизе. Но командам нужно легкий способ выявить изменения, сгенерированные ИИ, с высоким риском. Аутентификация, авторизация, криптография, потоки платежей, загрузка файлов, доступ к базе данных, журналирование и конфигурация инфраструктуры заслуживают более пристального внимания, чем копия UI или тестовая конструкция.

Основная мысль

ИИ не делает SAST нерелевантным. Он делает SAST более важным.

По мере того, как генерация кода становится быстрее и более глубоко встроенной в среды разработки, старое предположение, что не安全ный код входит медленно через человеческие руки, больше не действует. ИИ может генерировать полезное программное обеспечение, но он также может масштабировать слабые закономерности, устаревшие предположения и контекстно-свободные исправления быстрее, чем традиционные процессы проверки могут поглотить.

Победители не будут командами, которые запрещают инструменты кодирования ИИ. Победителями будут команды, которые перерабатывают свои рабочие процессы безопасности вокруг новой реальности: код может быть сгенерирован мгновенно, но доверие все еще должно быть заслужено.

SAST теперь должен поймать больше, чем ошибки уровня синтаксиса. Он должен поймать пропущенное намерение, небезопасный контекст, повторяющиеся шаблоны ИИ и долг безопасности, прежде чем он накопится.

Дэвид Балабан - исследователь компьютерной безопасности с более чем 17-летним опытом в области анализа вредоносного ПО и оценки антивирусного программного обеспечения. Дэвид управляет проектами MacSecurity.net и Privacy-PC.com, которые представляют собой экспертные мнения по современным вопросам информационной безопасности, включая социальную инженерию, вредоносное ПО, тестирование на проникновение, интеллект угроз, онлайн-приватность и белую хакерскую атаку. Дэвид имеет сильный опыт в решении проблем с вредоносным ПО, с недавним акцентом на противодействии программам-вымогателям.