Arcane has Unauthenticated SSRF with Conditional Response Reflection in Template Fetch Endpoint

Description

Summary

The /api/templates/fetch endpoint accepts a caller-supplied url parameter and performs a server-side HTTP GET request to that URL without authentication and without URL scheme or host validation. The server's response is returned directly to the caller. type. This constitutes an unauthenticated SSRF vulnerability affecting any publicly reachable Arcane instance.

Details

  • No allowlist or denylist of destination hosts/CIDRs
  • No requirement for the caller to be authenticated

Response handling produces four distinct outcomes observable by the caller:
- Valid JSON targets return a fully reflected response body if the returned fields fit the expected internal struct
- Non-JSON HTTP 200 responses produce an error leaking the first byte of the response ("Invalid JSON response: invalid character '<'...")
- Non-200 responses leak the HTTP status code
- TCP-level failures distinguish between closed ports ("connection refused") and filtered ones ("i/o timeout")

PoC

Send an unauthenticated GET request to /api/templates/fetch, passing the target URL as the url query parameter.

<img width="1041" height="375" alt="image" src="https://github.com/user-attachments/assets/f9fd475e-90b0-4dec-95e1-0af6263f5bb5" />

Impact

  • Unauthenticated port scanning of internal networks
  • Access to internal HTTP services not exposed to the public internet (service discovery endpoints, internal dashboards, Kubernetes API)

Basic information

Type
reviewed
Severity
high
Advisory on GitHub
Open advisory ↗
Repository advisory
Open repository advisory ↗
Source code
Browse source ↗
Published (advisory)
2026-04-10 20:59:27 UTC
Updated
2026-04-10 21:37:59 UTC
GitHub reviewed
2026-04-10 20:59:27 UTC
NVD published
2026-04-10 21:16:27 UTC

EPSS Score

Score Percentile
0.40% 60.39%

CVSS Scores

Base score Version Severity Vector
7.2 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:C)
Breaking this can reach past the original component and bite other resources—bigger blast radius.
Confidentiality (C:L)
Some sensitive info could get out, but not a total data dump.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:N)
Service keeps running; no real outage angle.

Identifiers

CWEs

CWE id Name
CWE-918 Server-Side Request Forgery (SSRF)

Credits

  • msoneri (reporter)

Affected packages (1)

Vulnerable version ranges and first patched releases as published by GitHub.

Ecosystem Package Vulnerable range First patched Vulnerable functions
go github.com/getarcaneapp/arcane/backend <= 1.17.2 1.17.3

References

cvelogic Threat Intelligence