| Название | 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) |
|---|
| Представление | 15.07.2026 15:28 (2 месяцы назад) |
|---|
| Модерация | 29.08.2026 21:04 (2 months later) |
|---|
| Статус | принято |
|---|
| Запись VulDB | 397072 [Forgejo до 15.0.4 Repository Migration is_migrate_allowed.go net.LookupIP эскалация привилегий] |
|---|
| Баллы | 19 |
|---|