fix(security): OC-02 block sessions_spawn via HTTP gateway + fix ACP auto-approval#15390
Merged
steipete merged 2 commits intoopenclaw:mainfrom Feb 13, 2026
Merged
Conversation
Contributor
|
Why are you denying the admin tool to do admin things? The http sendpoints are not a public or third-party facing API. They are behind an "owner-level" access control. |
steipete
added a commit
to aether-ai-agent/openclaw
that referenced
this pull request
Feb 13, 2026
1fd902d to
4c257a0
Compare
…to-approval (OC-02)
Two critical RCE vectors patched:
Vector 1 - Gateway HTTP /tools/invoke:
- Add DEFAULT_GATEWAY_HTTP_TOOL_DENY blocking sessions_spawn,
sessions_send, gateway, whatsapp_login from HTTP invocation
- Apply deny filter after existing policy cascade, before tool lookup
- Add gateway.tools.{allow,deny} config override in GatewayConfig
Vector 2 - ACP client auto-approval:
- Replace blind allow_once selection with danger-aware permission handler
- Dangerous tools (exec, sessions_spawn, etc.) require interactive confirmation
- Safe tools retain auto-approve behavior (backward compatible)
- Empty options array now denied (was hardcoded "allow")
- 30s timeout auto-denies to prevent hung sessions
CWE-78 | CVSS:3.1 9.8 Critical
4c257a0 to
045cdbc
Compare
Contributor
|
Landed via temp rebase onto main. Thanks @aether-ai-agent! |
alex-muradov
pushed a commit
to alex-muradov/openclaw
that referenced
this pull request
Feb 13, 2026
zhangyang-crazy-one
pushed a commit
to zhangyang-crazy-one/openclaw
that referenced
this pull request
Feb 13, 2026
skyhawk14
pushed a commit
to skyhawk14/openclaw
that referenced
this pull request
Feb 13, 2026
steipete
added a commit
to azade-c/openclaw
that referenced
this pull request
Feb 14, 2026
GwonHyeok
pushed a commit
to learners-superpumped/openclaw
that referenced
this pull request
Feb 15, 2026
cloud-neutral
pushed a commit
to cloud-neutral-toolkit/openclawbot.svc.plus
that referenced
this pull request
Feb 15, 2026
jiulingyun
added a commit
to jiulingyun/openclaw-cn
that referenced
this pull request
Feb 15, 2026
…rmission hardening (upstream ee31cd4, openclaw#15390)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
DEFAULT_GATEWAY_HTTP_TOOL_DENYto block dangerous tools (sessions_spawn,sessions_send,gateway,whatsapp_login) from HTTP/tools/invokeendpointrequestPermissioncallback to require interactive confirmation for dangerous tools instead of auto-approving everythinggateway.tools.{allow,deny}config override for gateway deny list customizationSecurity Impact
OC-02 Critical RCE (CWE-78, CVSS 9.8) — Two attack vectors remediated:
/tools/invokewithtool=sessions_spawncould spawn agent sessions with full exec accessChanges
src/config/types.gateway.tsGatewayToolsConfigtype +toolsfield toGatewayConfigsrc/gateway/tools-invoke-http.tssrc/acp/client.tssrc/gateway/tools-invoke-http.test.tssrc/acp/client.test.tsTest plan
sessions_spawnreturns 404 via HTTP gatewaysessions_sendreturns 404 via HTTP gatewaygatewaytool returns 404 via HTTP gatewayagents_liststill returns 200 (not denied)Greptile Overview
Greptile Summary
This PR hardens two security-sensitive surfaces:
POST /tools/invoke: adds a default deny list (sessions_spawn,sessions_send,gateway,whatsapp_login) that is applied after the existing multi-stage tool policy cascade, plus agateway.tools.{deny,allow}config override for customizing that deny list.requestPermissionwith a “dangerous tool” classifier and an interactive confirmation prompt (30s timeout), and moves permission-related logging to stderr to avoid protocol corruption.Tests were added for the gateway deny behavior and for presence of the ACP permission logic (structural source checks).
Confidence Score: 4/5
Last reviewed commit: 1fd902d
(3/5) Reply to the agent's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!