Gogs przed wersją 0.14.3 akceptuje nazwy organizacji zawierające sekwencje path traversal (../), co pozwala na zapis i odczyt plików repozytoriów w dowolnym miejscu systemu plików. Podatność może zostać wykorzystana do wykonania zdalnego kodu (RCE) na serwerze.
▸ Pokaż oryginał (EN)
Gogs is an open source self-hosted Git service. Prior to 0.14.3, organization names containing path traversal sequences (../) are accepted by Gogs, and repositories under them are written to paths following these path traversals. This allows storing/retrieving data for repositories at arbitrary locations on the filesystem. By creating nested structure of Git repositories, one can overwrite the other's hooks configuration to result in Remote Code Execution (RCE). This vulnerability is fixed in 0.14.3.
Aplikacja Gogs nie waliduje poprawnie nazw organizacji pod kątem sekwencji path traversal (../). W efekcie repozytoria zakładane w ramach takich organizacji są fizycznie zapisywane w ścieżkach wynikających z przekierowania katalogów — czyli poza przeznaczonym dla nich obszarem systemu plików. Atakujący może tworzyć zagnieżdżone struktury repozytoriów Git w taki sposób, by nadpisać konfigurację hooków (haków) innego repozytorium. Ponieważ hooki Git są wykonywalne po stronie serwera, nadpisanie ich treści pozwala na uruchomienie dowolnego kodu w kontekście procesu serwera.
Atakujący bez uwierzytelnienia może uzyskać pełną kontrolę nad serwerem poprzez wykonanie dowolnego kodu (RCE), a także zapisywać i odczytywać dane w dowolnym miejscu systemu plików, co zagraża poufności, integralności i dostępności systemu.
Należy zaktualizować Gogs do wersji 0.14.3 lub nowszej, która zawiera poprawkę eliminującą akceptowanie sekwencji path traversal w nazwach organizacji. Patch dostępny jest w referencjach producenta oraz w repozytorium GitHub projektu.
Gogs w wersjach przed 0.14.3 (wszystkie instancje self-hosted z możliwością tworzenia organizacji).
Podatność została naprawiona w wersji 0.14.3. Szczegóły techniczne dostępne są w security advisory GHSA-c39w-43gm-34h5 oraz w pull requeście #8334 w repozytorium GitHub projektu Gogs.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H