Goal-Lock Drift — что если агент тихо меняет цели? [6/14]
#promptinjection #goaldrift #memory
Prompt injection обычно срабатывает один раз. Goal-Lock Drift — другое. Calendar invite, cron job, recurring task — каждое событие чуть-чуть сдвигает цели агента. Незаметно по отдельности, критично в сумме.
Как работает
1. Атакующий внедряет prompt injection в периодическое событие (calendar invite, Slack reminder, scheduled task)
2. При каждой обработке payload попадает в контекст агента
3. Если у агента persistent memory, инъекция впитывается как "процедурное правило"
4. Со временем агент отклоняется от исходных целей: игнорирует constraints, расширяет scope
5. Drift кумулятивен — серия мелких сдвигов складывается в критическое отклонение
Два механизма persistence
Путать не надо — разные вещи:
➡️ Single-shot persistence: одна инъекция через calendar invite становится постоянным правилом в memory. Gemini Calendar Attack — про это
➡️ Cumulative drift: множество повторяющихся инъекций, каждая немного сдвигает цели. Настоящий goal drift
Оба опасны, но drift сложнее поймать — в каждый момент агент "почти" в норме.
Реальный кейс: Gemini Calendar Attack
Исследователи из Tel-Aviv University, Technion и SafeBreach (январь 2026): вредоносный промпт в Google Calendar invite. Gemini автоматически парсит события. Пользователь спрашивает про расписание — payload активируется.
Пять классов атак: Short-term Context Poisoning, Permanent Memory Poisoning, Tool Misuse, Automatic Agent Invocation, Automatic App Invocation.
Одноразовый invite стал persistent execution preference — агент выполняет инъекцию на каждой задаче.
Исследования
Arxiv 2505.02709 (май 2025): даже Claude 3.5 Sonnet показывает goal drift после 100K+ токенов. Лучший результат среди моделей, но drift есть у всех.
AgentPoison: фреймворк для отравления memory/knowledge base — скрытые цели всплывают через сессии.
Защита
➡️ Goal alignment monitoring — сравнение действий с исходными целями (тренд, не снэпшот)
➡️ Memory auditing — аудит persistent memory на аномальные паттерны
➡️ Контекстная изоляция — не переносить контекст из внешних событий в долгосрочную память
➡️ Input rotation — ограничить влияние одного источника на поведение
Моё мнение
Агент работает нормально день, неделю, месяц. Потом не явно меняется поведение. Разовая проверка не поймает — нужен тренд. Один из недооценённых векторов. Одноразовые атаки хотя бы видны в логах. Drift размазан по времени и выглядит как нормальная эволюция поведения. Особенно это не заметно с условно "эволюционирующими" агентами типа OpenClaw.
🔗Источники:
▪️ Gemini Calendar Exploit — Dark Reading
▪️ Goal Drift — arxiv
▪️ Lakera — Memory Poisoning & Goal Hijacks
▪️ OWASP ASI01
🌚 @poxek_ai
#promptinjection #goaldrift #memory
Prompt injection обычно срабатывает один раз. Goal-Lock Drift — другое. Calendar invite, cron job, recurring task — каждое событие чуть-чуть сдвигает цели агента. Незаметно по отдельности, критично в сумме.
Как работает
1. Атакующий внедряет prompt injection в периодическое событие (calendar invite, Slack reminder, scheduled task)
2. При каждой обработке payload попадает в контекст агента
3. Если у агента persistent memory, инъекция впитывается как "процедурное правило"
4. Со временем агент отклоняется от исходных целей: игнорирует constraints, расширяет scope
5. Drift кумулятивен — серия мелких сдвигов складывается в критическое отклонение
Два механизма persistence
Путать не надо — разные вещи:
➡️ Single-shot persistence: одна инъекция через calendar invite становится постоянным правилом в memory. Gemini Calendar Attack — про это
➡️ Cumulative drift: множество повторяющихся инъекций, каждая немного сдвигает цели. Настоящий goal drift
Оба опасны, но drift сложнее поймать — в каждый момент агент "почти" в норме.
Реальный кейс: Gemini Calendar Attack
Исследователи из Tel-Aviv University, Technion и SafeBreach (январь 2026): вредоносный промпт в Google Calendar invite. Gemini автоматически парсит события. Пользователь спрашивает про расписание — payload активируется.
Пять классов атак: Short-term Context Poisoning, Permanent Memory Poisoning, Tool Misuse, Automatic Agent Invocation, Automatic App Invocation.
Одноразовый invite стал persistent execution preference — агент выполняет инъекцию на каждой задаче.
Исследования
Arxiv 2505.02709 (май 2025): даже Claude 3.5 Sonnet показывает goal drift после 100K+ токенов. Лучший результат среди моделей, но drift есть у всех.
AgentPoison: фреймворк для отравления memory/knowledge base — скрытые цели всплывают через сессии.
Защита
➡️ Goal alignment monitoring — сравнение действий с исходными целями (тренд, не снэпшот)
➡️ Memory auditing — аудит persistent memory на аномальные паттерны
➡️ Контекстная изоляция — не переносить контекст из внешних событий в долгосрочную память
➡️ Input rotation — ограничить влияние одного источника на поведение
Моё мнение
Агент работает нормально день, неделю, месяц. Потом не явно меняется поведение. Разовая проверка не поймает — нужен тренд. Один из недооценённых векторов. Одноразовые атаки хотя бы видны в логах. Drift размазан по времени и выглядит как нормальная эволюция поведения. Особенно это не заметно с условно "эволюционирующими" агентами типа OpenClaw.
🔗Источники:
▪️ Gemini Calendar Exploit — Dark Reading
▪️ Goal Drift — arxiv
▪️ Lakera — Memory Poisoning & Goal Hijacks
▪️ OWASP ASI01
🌚 @poxek_ai