code_execution_env.py must stop execution even if the visible Playbook has been restored. This targets the persistence mechanism and the logging blind spot at the same time.Rogue Agent: One Dialogflow CX Permission Crossed a Shared Project Runtime
Varonis showed that update rights on one Dialogflow CX agent could be converted into persistent control of a Google-managed Cloud Run execution environment shared by other agents in the project. A Playbook Code Block overwrote code_execution_env.py, after which the modified runtime could intercept conversations, alter live replies, exfiltrate data, and query instance metadata. Google fully remediated the affected components in June 2026.
Threat Analysis
- The starting privilege was narrow but legitimate. The attacker needed
dialogflow.playbooks.updateon one Dialogflow CX agent, enough to edit that agent's Playbook. - A Code Block crossed from agent configuration into managed runtime code. The malicious Playbook downloaded a modified
code_execution_env.pyand overwrote the file in the Google-managed Cloud Run environment used to execute Playbook Code Blocks. - The runtime was shared across project agents. The modified file did not remain confined to the agent whose Playbook was changed. Later Code Block executions by other agents loaded the same compromised environment.
- The attacker could hide the visible change. After the overwrite, the Playbook could be restored while the modified runtime file remained active. Varonis reports that Cloud Logging recorded neither the file replacement nor the injected logic.
- The shared hook exposed multiple impact paths. It could read conversation
historyand sessionstate, send captured data through unrestricted egress, modify replies throughrespond()to insert phishing prompts, and query IMDS. - The IMDS result was bounded. The researchers obtained a token for a Google-managed, low-privilege service account. The source does not claim that this token produced further privilege escalation.
Applicable AIDEFEND Defenses (6)
playbooks.update.What Defenders Should Do Now
- Confirm with Google Cloud that affected Dialogflow CX environments are on the remediated control plane. Retest the exact overwrite and cross-agent persistence behavior in a non-production project.
- Inventory principals with
dialogflow.playbooks.updateand determine which can also add or change Code Blocks. Separate executable-code authority from ordinary Playbook maintenance. - Review historical Playbook revisions, Code Block source, public-storage downloads, unexpected
respond()behavior, outbound destinations, and IMDS attempts around privileged changes. - Require isolated, disposable execution environments for Code Blocks. Verify that no writable interpreter, library, cache, or helper file is shared across agents or tenants.
- Block IMDS and default-deny egress outside the workload. Permit only named destinations required by an approved Playbook.
- Add independent runtime-file integrity and response-release evidence because the disclosed Cloud Logging path did not record the overwrite or injected logic.
Conclusion
Rogue Agent converted a legitimate update permission on one agent into control over execution code shared by the project. The blast radius came from the managed runtime boundary, not from the compromised Playbook alone.
AIDEFEND places the primary breakpoints at AID-H-021.002 signed-state reconciliation and AID-I-001.002 per-agent isolation. AID-H-018.002 narrows who may introduce executable logic, while AID-I-001.004 and AID-H-006.002 constrain the egress and response paths that remain after code execution.