Katalog .git jest publicznie dostępny

Co to jest

Katalog .git/ jest swobodnie dostępny w katalogu głównym Twojej strony. Plik https://example.cz/.git/HEAD zwraca 200 OK — a to oznacza, że dostępna jest również cała reszta.

Dlaczego to problem

.git/ zawiera kompletną historię Twojego projektu. Atakujący pobierze ją w ciągu minuty narzędziem takim jak GitTools/Dumper albo git-dumper. Co dzięki temu uzyska:

Jak to naprawić

Krok 1 — zablokować dostęp

nginx:

location ~ /\.git {
    deny all;
    return 404;
}

Apache (.htaccess):

RedirectMatch 404 /\.git

Sprawdź: curl -I https://example.cz/.git/HEAD powinno zwrócić 404.

Krok 2 — wdrażać bez .git

Długoterminowo .git/ w ogóle nie powinien znajdować się na serwerze produkcyjnym. Lepsze sposoby:

Krok 3 — rotuj sekrety, które kiedykolwiek były w repozytorium

Jeśli ktokolwiek pobrał .git/, ma Twoją historię. Zakładaj, że wszystkie sekrety, które kiedykolwiek zostały commitnięte (nawet usunięte), są mu znane.

Wyszukaj stare sekrety w historii:

# znajdź wszystko, co wygląda jak klucz API
git log -p --all -G '(api[_-]?key|secret|password|token)' | head -200

# albo użyj gitleaks
gitleaks detect --source=.

Co znajdziesz — rotuj. Usunięcie z bieżącego commitu nie wystarczy — w historii pozostaje to na zawsze.

Materiały źródłowe