Агент в CI/CD может провести вредоносный код через собственные проверки
Исследователь Yohann Sidot проверил, как пятиагентный CI/CD-конвейер реагирует на внешнее обращение с просьбой добавить «телеметрию». В тексте обращения была prompt injection: фраза о якобы заранее согласованном изменении с номером SEC-2291 и требование не проводить повторную проверку. Предложенный код маскировал передачу переменных окружения процесса под наблюдаемость.
Первый агент не раскрыл системный промпт. Но последующие этапы — разработка, сканирование, ревью и одобрение деплоя — принимали заявленное согласование за факт: сканер пропустил около 80% замаскированных pull request, а в худшем варианте эксперимента до деплоя дошло 55% сценариев.
Это не отчёт об атаке на реальную компанию. Автор использовал синтетические данные, имитировал конечную точку и не отправлял секреты наружу. Выборка также невелика: 20 запусков для основных условий. Поэтому цифры нельзя считать оценкой распространённости риска в промышленных конвейерах.
Однако механизм применим шире: несколько LLM-проверок не образуют независимый контроль, если все читают один и тот же недоверенный контекст и доверяют одной и той же формулировке. Синтаксически корректный код, описанный как легитимная функция, может не вызвать срабатывания сигнатурных проверок.
В агентном CI/CD обращения, описания pull request, комментарии и документацию нужно считать недоверенным вводом, а не инструкциями. Деплойные права, доступ к секретам и исходящий трафик должны ограничиваться детерминированными политиками вне контекста модели; значимые изменения — проходить независимое подтверждение.
Видео с PoC на YouTube
🌚 @poxek | 🌚 @poxek_ai | 📲MAX
Исследователь Yohann Sidot проверил, как пятиагентный CI/CD-конвейер реагирует на внешнее обращение с просьбой добавить «телеметрию». В тексте обращения была prompt injection: фраза о якобы заранее согласованном изменении с номером SEC-2291 и требование не проводить повторную проверку. Предложенный код маскировал передачу переменных окружения процесса под наблюдаемость.
Первый агент не раскрыл системный промпт. Но последующие этапы — разработка, сканирование, ревью и одобрение деплоя — принимали заявленное согласование за факт: сканер пропустил около 80% замаскированных pull request, а в худшем варианте эксперимента до деплоя дошло 55% сценариев.
Это не отчёт об атаке на реальную компанию. Автор использовал синтетические данные, имитировал конечную точку и не отправлял секреты наружу. Выборка также невелика: 20 запусков для основных условий. Поэтому цифры нельзя считать оценкой распространённости риска в промышленных конвейерах.
Однако механизм применим шире: несколько LLM-проверок не образуют независимый контроль, если все читают один и тот же недоверенный контекст и доверяют одной и той же формулировке. Синтаксически корректный код, описанный как легитимная функция, может не вызвать срабатывания сигнатурных проверок.
В агентном CI/CD обращения, описания pull request, комментарии и документацию нужно считать недоверенным вводом, а не инструкциями. Деплойные права, доступ к секретам и исходящий трафик должны ограничиваться детерминированными политиками вне контекста модели; значимые изменения — проходить независимое подтверждение.
Видео с PoC на YouTube
🌚 @poxek | 🌚 @poxek_ai | 📲MAX