Submit #891889: Forgejo 15.0.4 SSRFinfo

TitleForgejo 15.0.4 SSRF
DescriptionForgejo restricts repository migration and mirror sources by rejecting loopback and private network destinations. This protection relies on a DNS lookup performed during URL validation (net.LookupIP). For plain Git migrations, however, the actual clone is performed by an external git subprocess. That subprocess performs its own DNS resolution when establishing the network connection and is not protected by Forgejo's connect-time IP validation (hostmatcher.NewDialContext). Because validation and connection perform independent DNS resolutions, an attacker controlling DNS responses (DNS rebinding) can return: a public IP during Forgejo's validation (request accepted), then 127.0.0.1 or another internal address when the Git subprocess connects. As a result, the migration succeeds even though a direct request to the same internal address is correctly rejected.
Source⚠️ https://codeberg.org/forgejo/forgejo/issues/13433
User
 spooky (UID 96038)
Submission07/15/2026 15:28 (2 months ago)
Moderation08/29/2026 21:04 (2 months later)
StatusAccepted
VulDB entry397072 [Forgejo up to 15.0.4 Repository Migration is_migrate_allowed.go net.LookupIP server-side request forgery]
Points19

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!