| 제목 | Forgejo 15.0.4 SSRF |
|---|
| 설명 | Forgejo 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. |
|---|
| 원천 | ⚠️ https://codeberg.org/forgejo/forgejo/issues/13433 |
|---|
| 사용자 | spooky (UID 96038) |
|---|
| 제출 | 2026. 07. 15. PM 03:28 (2 개월 ago) |
|---|
| 모더레이션 | 2026. 08. 29. PM 09:04 (2 months later) |
|---|
| 상태 | 수락 |
|---|
| VulDB 항목 | 397072 [Forgejo 까지 15.0.4 Repository Migration is_migrate_allowed.go net.LookupIP 권한 상승] |
|---|
| 포인트들 | 19 |
|---|