Adresář .git je veřejně dostupný

Co to je

Adresář .git/ je v kořeni vašeho webu volně dostupný. Soubor https://example.cz/.git/HEAD vrací 200 OK — a to znamená, že je dostupný i celý zbytek.

Proč je to problém

.git/ obsahuje kompletní historii vašeho projektu. Útočník ji během minuty stáhne nástrojem jako GitTools/Dumper nebo git-dumper. Co tím získá:

Jak to opravit

Krok 1 — zablokovat přístup

nginx:

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

Apache (.htaccess):

RedirectMatch 404 /\.git

Ověřte: curl -I https://example.cz/.git/HEAD má vrátit 404.

Krok 2 — deployovat bez .git

Dlouhodobě by .git/ neměl vůbec na produkčním serveru být. Lepší cesty:

Krok 3 — rotujte secrets, které kdy byly v repozitáři

Pokud kdokoliv stáhl .git/, má vaši historii. Předpokládejte, že všechny secrets, které kdy byly commitnuté (i smazané), znají.

Vyhledejte staré secrets v historii:

# najít cokoliv, co vypadá jako API klíč
git log -p --all -G '(api[_-]?key|secret|password|token)' | head -200

# nebo použijte gitleaks
gitleaks detect --source=.

Co najdete — rotovat. Smazat z aktuálního commitu nestačí — v historii to zůstává navždy.

Reference