OpenClaw advisories expose brittle AI agent controls
A new analysis of 190 OpenClaw advisories shows AI agent runtimes fail at the joins, not just the edges. Cross-layer bugs chain into unauthenticated remote code execution. Command filters fall to shell quirks. A malicious plugin bypasses runtime policy. The commercial takeaway: unify policy across layers or expect surprises.
Connecting Large Language Model (LLM) reasoning to real systems remains the riskiest move in the current agent craze. A new taxonomy of 190 advisories for the OpenClaw agent framework shows why: most failures are not exotic model tricks but mundane software flaws that align just well enough to become high impact once the LLM can pull the levers.
What they found
The authors organise issues along two axes. The system axis covers where things break: exec policy, gateway, channels, sandbox, browser, plugins, and the agent and prompt layer. The attack axis covers how: identity spoofing, policy bypass, cross-layer composition, prompt injection, and supply chain escalation. They also map these to an agent kill chain that explicitly includes context manipulation, which is where the LLM’s working memory gets poisoned.
Three points stand out. First, three independent flaws in the gateway and node host subsystems chain into a full unauthenticated remote code execution path. The route runs from an LLM tool call through permissive URL handling, token exfiltration over WebSocket, and server-side methods that let an attacker modify persistent exec approvals. None of these alone is catastrophic. Together they are.
Second, the main command filter in OpenClaw relies on lexical parsing and a closed-world view of command identity. That assumption does not survive contact with the shell. Line continuation, BusyBox multiplexing, and GNU long-option abbreviation all shift what actually runs. If you are filtering by strings, you are mainly filtering your own illusions.
Third, a malicious plugin delivered a two-stage dropper by abusing the plugin distribution channel. Because skill content is injected into the LLM context with high trust and without integrity checks, it bypassed the normal exec pipeline and its policies. In other words, the path around the guardrail was through the LLM’s clipboard.
Why this matters
The dominant theme is architectural, not patchable. Trust is enforced per layer and per call site, so cross-layer attacks survive local fixes. That explains the advisory clustering: plenty of medium-severity issues that compose into something you would rate as critical if you saw the whole path. For buyers and builders, this is a design problem masquerading as a bug backlog.
There are practical implications. Provenance and policy need to follow a request across the layers the agent traverses. Channel Allowlist" target="_blank" rel="noopener" class="term-link">allowlists should use immutable identifiers, not mutable text. Gateways need cryptographic validation for webhooks and runtime-constructed allowlists for endpoints. Command execution should avoid shell parsing where possible and move to direct argv semantics or semantic command interpretation. Sandbox configuration needs validation that blocks trivial bind-mount escapes. Plugin ecosystems need content review, signing, and provenance tags that the runtime actually enforces, not just logs.
Scope matters. This is a single-framework snapshot based on public advisories and patch diffs. Absence of evidence is not evidence of safety for other stacks. Still, the patterns are familiar: when you glue an LLM to a browser, shell, filesystem, and plugins, the weakest join dictates your blast radius.
The commercial angle is simple. If you treat an agent runtime as a remote management plane with an unpredictable operator, you will design unified policy boundaries and provenance-aware enforcement. If you treat it as a chat app with tools, you will keep rediscovering composed paths to RCE. Your choice, and your incident budget.
Additional analysis of the original ArXiv paper