1,033 aktywne klucze tajne Stripe zostały ujawnione u 669 dostawców po tym, jak pliki .env i logi debugowania pozostały dostępne w publicznym internecie. Klucze te pozwalają każdemu na tworzenie płatności, pobieranie faktur i pozyskiwanie danych klientów – to naruszenie, które może w kilka minut opróżnić portfele i zniszczyć reputację.

Co spowodowało wyciek

Programiści rutynowo przechowują dane konfiguracyjne – hasła do baz danych, tokeny API i klucze tajne Stripe – w pliku o nazwie .env. Plik ten znajduje się obok kodu źródłowego i jest odczytywany w czasie wykonywania programu, aby trzymać sekrety poza bazą kodu. Praktyka ta działa tylko wtedy, gdy serwer nigdy nie serwuje plików zaczynających się od kropki. W tym przypadku źle skonfigurowane serwery WWW (zarówno Nginx, jak i Apache) pozwalały na żądania dotyczące „/.env”, „/.env.example”, „/.git/HEAD” oraz niestandardowego punktu końcowego „/debug”, zwracając surowy plik ze statusem 200 OK.

Wyciek nie był spowodowany podatnością w platformie Stripe ani błędem w konkretnej wtyczce e-commerce. Było to czyste wystawienie na widok publiczny plików, które powinny pozostać niewidoczne dla świata.

Dlaczego to ujawnienie jest istotne

Klucz tajny Stripe jest w rzeczywistości hasłem głównym do systemu płatności sprzedawcy. Każdy, kto go posiada, może:

  • Tworzyć dowolne płatności na zapisanych kartach
  • Pobierać faktury i historię wypłat
  • Pozyskiwać dane osobowe – imiona, adresy e-mail, numery telefonów, adresy domowe, adresy IP
  • Realizować kody promocyjne na darmowe lub przecenione zakupy

Wyciekły zbiór danych zawierał wszystkie powyższe elementy, a także szczegóły wypłat, które ujawniają, ile zarobił każdy z dostawców. Dla firmy bezpośrednim ryzykiem są oszukańcze transakcje generujące chargebacki, utrata zaufania klientów oraz potencjalne kary na mocy PCI-DSS, RODO lub innych przepisów o ochronie danych. Długoterminowy koszt może być znacznie wyższy: koszty prawne, wydatki na naprawę szkód oraz uszkodzona marka, która może nigdy nie odzyskać dawnej pozycji.

Szybki test: czy Twój plik .env jest wystawiony?

Otwórz terminal i zastąp yourdomain.com własną nazwą hosta:

for p in "/.env" "/.env.example" "/.git/HEAD" "/debug"; do
  echo -n "$p -> "
  curl -s -o /dev/null -w "%{http_code}\n" "https://yourdomain.com$p"
done

Każda linia powinna zwrócić 403 (forbidden) lub 404 (not found). Odpowiedź 200 oznacza, że plik jest publicznie czytelny – jest to krytyczny incydent bezpieczeństwa, który wymaga natychmiastowej uwagi.

Natychmiastowe kroki naprawcze

1. Zablokuj pliki z kropką (dotfiles) na serwerze WWW

  • Nginx – dodaj blok location, który odrzuca wszelkie żądania plików zaczynających się od kropki.
  • Apache – użyj dyrektywy FilesMatch w pliku .htaccess, aby zwracać błąd 403 dla plików z prefiksem kropki.

2. Wzmocnij swój przepływ pracy w Docker

  • Dodaj .env do .dockerignore, aby plik nigdy nie został skopiowany do obrazu.
  • Unikaj używania instrukcji COPY dla jakichkolwiek plików zawierających sekrety.

3. Przekręć (rotate) każdy skompromitowany klucz

  • Zaloguj się do Stripe Dashboard → Developers → API keys.
  • Wygeneruj nowy klucz tajny i natychmiast unieważnij stary.

4. Stosuj klucze o najniższych uprawnieniach

  • Przestań używać jednego klucza tajnego do wszystkich operacji.
  • Twórz klucze ograniczone (restricted keys), które pozwalają tylko na wymagane działania – np. usługa checkout potrzebuje uprawnień do tworzenia payment intents, ale nie do dokonywania zwrotów czy przeglądania wypłat.

5. Usuń każdą kopię starego klucza

  • Przeskanuj logi CI/CD, artefakty budowania i archiwa kopii zapasowych.
  • Uruchom narzędzia do skanowania sekretów, takie jak Gitleaks lub TruffleHog, w historii swojego Gita.

Wyciekły klucz nie znika po usunięciu pliku z serwera; pozostaje na zawsze w rękach każdego, kto go pobrał. Rotacja to jedyny sposób na sprawienie, by skradzione dane stały się bezużyteczne.

Więcej niż tylko naprawa: budowanie bezpieczniejszego potoku (pipeline)

  • Automatyczne skanowanie – zintegruj wykrywanie sekretów z każdym pull requestem i zadaniem CI.
  • Zarządzanie konfiguracją – przechowuj sekrety w dedykowanym sejfie (np. HashiCorp Vault, AWS Secrets Manager) i wstrzykuj je w czasie wykonywania (runtime), zamiast polegać na plikach statycznych.
  • Przeglądy uprawnień – okresowo audytuj, które klucze Stripe są aktywne i jakie posiadają uprawnienia.

Praktyki te zmniejszają ryzyko, że pojedynczy źle skonfigurowany serwer ujawni całą infrastrukturę płatności.

Na co zwrócić uwagę w przyszłości

Społeczność bezpieczeństwa już teraz poszukuje dodatkowych ujawnionych kluczy, stosując tę samą metodologię. Spodziewaj się kolejnych informacji, gdy automatyczne skanery będą przeszukiwać sieć w poszukiwaniu plików „/.env” zawierających tokeny Stripe. Stripe może wydać dodatkowe wytyczne dotyczące częstotliwości rotacji kluczy i zalecić stosowanie kluczy ograniczonych do operacji wysokiego ryzyka.

Podsumowanie

Jeśli dotfile można pobrać za pomocą przeglądarki, Twój system płatności jest już skompromitowany – zablokuj plik, zrotuj klucz i przeprojektuj workflow obsługi sekretów, zanim oszustwa uderzą w Twój rejestr.