Ujawniony plik .env — 30-minutowy plan reakcji na incydent | Scanthra

Scanthra · 6 min czytania · Zaktualizowano Maj 2026

Maj 2026
TL;DR: Jeśli https://twojastrona.pl/.env zwraca twoje klucze API, hasło do bazy danych i dane logowania SMTP, potraktuj to jak aktywny atak — nawet jeśli nikt jeszcze z nich nie skorzystał. Zmień wszystkie klucze, sprawdź logi, a potem zablokuj ścieżkę. Zaplanuj 30 minut skupionej pracy i kilka dni działań następczych.

Dlaczego ujawniony plik .env jest poważnym problemem

Plik .env zazwyczaj zawiera:

Automatyczne skanery internetu, takie jak Shodan, BinaryEdge i dziesiątki botnetów zbierających dane logowania, stale odpytują /.env na milionach hostów. Jeśli twój plik jest publiczny, przyjmij, że ktoś już go odczytał. Koszt zmiany kluczy jest dużo niższy niż koszt wycieku danych.

Krok 1 — Zmień każdy sekret w pliku

Otwórz plik (lub jego kopię zapasową) i dla każdego wpisu:

Użyj menedżera haseł lub managera sekretów (AWS Secrets Manager, Doppler, 1Password, Bitwarden) do wygenerowania nowych wartości. Nigdy nie używaj ponownie żadnego ze starych sekretów.

Krok 2 — Sprawdź, czy skradzione klucze były użyte

Zanim zapomnisz starych kluczy, sprawdź, czy ktoś z nich skorzystał, gdy były publicznie dostępne:

Jeśli znajdziesz coś podejrzanego: to potwierdzony incydent — eskaluj go, zapisz informacje, postępuj zgodnie ze swoim planem reagowania na incydenty i powiadom klientów, jeśli ich dane osobowe są zagrożone. Podmioty objęte zakresem NIS2 (dyrektywa UE o cyberbezpieczeństwie) muszą złożyć wczesne ostrzeżenie w ciągu 24 godzin.

Krok 3 — Trwale zablokuj ścieżkę

Ujawniony plik prawdopodobnie znajdował się w katalogu głównym aplikacji, bo katalog publiczny frameworka jest o jeden poziom za wysoko. Dwie warstwy ochrony są lepsze niż jedna:

Przenieś plik poza katalog publiczny:

mkdir /etc/myapp
mv /var/www/myapp/.env /etc/myapp/.env
chmod 600 /etc/myapp/.env
chown www-data:www-data /etc/myapp/.env

Zaktualizuj aplikację, żeby czytała z nowej ścieżki.

I zablokuj pliki ukryte na serwerze www:

# nginx
location ~ /\.(?!well-known) { deny all; return 404; }
# Apache
<FilesMatch "^\.">
  Require all denied
</FilesMatch>

Krok 4 — Zadbaj, żeby to się nie powtórzyło

A co z historią Gita?

Jeśli plik .env był kiedykolwiek commitowany do publicznego repozytorium — choćby chwilowo, choćby lata temu — przyjmij, że sekrety wyciekły. Wyszukiwarka GitHub i tysiące narzędzi do zbierania danych treningowych już to mają. git filter-repo przepisuje historię, ale nadal musisz zmienić wartości, bo kopie istnieją poza twoją kontrolą.

Nudna lekcja

Ujawniony plik .env to jedno z najczęstszych wykryć Scanthra w projektach PHP, Laravel, Django, Rails i Node. Niemal zawsze przyczyną jest: „Postąpiłem(-am) zgodnie z tutorialem, który umieścił .env w katalogu projektu i zapomniałem(-am), że serwer serwuje stamtąd pliki statyczne." Przeniesienie pliku o jeden katalog wyżej — i dodanie reguły blokującej pliki ukryte — zamyka całą tę klasę problemu.

Jak Scanthra to wykrywa

Nasz moduł Ukryte pliki sprawdza wybraną listę ścieżek, w tym .env, .env.local, .env.production, .git/config, /backup.sql, /dump.sql, /wp-config.php.bak i inne. Uzupełniamy to sprawdzeniem nagłówków plików (ZIP, gzip, SQLite), żeby odróżnić prawdziwą kopię zapasową od strony błędu 404 zwracającej kod 200.

Chcesz wiedzieć, czy twoja strona ma ten problem?

Scanthra przeprowadza przyjazną, pasywną kontrolę i wysyła ci zrozumiały raport PDF na e-mail.

Sprawdź swoją stronę za darmo