۱,۰۳۳ کلید مخفی فعال Stripe از ۶۶۹ فروشنده در پی در دسترس قرار گرفتن فایل‌های .env و لاگ‌های دیباگ در اینترنت عمومی، لو رفت. این کلیدها به هر کسی اجازه می‌دهند تراکنش ایجاد کند، فاکتورها را استخراج کند و جزئیات مشتریان را جمع‌آوری کند – رخنه امنیتی که می‌تواند در عرض چند دقیقه کیف پول‌ها را خالی کرده و اعتبار کسب‌وکارها را نابود کند.

عامل بروز این نشت اطلاعات چه بود

توسعه‌دهندگان به‌طور معمول داده‌های پیکربندی – مانند رمز عبور پایگاه داده، توکن‌های API و کلیدهای مخفی Stripe – را در فایلی به نام .env ذخیره می‌کنند. این فایل در کنار کد منبع قرار دارد و در زمان اجرا (runtime) خوانده می‌شود تا اسرار از بدنه کد جدا بمانند. این روش تنها زمانی کار می‌کند که سرور هرگز فایل‌هایی را که با نقطه شروع می‌شوند، ارائه ندهد. در این مورد، پیکربندی اشتباه وب‌سرورها (هم Nginx و هم Apache) اجازه داد تا درخواست‌ها برای “/.env”، “/.env.example”، “/.git/HEAD” و یک نقطه پایانی (endpoint) سفارشی “/debug” با وضعیت 200 OK فایل خام را بازگردانند.

این نشت ناشی از آسیب‌پذیری در پلتفرم Stripe یا نقص در یک پلاگین خاص تجارت الکترونیک نبود؛ بلکه صرفاً در معرض قرار گرفتن فایل‌هایی بود که باید برای دنیا نامرئی می‌بودند.

چرا این افشا اهمیت دارد

یک کلید مخفی Stripe در واقع یک رمز عبور اصلی (master password) برای مسیر پرداخت یک فروشنده است. هر کسی که آن را در اختیار داشته باشد می‌تواند:

  • تراکنش‌های دلخواه روی کارت‌های ذخیره‌شده ایجاد کند
  • فاکتورها و تاریخچه پرداخت‌ها را بازیابی کند
  • داده‌های شخصی – نام‌ها، ایمیل‌ها، شماره تلفن‌ها، آدرس‌های منزل، آدرس‌های IP – را استخراج کند
  • کدهای تخفیف را برای خریدهای رایگان یا با تخفیف استفاده کند

مجموعه داده‌های لو رفته شامل تمام موارد فوق، به علاوه جزئیات پرداخت‌ها بود که نشان می‌داد هر فروشنده چقدر درآمد داشته است. برای یک کسب‌وکار، خطر فوری شامل تراکنش‌های کلاهبردارانه است که منجر به بازگشت وجه (chargeback)، از دست رفتن اعتماد مشتری و جریمه‌های احتمالی تحت قوانین 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 (ممنوع) یا 404 (یافت نشد) را برگرداند. پاسخ 200 به این معنی است که فایل به‌صورت عمومی قابل خواندن است – یک حادثه امنیتی بحرانی که نیاز به توجه فوری دارد.

مراحل اصلاح فوری

۱. مسدود کردن فایل‌های نقطه-دار (dotfiles) در وب‌سرور

  • Nginx – یک بلوک location اضافه کنید که هرگونه درخواست برای فایل‌هایی که با نقطه شروع می‌شوند را رد کند.
  • Apache – از دستور FilesMatch در .htaccess استفاده کنید تا برای فایل‌هایی که با نقطه شروع می‌شوند، وضعیت 403 بازگردانده شود.

۲. مقاوم‌سازی گردش کار Docker

  • فایل .env را به .dockerignore اضافه کنید تا این فایل هرگز در ایمیج کپی نشود.
  • از دستور COPY برای

اگر یک dotfile از طریق مرورگر قابل دسترسی باشد، سیستم پرداخت شما از همین حالا به خطر افتاده است – پیش از آنکه کلاهبرداری به دفتر کل (ledger) شما وارد شود، فایل را مسدود کنید، کلید را تغییر دهید (rotate) و گردش کار مدیریت اسرار (secret-handling) خود را بازطراحی کنید.