Skip to content

docs(security): clarify proxy SSRF reporting scope#74338

Merged
jesse-merhi merged 5 commits into
mainfrom
docs/security-http-proxy-ssrf-policy
Apr 29, 2026
Merged

docs(security): clarify proxy SSRF reporting scope#74338
jesse-merhi merged 5 commits into
mainfrom
docs/security-http-proxy-ssrf-policy

Conversation

@jesse-merhi

@jesse-merhi jesse-merhi commented Apr 29, 2026

Copy link
Copy Markdown
Member

Summary

  • Problem: SECURITY.md did not yet point researchers to the Network proxy docs when describing SSRF report triage for feat(security): support operator-managed network proxy routing #70044.
  • Why it matters: researchers need a clear boundary for reports about fetch, Node HTTP(S), WebSocket clients, and similar process-local HTTP egress without over-scoping non-HTTP features.
  • What changed: added concise SECURITY.md false-positive/out-of-scope bullets that refer to the Network proxy docs, updated docs/security/network-proxy.md to avoid naming fetchWithSsrFGuard as a protection, and added the requested changelog entry for docs: classify media decode overhead as performance-only #74311 / abaa432.
  • What did NOT change (scope boundary): this does not classify non-HTTP/WebSocket egress, raw sockets, native addons, child processes, or unrelated OpenClaw features.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

Root Cause (if applicable)

N/A

  • Root cause:
  • Missing detection / guardrail:
  • Contributing context (if known):

Regression Test Plan (if applicable)

N/A

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file:
  • Scenario the test should lock in:
  • Why this is the smallest reliable guardrail:
  • Existing test that already covers this (if any):
  • If no new test is added, why not: docs-only policy clarification.

User-visible / Behavior Changes

Updates SECURITY.md triage policy for SSRF reports about the operator-managed HTTP/WebSocket proxy-routing feature, points readers to the Network proxy docs, and adds the missing #74311 changelog entry.

Diagram (if applicable)

N/A

Before:
SSRF report scope for proxy-routed fetch/HTTP/WebSocket egress was implicit in SECURITY.md.

After:
SECURITY.md has concise scoped bullets and links to the Network proxy docs for details.

Security Impact (required)

  • New permissions/capabilities? (Yes/No) No
  • Secrets/tokens handling changed? (Yes/No) No
  • New/changed network calls? (Yes/No) No
  • Command/tool execution surface changed? (Yes/No) No
  • Data access scope changed? (Yes/No) No
  • If any Yes, explain risk + mitigation: N/A

Repro + Verification

Environment

  • OS: macOS
  • Runtime/container: Node/pnpm local repo
  • Model/provider: N/A
  • Integration/channel (if any): N/A
  • Relevant config (redacted): N/A

Steps

  1. Review SECURITY.md and docs/security/network-proxy.md policy wording.
  2. Add the requested CHANGELOG.md entry for docs: classify media decode overhead as performance-only #74311.
  3. Run scoped docs formatting and prepare gates.

Expected

  • SECURITY.md clearly documents the HTTP/WebSocket proxy-routing SSRF reporting scope and links to the canonical docs.
  • Network proxy docs do not refer to fetchWithSsrFGuard as a protection.
  • CHANGELOG.md includes the requested docs: classify media decode overhead as performance-only #74311 entry.
  • Scoped docs formatting passes.

Actual

  • SECURITY.md now includes concise false-positive/out-of-scope bullets with Network proxy links.
  • Network proxy docs frame the feature around operator-managed fail-closed proxy routing.
  • CHANGELOG.md includes the requested docs: classify media decode overhead as performance-only #74311 entry.
  • Scoped docs formatting passes.

Evidence

  • Failing test/log before + passing after
  • Trace/log snippets
  • Screenshot/recording
  • Perf numbers (if relevant)

Validation runs:

