← Wszystkie porady

Publicznie dostępne repozytorium Git

Co to oznacza

Jeśli katalog .git lub pliki Git (np. .gitignore, .gitmodules) są publicznie dostępne w katalogu głównym Twojej strony, repozytorium kodu źródłowego zostało wdrożone na serwer produkcyjny wraz z metadanymi Git. Możesz to sprawdzić wpisując w przeglądarce twojastrona.pl/.git/HEAD — jeśli zobaczysz treść zamiast błędu 403/404, problem istnieje.

Katalog .git zawiera kompletną historię repozytorium — każdy commit, każdą wersję każdego pliku, konfigurację remote i logi.

Jakie jest ryzyko

  • Pełny dostęp do kodu źródłowego — atakujący może odtworzyć całe repozytorium poleceniem git clone lub pobierając pliki z katalogu .git/objects. Uzyskuje dostęp do aktualnego kodu i całej historii zmian.
  • Wyciek danych wrażliwych z historii — nawet jeśli usunąłeś hasła, klucze API czy tokeny z bieżącego kodu, mogą one nadal istnieć we wcześniejszych commitach.
  • Wyciek wp-config.php — plik konfiguracyjny z danymi do bazy i kluczami bezpieczeństwa jest prawie zawsze w repozytorium.
  • Mapowanie infrastruktury — konfiguracja .git/config może ujawnić adresy serwerów, nazwy użytkowników i strukturę CI/CD.

Jak to naprawić

  1. Zablokuj dostęp natychmiast — na poziomie serwera:
    # .htaccess (Apache)
    <DirectoryMatch "^/.*/\.git">
        Order Deny,Allow
        Deny from all
    </DirectoryMatch>
    
    Nginx:
    location ~ /\.git {
        deny all;
        return 404;
    }
    
  2. Usuń katalog .git z serwera produkcyjnego — jeśli nie zarządzasz stroną przez Git na serwerze:
    rm -rf /sciezka/do/wordpress/.git
    
  3. Jeśli używasz Git do deploymentu — skonfiguruj deploy tak, aby kopiował tylko pliki robocze (bez .git), np. git archive lub rsync z wykluczeniem .git.
  4. Zmień dane wrażliwe — jeśli .git był publiczny, załóż, że wszystkie dane z historii repozytorium zostały skompromitowane. Zmień hasła, klucze API, tokeny i klucze bezpieczeństwa WordPress.