Skip to content

revert(ingest): remove ingest-side SSRF egress guard (operator decision)#28

Merged
ntt0601zcoder merged 1 commit into
mainfrom
fix/security-critical-high
Jun 15, 2026
Merged

revert(ingest): remove ingest-side SSRF egress guard (operator decision)#28
ntt0601zcoder merged 1 commit into
mainfrom
fix/security-critical-high

Conversation

@ntt0601zcoder

Copy link
Copy Markdown
Owner

What

Removes the ingest-side SSRF egress guard, by operator decision.

The dial-time guard on the HLS / HTTP-TS pull clients blocked private/RFC1918 targets unless allow_private_targets was set. On a server whose primary role is pulling from internal / LAN sources, that is counterproductive:

  • it caused a real failover freeze (an internal HLS input was blocked at dial, the worker reconnect-looped, and no error surfaced), and
  • it only ever covered the two HTTP-family pull protocols (RTSP/RTMP/SRT were never guarded), so it was never complete coverage.

With the control plane now behind authentication, the unauthenticated-remote angle that made this high-severity is gone, so the ingest guard is removed.

Removed

  • netguard transport guard + redirect cap on the HLS and HTTP-TS clients
  • save-time input-URL validation in the stream handler
  • the allow_private_targets ingestor config flag (and its runtime hot-reload)
  • the egress-guard fail-fast classification in the ingest worker

Kept

  • the netguard package and its use by the webhook client (a hook must never reach the local admin API / metadata endpoint)
  • the connect-but-no-packets failover self-heal (independent)
  • the hooks file-root hot-reload (independent)

Audit doc

The ingest SSRF finding (S-4) is marked won't-fix / risk-accepted with rationale; the follow-up coverage/retroactivity bug is marked ignore.

Tests

make check green — build + vet + lint (0 issues) + test -race (32 packages). Swagger regenerated.

The dial-time SSRF guard on the HLS/HTTP-TS pull clients blocked
private/RFC1918 targets unless an opt-in flag was set. On a server whose
primary role is pulling from internal/LAN sources this is counterproductive:
it caused a real failover freeze (an internal HLS input was blocked at dial,
the worker reconnect-looped, no error surfaced), and it only ever covered the
two HTTP-family pull protocols anyway. With the control plane now behind
authentication, the unauthenticated-remote angle that made this high-severity
is gone, so the ingest guard is removed.

Removed:
- netguard transport guard + redirect cap on the HLS and HTTP-TS clients
- save-time input-URL validation in the stream handler
- the allow_private_targets ingestor config flag (and its runtime hot-reload)
- the egress-guard fail-fast classification in the ingest worker

Kept:
- the netguard package and its use by the webhook client (a hook must never
  reach the local admin API / metadata endpoint)
- the connect-but-no-packets failover self-heal (independent)
- the hooks file-root hot-reload (independent)

Audit doc: the ingest SSRF finding is marked won't-fix / risk-accepted with
rationale; the follow-up coverage/retroactivity bug is marked ignore.

make check green (build + vet + lint + test -race).
@ntt0601zcoder ntt0601zcoder merged commit fa0b0a0 into main Jun 15, 2026
4 checks passed
@ntt0601zcoder ntt0601zcoder deleted the fix/security-critical-high branch June 15, 2026 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant