This vulnerability fundamentally changes how you should think about SSRF detection. The attacker doesn't need an immediate out-of-band response—they trigger the file read via the migration endpoint, and Gitea persists the result as a migration release asset. Days later, they simply download the release like any normal deployment artifact. Your detection rules watching for high-entropy responses to SSRF probes will miss this entirely because the exfiltration and recovery are temporally decoupled.
The attack surface is the migration endpoint accepting arbitrary URLs, combined with Go's http.Get default behavior of following redirects—including from file:// URLs to actual file reads. An authenticated user can read database credentials, signing secrets, or any file the Gitea process can access. The exfiltrated content doesn't appear in transient HTTP logs; it sits in your release artifact storage until the next cleanup job runs, which in many production environments is quarterly at best.
For immediate response, you must do three things. First, audit your migration audit logs for any requests to file:// URLs or accesses to internal IP ranges in the days/weeks before detection—this is your indicator of compromise window. Second, enumerate all migration release assets in your object storage and BOSH deployment artifacts; treat any asset created by migration as potentially compromised until verified. Third, rotate every credential that could have been read—database passwords, signing secrets, API tokens—and extend that rotation to any system where those credentials were used.
For detection going forward, add migration release asset creation to your SSRF detection scope—this attack deliberately looks like legitimate artifact download traffic. Block file:// and other non-HTTP(S) schemes at the HTTP transport layer rather than relying on URL allowlists that have known bypass history with mixed-case encoding. The Go http.Transport supports custom DialContext and scheme filtering; hardening the client is more robust than perimeter controls.
The severity escalates significantly with signing secrets. Unlike database passwords that rotate on schedule, signing secrets provide persistent access across the entire artifact pipeline. An attacker with signing secrets has credential equivalence across every system those artifacts touch—you're not just rotating a password, you're auditing a deployment chain that may span hundreds of BOSH-managed VMs.