1 033 активні секретні ключі Stripe були розкриті у 669 вендорів після того, як файли .env та логи налагодження залишилися доступними у відкритому інтернеті. Ці ключі дозволяють будь-кому створювати платежі, отримувати інвойси та збирати дані клієнтів — це порушення може за лічені хвилини спорожнити гаманці та зруйнувати репутацію.

Що спричинило витік

Розробники зазвичай зберігають конфігураційні дані — паролі до баз даних, API-токени та секретні ключі Stripe — у файлі з назвою .env. Цей файл розміщується поруч із вихідним кодом і зчитується під час виконання програми, щоб тримати секрети поза межами коду. Ця практика працює лише в тому випадку, якщо сервер ніколи не видає файли, що починаються з крапки. У цьому випадку неправильно налаштовані вебсервери (як Nginx, так і Apache) дозволяли запити на “/.env”, “/.env.example”, “/.git/HEAD” та спеціальну кінцеву точку “/debug” повертати вміст файлу з статусом 200 OK.

Витік не був спричинений уразливістю платформи Stripe або помилкою в якомусь конкретному плагіні для електронної комерції. Це було звичайне розкриття файлів, які мали бути невидимими для всього світу.

Чому це важливо

Секретний ключ Stripe — це, по суті, майстер-пароль до платіжної інфраструктури мерчанта. Будь-хто, хто володіє ним, може:

  • Створювати довільні платежі за збереженими картками
  • Отримувати інвойси та історію виплат
  • Отримувати персональні дані — імена, електронні адреси, номери телефонів, домашні адреси, IP-адреси
  • Використовувати промокоди для безкоштовних або зі знижкою покупок

Розкритий набір даних містив усе вищеперелічене, а також деталі виплат, які показують, скільки заробив кожен вендор. Для бізнесу безпосереднім ризиком є шахрайські транзакції, що призводять до чарджбеків, втрата довіри клієнтів і потенційні штрафи згідно з PCI-DSS, GDPR або іншими режимами конфіденційності даних. Довгострокові витрати можуть бути набагато вищими: юридичні послуги, витрати на усунення наслідків і пошкоджений бренд, який може ніколи не відновитися.

Швидка перевірка: чи розкритий ваш .env?

Відкрийте термінал і замініть yourdomain.com на назву вашого хоста:

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

Кожен рядок має повертати 403 (forbidden) або 404 (not found). Відповідь 200 означає, що файл доступний для публічного читання — це критичний інцидент безпеки, який потребує негайного втручання.

Негайні кроки для усунення наслідків

1. Блокування dotfiles на рівні вебсервера

  • Nginx — додайте блок location, який забороняє будь-які запити до файлів, що починаються з крапки.
  • Apache — використовуйте директиву FilesMatch у .htaccess, щоб повертати 403 для файлів, що починаються з крапки.

2. Посилення безпеки вашого Docker workflow

  • Додайте .env до .dockerignore, щоб файл ніколи не копіювався в образ.
  • Уникайте використання інструкції COPY для будь-яких файлів, що містять секрети.

3. Ротація кожного скомпрометованого ключа

  • Увійдіть у Stripe Dashboard → Developers → API keys.
  • Згенеруйте новий секретний ключ і негайно анулюйте старий.

4. Використання ключів із мінімальними привілеями

  • Припиніть використовувати один секретний ключ для всіх операцій.
  • Створюйте обмежені ключі (restricted keys), які дозволяють лише необхідні дії — наприклад, сервісу оформлення замовлень потрібен дозвіл на створення payment intents, але не на оформлення повернень або перегляд виплат.

5. Видалення кожної копії старого ключа

  • Проскануйте логи CI/CD, артефакти збірки та архіви резервних копій.
  • Запустіть інструменти сканування секретів, такі як Gitleaks або TruffleHog, для вашої історії Git.

Витік ключа не зникає після видалення файлу з сервера; він назавжди залишається в руках того, хто його завантажив. Ротація — це єдиний спосіб зробити вкрадені дані марними.

Поза межами виправлення: побудова безпечнішого конвеєра

  • Автоматизоване сканування — інтегруйте виявлення секретів у кожен pull request та CI-завдання.
  • Управління конфігураціями — зберігайте секрети у спеціальному сховищі (наприклад, HashiCorp Vault, AWS Secrets Manager) і впроваджуйте їх під час виконання, а не покладайтеся на статичні файли.
  • Перевірка прав доступу — періодично перевіряйте, які ключі Stripe є активними та які дозволи вони мають.

Ці практики знижують шанс того, що один неправильно налаштований сервер зможе розкрити всю платіжну інфраструктуру.

На що звернути увагу далі

Спільнота безпеки вже шукає додаткові розкриті ключі, використовуючи ту саму методологію. Очікуйте на нові витоки, оскільки автоматизовані сканери шукають у мережі файли “/.env”, що містять токени Stripe. Stripe може надати додаткові рекомендації щодо частоти ротації ключів і поради щодо використання обмежених ключів для операцій з високим ризиком.

Висновок

Якщо dotfile можна отримати через браузер, ваша платіжна система вже скомпрометована — заблокуйте файл, змініть ключ і перепроектуйте свій робочий процес обробки секретів, перш ніж шахрайство вдарить по вашому реєстру.