Jev присматривает за облачными агентами: как работает проверка поведения и что она даёт
Облачный агент работает на отдельной машине с правами администратора и выходом в интернет. Мы уже рассказывали, как это устроено: аппаратная изоляция, файрвол «только веб», сетевой журнал и журнал аудита. Но каждый из этих слоёв видит что-то одно — одно соединение, один отказ файрвола. Не хватало взгляда на картину целиком: не похоже ли всё, что агент делал последние минуты, на атаку.
Теперь этим занимается Jev — модель решений от TypeSafe. Каждые несколько минут она просматривает, что агент сделал в каждой сессии. Если это похоже на злоупотребление, в журнале аудита вашей организации появляется запись.
Зачем это, если пользователь честный
Чаще всего проблема не в злом умысле, а в том, что агент свернул не туда:
- Инструкция в чужом тексте. Модель читает веб-страницы, README и код зависимостей. Инструкцию, спрятанную в таком тексте, она может принять за часть задачи — это называют prompt injection.
- Неверно понятая задача. «Проверь, выдержит ли сайт нагрузку» — какой сайт и чей?
- Вредный скрипт в зависимости, который запускается при установке пакета.
А последствия общие. Быстрые сессии выходят в интернет с адресов Kodagent. Если с них пойдёт что-то похожее на атаку, адрес попадёт в чёрные списки, и сайты начнут отказывать всем нашим агентам — в том числе вашему.
Что проверяется
Проверка смотрит сразу на три вещи.
Действия агента:
- команды в терминале и запущенные программы;
- вызовы MCP-инструментов;
- запросы к сайтам и поиск в интернете;
- запуск субагентов;
- чтение файлов с ключами и паролями;
- содержимое скриптов, которые агент сам написал и потом запустил, — иначе за
python3 job.pyне видно, что именно запускается.
Обычное редактирование файлов в репозитории попадает в проверку одним числом: сколько было правок.
Сеть — на быстрых сессиях, из сетевого журнала, который записывается снаружи машины: сколько было соединений и с каким числом адресов, сколько данных ушло, какие попытки отклонил файрвол и куда агент обращался чаще всего. Обращения агента к самой платформе Kodagent не учитываются.
Ваша задача и ваши сообщения агенту. Злоупотребление — это то, о чём вы не просили, поэтому Jev видит исходную задачу и ваши последние указания. Мы берём их из того, что вы отправили через консоль или Telegram, а не из отчёта, который присылает машина агента. Подделать «вы мне это разрешили» агент не может.
Что считается злоупотреблением, а что — нет
Jev отвечает на вопрос: похоже ли, что агент атакует, прощупывает или использует чужие системы и учётные записи так, как вы не разрешали? И называет вид:
- сканирование хостов и портов;
- подбор паролей;
- эксплуатация уязвимостей, обход авторизации, капч и лимитов;
- отправка секретов или данных туда, где им не место;
- вредоносные программы и майнеры;
- флуд, спам и непрошеные рассылки.
Обычная работа злоупотреблением не считается, даже если агент активно ходит в сеть: сборка, тесты, установка зависимостей, клонирование и пуш, чтение документации, работа с API, которые нужны задаче. Не считается и написание инструмента для проверки безопасности или нагрузки, и даже его запуск против систем, о которых вы сказали, что они ваши.
Несколько отказов файрвола — например, git по SSH или порт базы данных — это его политика, а не атака: на быстрых сессиях открыты только порты 80 и 443. Признак атаки — размах: обращения ко множеству разных адресов или портов.
Что вы увидите
Если Jev достаточно уверена, в разделе «Журнал аудита» появится запись «Подозрительная активность агента». В ней — сессия, вид активности, оценка Jev от 0 до 1 и действия, которые к ней привели. О них мы спрашиваем Jev отдельно, так что в записи будет причина, а не первая попавшаяся команда. Если дело в сети — её итоги. Подробности — в транскрипте сессии и на вкладке «Сеть».
Одно и то же не повторяется каждые несколько минут. Новая запись появится, если поменялся вид активности, заметно выросла оценка или с прошлой записи прошло 15 минут. Такие флаги получаем и мы.
Агента проверка не останавливает и не замедляет: она идёт в фоне, по уже сделанному. Это сигнал, а не приговор, — автоматически по нему ничего не блокируется.
Что это даёт
- Вы узнаете, если агент свернул не туда, — с конкретными командами, а не из жалобы через неделю.
- Общий адрес остаётся чистым. Чем раньше замечена чья-то атака, тем меньше шансов, что сайты начнут отказывать и вашим сессиям.
- Ничего не пропускается. Каждое действие попадает к Jev, даже в очень загруженной сессии, а записи сетевого журнала, пришедшие с опозданием, проверяются в следующий раз.
- Секреты не попадают в журнал. Токены, пароли и ключи, которые мы узнаём в командах, адресах и аргументах, маскируются до проверки и до записи.
- Бесплатно и без настройки. Проверку оплачиваем мы, включать ничего не нужно.
- Прозрачно. Флаг появляется в вашем журнале аудита: вы видите то же, что и мы.
Ограничения
- Это вероятность, а не доказательство. Jev может ошибиться в обе стороны. Порог срабатывания мы подстраиваем по реальным сессиям.
- О своих действиях машина агента сообщает сама, а на ней агент — администратор. Сетевой журнал быстрых сессий пишется снаружи машины, и подделать его нельзя, поэтому действия мы смотрим вместе с сетью.
- У сессий на арендованных машинах сетевого журнала нет, и проверка видит только действия.
- Это не мгновенная блокировка. Проверка идёт через несколько минут после действий, а мгновенно действует файрвол.
- Проверку делает Jev — модель TypeSafe, доступная через OpenRouter. Сводка действий и сети отправляется ей с уже замаскированными секретами.
Если вы считаете, что флаг ошибочный, или хотите разобрать сессию, напишите в поддержку.
Удачной разработки!