pnpm format:check SECURITY.md docs/security/network-proxy.md
pnpm format:check CHANGELOG.md SECURITY.md docs/security/network-proxy.md
pnpm build

Prepare gate note: after rebasing onto the latest origin/main, scripts/pr-prepare gates 74338 reran pnpm build successfully, then pnpm check hit an unrelated baseline lint error in src/plugins/providers.test.ts (oxc(no-map-spread)). This PR changes only CHANGELOG.md, SECURITY.md, and docs/security/network-proxy.md; git diff --quiet origin/main -- src/plugins/providers.test.ts confirms the failing file is identical to latest origin/main.

Human Verification (required)

  • Verified scenarios: Read the rendered Markdown diff, ran format check for edited docs/changelog, and synced/pushed the prepared branch onto latest origin/main.
  • Edge cases checked: Wording explicitly limits the policy to normal process-local HTTP(S)/WebSocket egress and leaves non-HTTP egress/other features assessed separately.
  • What you did not verify: Full test suite; change is documentation/changelog-only and CI docs checks are expected to cover the changed surface.

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? (Yes/No) Yes
  • Config/env changes? (Yes/No) No
  • Migration needed? (Yes/No) No
  • If yes, exact upgrade steps: N/A

Risks and Mitigations

  • Risk: Policy wording could be read as covering more than the proxy-routing feature.
    • Mitigation: The new text scopes the policy to normal process-local HTTP/WebSocket egress and says non-HTTP egress/other features are assessed separately.

@jesse-merhi
jesse-merhi requested a review from a team as a code owner April 29, 2026 12:49
@openclaw-barnacle openclaw-barnacle Bot added size: XS maintainer Maintainer-authored PR labels Apr 29, 2026
@greptile-apps

greptile-apps Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds documentation to SECURITY.md clarifying the SSRF reporting scope for the operator-managed HTTP/WebSocket proxy-routing feature introduced in #70044. It adds a new dedicated section, a matching false-positive pattern bullet, and an out-of-scope bullet — all consistent with each other and with the referenced implementation (fetchWithSsrFGuard, proxy.enabled, etc., verified against the codebase).

Confidence Score: 5/5

Safe to merge — docs-only change with no code impact.

Purely documentation. The three added blocks (false-positive bullet, new section, out-of-scope bullet) are internally consistent and match verified codebase identifiers (fetchWithSsrFGuard, proxy.enabled, OPENCLAW_PROXY_URL). No logic, security boundaries, or runtime behavior are modified.

No files require special attention.

Reviews (1): Last reviewed commit: "docs(security): clarify proxy SSRF repor..." | Re-trigger Greptile

@clawsweeper

clawsweeper Bot commented Apr 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

What this changes:

This PR updates SECURITY.md with SSRF triage scope for operator-managed HTTP/WebSocket proxy routing, revises docs/security/network-proxy.md wording around proxy guardrails, and adds a CHANGELOG.md entry for the merged media decode triage-policy change in #74311.

Maintainer follow-up before merge:

Protected maintainer-labeled security-policy documentation PR needs human maintainer/security review and normal exact-head validation, not an automated replacement or repair PR.

Best possible solution:

The durable end state should be public SECURITY.md and Network proxy docs that give researchers a precise HTTP/WebSocket proxy-routing triage boundary while leaving non-HTTP egress and unrelated features assessed separately.

Acceptance criteria:

