GHSA-943q-mwmv-hhvh
HIGHOpenClaw: Gateway /tools/invoke tool escalation + ACP permission auto-approval
Blast Radius
Weekly download volume for affected packages — a proxy for how broadly this vulnerability is deployed.
openclawnpmDescription
Summary
OpenClaw Gateway exposes an authenticated HTTP endpoint (POST /tools/invoke) intended for invoking a constrained set of tools. Two issues could combine to significantly increase blast radius in misconfigured or exposed deployments:
- The HTTP gateway layer did not deny high-risk session orchestration tools by default, allowing a caller with Gateway auth to invoke tools like
sessions_spawn/sessions_sendand pivot into creating or controlling agent sessions. - ACP clients could auto-approve permission requests for risky tools with insufficient user interaction/guardrails, reducing the friction that should normally prevent silent execution or mutation.
Impact
If the Gateway is reachable by an attacker and they obtain a valid Gateway token, they may be able to:
- Escalate from single-tool invocation to spawning/controlling sessions and reach command execution capabilities depending on tool policy and runtime environment.
- Perform cross-session message injection via
sessions_send. - In ACP-integrated scenarios, obtain unintended approvals for non-read/search tool permissions.
CVSS
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H(8.8)
Affected versions
openclaw < 2026.2.14
Fixed in
openclaw >= 2026.2.14
Remediation
The default behavior is now hardened:
- PR #15390: deny high-risk tools over HTTP
/tools/invokeby default (withgateway.tools.{allow,deny}overrides) and harden ACP permission handling. - Commit
bb1c3dfe1: ACP clients now prompt for any non-read/search permission request (fail closed for mutating/execution/fetch operations). - Commit
539689a2f: security audit warns whengateway.tools.allowre-enables default-denied HTTP tools, since this can increase RCE blast radius if the Gateway is reachable. - Commit
153a7644e: ACP safe-kind inference is stricter to avoid accidental auto-approval due to substring matches (still auto-approves only confidentread/search).
Mitigations / deployment guidance
- Keep the Gateway loopback-only unless you have a strong reason not to:
gateway.bind="loopback"/openclaw gateway run --bind loopback. - Avoid exposing the Gateway directly to the public internet. Use an SSH tunnel or Tailscale to access a loopback-bound Gateway.
- Treat opting in to default-denied HTTP tools (via
gateway.tools.allow) as high-risk and audit such configurations carefully.
Credits
OpenClaw thanks @aether-ai-agent for reporting this issue and contributing remediation work.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | openclaw | all versions | 2026.2.14 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for openclaw. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.
Fix
Update openclaw to 2026.2.14 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-943q-mwmv-hhvh is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
How O3 protects you
O3 pinpoints whether GHSA-943q-mwmv-hhvh is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.
Tailored to GHSA-943q-mwmv-hhvh. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
Frequently Asked Questions
Is GHSA-943q-mwmv-hhvh in your dependencies?
O3 detects GHSA-943q-mwmv-hhvh across npm dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.