Vibe Security Radar
Back to Vulnerabilities

CVE-2026-31989

openclaw/openclaw
Mar 19, 2026CWE-918
TypeScript
Verified by gpt-5.4-high
Severity
MEDIUM5.3
Verdict
CONFIRMED
0.8 confidence
AI Tool
Claude CodeClaude Code
Language
TypeScript

OpenClaw versions prior to 2026.3.1 contain a server-side request forgery vulnerability in web_search citation redirect resolution that uses a private-network-allowing SSRF policy. An attacker who can influence citation redirect targets can trigger internal-network requests from the OpenClaw host to loopback, private, or internal destinations.

How AI Introduced This

Yes. The initial Gemini grounding feature that introduced `resolveRedirectUrl()` and sent HEAD requests to citation URLs was commit `3a3c2da9168f93397eeb3109d521819e10dc44fd`, which is explicitly co-authored by Claude Opus 4.6. A later human-only commit (`5eb72ab769517e31d96140f1aa66bd1a47a40c2a`) kept that code path exploitable by moving it onto the SSRF guard while explicitly opting into `dangerouslyAllowPrivateNetwork` for attacker-controlled redirect targets.

Attribution Chain
Advisory
Advisory Version
Fix Commit
b9aa2d4— openclaw/openclaw
git blame
src/agents/subagent-spawn.ts
Squash Merge
5a3a448— 1 sub-commits
PR Decomposition
File overlap + AI signal analysis
Bug-Introducing Commit
Advisory
Advisory Version
Fix Commit
53d10f8— openclaw/openclaw
git blame
src/gateway/server.impl.ts
Squash Merge
ab4a08a— 2 sub-commits
PR Decomposition
File overlap + AI signal analysis
Bug-Introducing Commit
+2 more attribution chains
Advisory
Advisory Version
Fix Commit
f5c2be1— openclaw/openclaw
git blame
src/media/server.ts
Squash Merge
b94b220— 1 sub-commits
PR Decomposition
File overlap + AI signal analysis
Bug-Introducing Commit
Advisory
Advisory Version
Fix Commit
b9aa2d4— openclaw/openclaw
git blame
No direct match
LLM Investigator
Discovered during deep verification
Squash Merge
3a3c2da— 10 sub-commits
PR Decomposition
File overlap + AI signal analysis
Bug-Introducing Commit
Bug-Introducing Commits(4)

feat(commands): add /subagents spawn command

Joshua MitchellFeb 16, 2026src/agents/subagent-spawn.tsBlame: 80%

Extracted from squash merge 5a3a448

fix: defer gateway restart until all replies are sent

BridgerzFeb 13, 2026src/gateway/server.impl.tsBlame: 80%

Extracted from squash merge ab4a08a

1 other sub-commit in this PR
7c4abddPeter Steinberger

fix: single-source gateway restart authorization

Fix path traversal vulnerability in media server

Joao LisboaDec 2, 2025src/media/server.tsBlame: 80%

Extracted from squash merge b94b220

fix: use structured readResponseText result in Gemini error path

AkosCzFeb 23, 2026src/agents/tools/web-search.tsBlame: 60%

Extracted from squash merge 3a3c2da

9 other sub-commits in this PR
a4c68d8AkosCz

feat: add Gemini (Google Search grounding) as web_search provider

b588760AkosCz

feat: auto-detect search provider from available API keys

8e3d6cfAkosCz

fix: merge __testing exports, downgrade auto-detect log to debug

7088759AkosCz

fix: use defaultRuntime.log instead of .debug (not in RuntimeEnv type)

843a42dAkosCz

fix: mark gemini apiKey as sensitive in zod schema

293e525AkosCz

fix: address Greptile review — add externalContent to Gemini payload, add Gemini/Grok entries to schema labels/help, rem...

ac8c22eAkosCz

fix(web-search): add JSON parse guard for Gemini API responses

8575bcdAkosCz

style: fix import order and formatting after rebase onto main

93d861dVincent Koc

Web search: send Gemini API key via header

Deep Verification

by investigator-override
CONFIRMED0.8
0 tool calls
80%

Yes. The initial Gemini grounding feature that introduced `resolveRedirectUrl()` and sent HEAD requests to citation URLs was commit `3a3c2da9168f93397eeb3109d521819e10dc44fd`, which is explicitly co-authored by Claude Opus 4.6. A later human-only commit (`5eb72ab769517e31d96140f1aa66bd1a47a40c2a`) kept that code path exploitable by moving it onto the SSRF guard while explicitly opting into `dangerouslyAllowPrivateNetwork` for attacker-controlled redirect targets.

AI Signals(4)
Commit49dffa4
Claude CodeCo-author trailerCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>95%
Commit6b2ad69
Claude CodeCo-author trailerCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>95%
Commit985ee40
Claude CodeCo-author trailerCo-Authored-By: Claude <noreply@anthropic.com>95%
Commit7f1a4c7
Claude CodeCo-author trailerCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>95%
Fix Commits(20)
085c23copenclaw/openclawAdvisory Version
5b62d56openclaw/openclawAdvisory Version
3a93a7bopenclaw/openclawAdvisory Version
fa91484openclaw/openclawAdvisory Version
8247c25openclaw/openclawAdvisory Version
aaa7de4openclaw/openclawAdvisory Version
757e09fopenclaw/openclawAdvisory Version
710004eopenclaw/openclawAdvisory Version
b9aa2d4openclaw/openclawAdvisory Version
53d10f8openclaw/openclawAdvisory Version
002539copenclaw/openclawAdvisory Version
e4d22fbopenclaw/openclawAdvisory Version
1342962openclaw/openclawAdvisory Version
eddaf19openclaw/openclawAdvisory Version
4ba0a4dopenclaw/openclawAdvisory Version
6f63fc2openclaw/openclawAdvisory Version
348a7ddopenclaw/openclawAdvisory Version
ba430ccopenclaw/openclawAdvisory Version
930841copenclaw/openclawAdvisory Version
f5c2be1openclaw/openclawAdvisory Version