What I checked:

  • protected-maintainer-pr: Provided PR metadata shows authorAssociation MEMBER and label maintainer, which the cleanup policy keeps open for explicit maintainer handling. (bcb60c07a12e)
  • main-missing-security-proxy-scope: Current main's SECURITY.md false-positive and out-of-scope sections do not contain the proposed operator-managed HTTP/WebSocket proxy-routing SSRF bullets. (SECURITY.md:66, a972c9ec4547)
  • main-still-has-guarded-fetch-wording: Current network proxy docs still say the proxy is additional to application-level SSRF guards such as fetchWithSsrFGuard, and the limits section still says it does not replace fetchWithSsrFGuard; those are the docs lines this PR changes. Public docs: docs/security/network-proxy.md. (docs/security/network-proxy.md:26, a972c9ec4547)
  • current-proxy-boundary-docs: Current docs define the proxy as optional operator-managed routing for normal process-local HTTP/WebSocket clients, state OpenClaw does not certify the proxy, and list raw sockets/native addons/child processes as limits. Public docs: docs/security/network-proxy.md. (docs/security/network-proxy.md:11, a972c9ec4547)
  • current-proxy-source-boundary: Current proxy lifecycle code resolves proxy.proxyUrl or OPENCLAW_PROXY_URL, accepts only http:// proxy URLs, fails startup when enabled without a valid URL, injects proxy environment/global-agent state, clears NO_PROXY-style bypass env vars, and limits the Gateway control-plane bypass to loopback URLs. (src/infra/net/proxy/proxy-lifecycle.ts:319, a972c9ec4547)
  • current-proxy-coverage: Existing e2e coverage routes fetch, node:http, explicit HTTP agents, HTTPS CONNECT, and WebSocket traffic through the operator-managed proxy while confirming the loopback Gateway bypass remains narrow. (src/infra/net/proxy/external-proxy.e2e.test.ts:177, a972c9ec4547)

Likely related people:

Remaining risk / open question:

  • The proposed SECURITY.md wording is security-policy triage language; maintainers should confirm it does not over-scope non-HTTP/WebSocket egress, raw sockets, native addons, child processes, or unrelated SSRF reports.

Codex review notes: model gpt-5.5, reasoning high; reviewed against a972c9ec4547.

@openclaw-barnacle openclaw-barnacle Bot added the docs Improvements or additions to documentation label Apr 29, 2026
@jesse-merhi jesse-merhi self-assigned this Apr 29, 2026
@jesse-merhi
jesse-merhi force-pushed the docs/security-http-proxy-ssrf-policy branch 4 times, most recently from bcb60c0 to d4702a3 Compare April 29, 2026 14:26
@jesse-merhi
jesse-merhi force-pushed the docs/security-http-proxy-ssrf-policy branch from d4702a3 to 7dd9fcf Compare April 29, 2026 14:28
@jesse-merhi
jesse-merhi merged commit 542821c into main Apr 29, 2026
36 checks passed
@jesse-merhi
jesse-merhi deleted the docs/security-http-proxy-ssrf-policy branch April 29, 2026 14:30
@jesse-merhi

Copy link
Copy Markdown
Member Author

Merged via squash.

Thanks @jesse-merhi!

lxe pushed a commit to lxe/openclaw that referenced this pull request May 6, 2026
Merged via squash.

Prepared head SHA: 7dd9fcf
Co-authored-by: jesse-merhi <[email protected]>
Co-authored-by: jesse-merhi <[email protected]>
Reviewed-by: @jesse-merhi
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 9, 2026
Merged via squash.

Prepared head SHA: 7dd9fcf
Co-authored-by: jesse-merhi <[email protected]>
Co-authored-by: jesse-merhi <[email protected]>
Reviewed-by: @jesse-merhi
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
Merged via squash.

Prepared head SHA: 7dd9fcf
Co-authored-by: jesse-merhi <[email protected]>
Co-authored-by: jesse-merhi <[email protected]>
Reviewed-by: @jesse-merhi
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
Merged via squash.

Prepared head SHA: 7dd9fcf
Co-authored-by: jesse-merhi <[email protected]>
Co-authored-by: jesse-merhi <[email protected]>
Reviewed-by: @jesse-merhi
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Merged via squash.

Prepared head SHA: 7dd9fcf
Co-authored-by: jesse-merhi <[email protected]>
Co-authored-by: jesse-merhi <[email protected]>
Reviewed-by: @jesse-merhi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation maintainer Maintainer-authored PR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant