
Co znajdziesz w tym artykule?
- 1 Wprowadzenie do problemu / definicja luki
- 2 W skrócie
- 3 Kontekst / historia / powiązania
- 4 Analiza techniczna / szczegóły luki
- 5 Praktyczne konsekwencje / ryzyko
- 6 Rekomendacje operacyjne / co zrobić teraz
- 7 Różnice / porównania z innymi przypadkami (jeśli dotyczy)
- 8 Podsumowanie / kluczowe wnioski
- 9 Źródła / bibliografia
Wprowadzenie do problemu / definicja luki
Gogs (lekka, self-hostowana usługa Git napisana w Go) znalazła się na celowniku po potwierdzeniu aktywnego wykorzystywania podatności CVE-2025-8110 prowadzącej do zdalnego wykonania kodu (RCE) na serwerach wystawionych do Internetu. CISA nakazała amerykańskim agencjom federalnym wdrożenie poprawek/mitigacji w trybie pilnym — w praktyce to sygnał, że ryzyko jest „tu i teraz”, a nie teoretyczne.
W skrócie
- CVE-2025-8110 (CVSS v4: 8.7 / High) dotyczy obsługi dowiązań symbolicznych (symlinków) w API zapisu plików PutContents i umożliwia zapis poza repozytorium.
- Atak wymaga zwykle niskich uprawnień (np. konta użytkownika), ale w praktyce wiele instancji ma włączone Open Registration, co mocno obniża barierę wejścia.
- Wiz raportował ponad 700 oznak skompromitowanych instancji i ponad 1400 publicznie dostępnych serwerów Gogs podczas analizy kampanii.
- CISA wyznaczyła termin dla FCEB na 2 lutego 2026 (w ciągu 3 tygodni od komunikatu).
Kontekst / historia / powiązania
CVE-2025-8110 jest opisywana jako obejście wcześniej załatanego błędu RCE CVE-2024-55947. Poprzednie zabezpieczenia miały blokować klasyczny directory traversal w ścieżkach, ale nie weryfikowały celu symlinka, co pozwoliło wrócić do scenariusza „zapis poza repozytorium → przejęcie”.
Z perspektywy obrony istotne są też informacje o falach ataków: Wiz opisał obserwacje działań już latem, a następnie kolejną falę (wg osi czasu ujawnienia) 1 listopada.
Analiza techniczna / szczegóły luki
Rdzeń problemu: PutContents API pozwala aktualizować/zapisywać pliki w repozytorium przez endpoint w stylu:
PUT /repos/:owner/:repo/contents/:path
Aplikacja walidowała ../ (traversal po ścieżce), ale nie walidowała docelowej ścieżki po rozwinięciu symlinków. Atakujący może więc:
- Utworzyć repozytorium zawierające symlink (np. do pliku konfiguracyjnego Git poza repo).
- Z użyciem PutContents zapisać dane „przez symlink”, co w efekcie nadpisze plik poza katalogiem repozytorium.
W praktyce opisywany wektor eskalacji do RCE to nadpisanie .git/config i wstrzyknięcie ustawienia sshCommand, które następnie może zostać użyte do uruchomienia dowolnych poleceń przy kolejnej operacji Git.
Status poprawek bywa mylący:
- istnieją patche/commity/PR dodające „symlink-aware path validation” (walidację ścieżek po rozwinięciu dowiązań),
- natomiast w bazie advisory GitHub nadal może widnieć informacja o braku „patched versions” jako wydań wersji (tagów) — co z perspektywy zespołów operacyjnych oznacza często: trzeba wdrożyć poprawkę z kodu źródłowego albo zastosować twarde mitigacje do czasu oficjalnego release’u.
Praktyczne konsekwencje / ryzyko
Najbardziej narażone są instancje:
- wystawione do Internetu,
- z włączoną otwartą rejestracją (Open Registration),
- gdzie PutContents jest dostępne dla szerokiej grupy użytkowników.
Skutki kompromitacji mogą obejmować:
- przejęcie serwera aplikacyjnego (RCE w kontekście procesu Gogs),
- kradzież repozytoriów/sekretów (tokeny, klucze wdrożeniowe, konfiguracje CI/CD),
- pivot do sieci wewnętrznej (Gogs bywa „blisko” pipeline’ów i systemów budowania).
W jednej z analiz kampanii wskazano użycie malware budowanego na Supershell (framework C2), komunikującego się m.in. z adresem 119.45.176[.]196 — to ważny IOC dla threat huntingu.
Rekomendacje operacyjne / co zrobić teraz
Poniżej podejście „assume breach” dla organizacji, które mają Gogs online.
1) Redukcja powierzchni ataku (natychmiast)
- Wyłącz Open Registration (jeśli nie jest absolutnie konieczne).
- Ogranicz dostęp do Gogs: VPN / allowlista IP / reverse proxy z ACL, minimum ekspozycji publicznej.
- Jeśli możesz: czasowo zablokuj lub ogranicz operacje zapisu przez API (w tym PutContents) na brzegu (proxy/WAF) — z uwzględnieniem, że może to uderzyć w legalne integracje.
2) Remediacja (patch lub backport)
- Jeśli masz możliwość utrzymania własnej paczki: rozważ wdrożenie poprawek z upstream (walidacja po
EvalSymlinks/ blokada ścieżek „uciekających” poza repo) jako hotfix do czasu oficjalnego wydania. - Monitoruj stan advisory i wydań; CVE obejmuje wersje ≤ 0.13.3 wg GitHub Advisory.
3) Detekcja kompromitacji (logi + artefakty)
- W logach aplikacji/reverse proxy szukaj nietypowego użycia PutContents API (skoki wolumenu, nietypowe ścieżki, serie zapytań PUT).
- Przeskanuj repozytoria pod kątem:
- repo z losowymi 8-znakowymi nazwami tworzonymi w krótkim oknie czasu,
- obecności symlinków prowadzących poza repo.
- Sprawdź pliki
.git/configpod kątem podejrzanych wpisów (zwłaszczasshCommand) i przejrzyj, czy na serwerze nie pojawiły się dodatkowe binaria/usługi utrzymujące dostęp.
4) Reakcja po incydencie
Jeżeli instancja była publiczna i nie masz pewności, czy doszło do nadużyć:
- potraktuj host jako potencjalnie przejęty,
- rotuj sekrety (tokeny, klucze deploy, integracje),
- przeprowadź izolację i analizę (EDR / forensics), zanim przywrócisz usługę do Internetu.
5) Kontekst regulacyjny (dlaczego to pilne)
CISA wymaga od FCEB wdrożenia działań do 2 lutego 2026, co zwykle koreluje z realnym ryzykiem i dostępnością działających łańcuchów ataku w „dzikiej” eksploatacji.
Różnice / porównania z innymi przypadkami (jeśli dotyczy)
Ten przypadek jest dobrym przykładem „patch bypass”:
- wcześniejsza łatka (CVE-2024-55947) zaadresowała traversal na poziomie stringów ścieżek,
- ale brak walidacji po rozwinięciu symlinków pozostawił furtkę, którą da się zautomatyzować w atakach masowych.
To częsty wzorzec także w innych produktach: „zapis pliku + niedoszacowanie symlinków / canonicalization” kończy się arbitrary file write, a to bardzo często jest już tylko krok od RCE.
Podsumowanie / kluczowe wnioski
- CVE-2025-8110 to realnie wykorzystywana podatność w Gogs, umożliwiająca arbitrary file write → RCE przez symlinki i PutContents API.
- Priorytetem jest odcięcie ekspozycji (VPN/allowlista), wyłączenie otwartej rejestracji i wdrożenie poprawek/mitigacji najszybciej jak to możliwe.
- Dla instancji internet-facing warto równolegle uruchomić threat hunting (PutContents, losowe repo,
.git/config,sshCommand, IOC od C2).
Źródła / bibliografia
- BleepingComputer: CISA orders feds to patch Gogs RCE flaw exploited in zero-day attacks (12 stycznia 2026). (BleepingComputer)
- Wiz Research: Gogs 0-Day Exploited in the Wild (CVE-2025-8110) (10 grudnia 2025). (wiz.io)
- NVD / NIST: wpis CVE-2025-8110 (CVSS v4 8.7 / CVSS v3.1 8.8). (NVD)
- GitHub Advisory Database: GHSA-mq8m-42gh-wq7r / CVE-2025-8110 (status wersji dotkniętych). (GitHub)
- Gogs/GitHub: PR z opisem i mechaniką poprawki (walidacja symlinków w punktach zapisu). (GitHub)