Старые CVE в AI-коде: как не вернуть исправленную уязвимость при автоматической правке

Дата
zombie cve ai code review hero

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

Главный риск — принять исправление по функциональному результату и не проверить, не вернулся ли старый небезопасный шаблон. Особенно опасны участки с обработкой входных данных, файлов, прав доступа, шаблонов и сетевых запросов.

Как это работает в атаке

В защитном разборе цепочка выглядит так: разработчик просит AI исправить ошибку, модель выбирает привычный шаблон, код начинает работать, но защитная проверка не покрывает старый CVE-паттерн. В итоге уязвимость возвращается как побочный эффект ускоренной разработки.

  • AI предлагает правку без знания всей истории уязвимости;
  • разработчик проверяет только успешный путь;
  • старый опасный шаблон снова появляется в коде;
  • автоматические тесты не проверяют отрицательный сценарий;
  • изменение попадает в ветку без AppSec-проверки;
  • эксплуатационный риск возвращается в новый выпуск.

Какие следы искать

  • повторное появление функции или шаблона из старого исправления;
  • изменения в обработке недоверенного ввода;
  • снижение покрытия негативных тестов;
  • обход проверки валидации или кодирования вывода;
  • изменение прав доступа без отдельной проверки;
  • правка, где AI заменил безопасную обвязку коротким вариантом.

Защитные настройки

  • хранить набор регрессионных тестов по закрытым CVE;
  • запускать SAST и SCA на каждую AI-правку;
  • сравнивать изменение с историей исправлений;
  • требовать отдельную AppSec-проверку для опасных участков;
  • запрещать автослияние без негативных тестов;
  • помечать AI-сгенерированный код для расширенного просмотра.

Практический кейс

Кейс: команда получила правку, которая ускоряет обработку файла. Проверка функции успешна, но AppSec-тест показывает, что фильтр пути снова принимает недоверенный ввод. Команда добавляет регрессионный тест, правило SAST и требование ручного просмотра для похожих изменений.

Старые CVE в AI-коде: как не вернуть исправленную уязвимость при автоматической правке — визуальный пример

Технический чек-лист

  • найти старые CVE и связанные тесты;
  • создать набор опасных входных данных;
  • запускать тесты на каждую AI-правку;
  • проверять изменения в правах, файлах и шаблонах;
  • смотреть не только итог, но и путь обработки данных;
  • фиксировать причину отклонения опасной правки.

Настройка контроля

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

  • описать владельца сценария и ответственного за риск;
  • зафиксировать разрешённые источники данных;
  • запретить чтение лишних секретов и журналов;
  • включить отдельный журнал запросов и решений;
  • проверить отрицательные примеры до расширения сценария;
  • назначить порядок остановки при ошибке.

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

Поля журналирования

  • время события и источник сигнала;
  • учётная запись или сервисная роль;
  • цель действия и тип данных;
  • связанные сетевые адреса и домены;
  • результат проверки и причина блокировки;
  • решение аналитика или владельца системы.

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

Проверка перед запуском

  • запустить сценарий на тестовых данных;
  • проверить ложные срабатывания;
  • убедиться, что чувствительные данные маскируются;
  • проверить запрет опасных действий;
  • сравнить вывод AI с ручной проверкой;
  • сохранить набор контрольных примеров для повторной проверки.

После пилота сценарий можно расширять только при наличии владельца, журнала, правил остановки и понятных критериев качества. Иначе AI станет не средством защиты, а новым источником неопределённости.

AI-код нужно проверять не только на работоспособность. Без регрессионных тестов и AppSec-контроля автоматическая правка может вернуть проблему, которую команда уже считала закрытой.

Настройка правил обнаружения

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

  • одно событие не считается инцидентом без связанного действия;
  • приоритет повышается при повторе за короткое время;
  • события связываются по учётной записи, адресу, сервису и времени;
  • новый источник данных сначала работает в режиме наблюдения;
  • каждая блокировка должна иметь объяснимую причину;
  • ложные срабатывания разбираются не реже одного раза в неделю.

Пример настройки в SIEM

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

  • поле источник: система, откуда пришёл сигнал;
  • поле действие: чтение, изменение, вход, загрузка или запрос;
  • поле объект: данные, сервис, файл, модель или роль;
  • поле уровень доверия: внутренний, внешний, новый, неизвестный;
  • поле решение: разрешено, заблокировано, отправлено на проверку;
  • поле основание: какие признаки привели к решению.

Проверка качества AI-помощника

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

  • ответ должен ссылаться на конкретные журналы;
  • гипотеза должна отделяться от подтверждённого факта;
  • указание на риск должно содержать причину;
  • при нехватке данных AI должен запрашивать проверку, а не придумывать вывод;
  • каждая рекомендация проверяется правилом или человеком;
  • опасное действие не выполняется автоматически.

Разбор после инцидента

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

  • какой первый сигнал оказался полезным;
  • какой источник данных отсутствовал;
  • какой вывод AI был неверным или неполным;
  • какой контроль остановил бы цепочку раньше;
  • какое поле журнала нужно добавить;
  • какой тест включить в регулярную проверку.

Ещё по теме