669 وینڈرز سے 1,033 لائیو Stripe secret keys اس وقت ظاہر ہو گئے جب .env فائلیں اور debug logs عوامی انٹرنیٹ پر رسائی کے لیے چھوڑ دیے گئے۔ یہ keys کسی کو بھی چارجز بنانے، انوائسز نکالنے اور صارفین کی تفصیلات حاصل کرنے کی اجازت دیتی ہیں – ایک ایسی خلاف ورزی جو منٹوں میں والٹس خالی کر سکتی ہے اور ساکھ کو تباہ کر سکتی ہے۔
اس لیک (leak) کا سبب کیا تھا
ڈویلپرز معمول کے مطابق کنفیگریشن ڈیٹا – جیسے ڈیٹا بیس پاس ورڈز، API tokens اور Stripe secret keys – کو .env نامی فائل میں محفوظ کرتے ہیں۔ یہ فائل سورس کوڈ کے ساتھ ہوتی ہے اور کوڈ بیس سے رازوں کو دور رکھنے کے لیے رن ٹائم (runtime) پر پڑھی جاتی ہے۔ یہ طریقہ کار صرف اسی صورت میں کام کرتا ہے اگر سرور کبھی بھی ایسی فائلیں فراہم نہ کرے جو ڈاٹ (.) سے شروع ہوتی ہوں۔ اس معاملے میں، غلط طریقے سے کنفیگر کیے گئے ویب سرورز (Nginx اور Apache دونوں) نے “/.env”، “/.env.example”، “/.git/HEAD” اور ایک کسٹم “/debug” اینڈ پوائنٹ کے لیے درخواستوں کو 200 OK اسٹیٹس کے ساتھ اصل فائل واپس کرنے کی اجازت دی۔
یہ لیک Stripe کے پلیٹ فارم میں کسی کمزوری یا کسی مخصوص ای کامرس پلگ ان کے نقص کی وجہ سے نہیں ہوا تھا۔ یہ محض ان فائلوں کا انکشاف تھا جنہیں دنیا کی نظروں سے اوجھل ہونا چاہیے تھا۔
اس انکشاف کی اہمیت کیوں ہے
Stripe secret key درحقیقت کسی مرچنٹ کے پیمنٹ چینل کے لیے ایک ماسٹر پاس ورڈ کی طرح ہے۔ جس کے پاس بھی یہ ہو سکتا ہے:
- محفوظ شدہ کارڈز پر من مانے چارجز بنا سکتا ہے
- انوائسز اور پے آؤٹ (payout) کی ہسٹری حاصل کر سکتا ہے
- ذاتی ڈیٹا نکال سکتا ہے – نام، ای میلز، فون نمبرز، گھر کے پتے، IP ایڈریسز
- مفت یا رعایتی خریداریوں کے لیے پروموشنل کوڈز استعمال کر سکتا ہے
لیک شدہ ڈیٹا سیٹ میں مذکورہ بالا تمام چیزوں کے ساتھ ساتھ پے آؤٹ کی تفصیلات بھی شامل تھیں جو یہ ظاہر کرتی ہیں کہ ہر وینڈر نے کتنا کمایا۔ ایک کاروبار کے لیے فوری خطرہ فراڈ ٹرانزیکشنز ہیں جو چارج بیکس (chargebacks) پیدا کرتی ہیں، صارفین کے اعتماد کا نقصان، اور 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 block شامل کریں جو ڈاٹ سے شروع ہونے والی فائلوں کے لیے کسی بھی درخواست کو مسترد کر دے۔
- Apache – ڈاٹ سے شروع ہونے والی فائلوں کے لیے 403 ریٹرن کرنے کے لیے
.htaccessمیںFilesMatchڈائریکٹو کا استعمال کریں۔
2. اپنے Docker ورک فلو کو مضبوط بنائیں
.envکو.dockerignoreمیں شامل کریں تاکہ فائل کبھی بھی امیج میں کاپی نہ ہو۔- ایسی کسی بھی فائل کے لیے
COPYکی ہدایت استعمال کرنے سے گریز کریں جس میں سیکرٹس (secrets) موجود ہوں۔
3. ہر متاثرہ کی (key) کو تبدیل (rotate) کریں
- Stripe Dashboard → Developers → API keys میں لاگ ان کریں۔
- ایک نئی secret key تیار کریں اور پرانی کو فوری طور پر منسوخ کر دیں۔
4. کم سے کم مراعات والی کیز (least-privilege keys) اپنائیں
- تمام آپریشنز کے لیے ایک ہی secret key استعمال کرنا بند کریں۔
- ایسی محدود (restricted) کیز بنائیں جو صرف ضروری اقدامات کی اجازت دیں – مثال کے طور پر، ایک چیک آؤٹ سروس کو پیمنٹ انٹینٹس (payment intents) بنانے کی اجازت ہونی چاہیے لیکن ریفنڈ جاری کرنے یا پے آؤٹس دیکھنے کی نہیں۔
5. پرانی کی (key) کی ہر کاپی کو ختم کریں
- CI/CD لاگز، بلڈ آرٹفیکٹس اور بیک اپ آرکائیوز کو اسکین کریں۔
- اپنی Git ہسٹری کے خلاف Gitleaks یا TruffleHog جیسے سیکرٹ اسکیننگ ٹولز چلائیں۔
سرور سے فائل ڈیلیٹ کرنے سے لیک شدہ کی (key) غائب نہیں ہو جاتی؛ یہ اس شخص کے پاس ہمیشہ رہتی ہے جس نے اسے ڈاؤن لوڈ کیا ہو۔ چوری شدہ ڈیٹا کو بیکار بنانے کا واحد طریقہ اسے تبدیل (rotation) کرنا ہے۔
حل سے آگے: ایک محفوظ پائپ لائن بنانا
- خودکار اسکیننگ (Automated scanning) – ہر پرل ریکویسٹ (pull request) اور CI جاب میں سیکرٹ ڈیٹیکشن کو شامل کریں۔
- کنفیگریشن مینجمنٹ – سیکرٹس کو ایک مخصوص والٹ (مثلاً HashiCorp Vault، AWS Secrets Manager) میں محفوظ کریں اور اسٹیٹک فائلوں پر انحصار کرنے کے بجائے انہیں رن ٹائم پر انجیکٹ کریں۔
- رسائی کا جائزہ (Access reviews) – وقتاً فوقتاً آڈٹ کریں کہ کون سی Stripe keys فعال ہیں اور ان کے پاس کیا اجازتیں ہیں۔
یہ طریقے اس امکان کو کم کرتے ہیں کہ ایک غلط طریقے سے کنفیگر شدہ سرور پورے پیمنٹ انفراسٹرکچر کو ظاہر کر دے۔
آگے کیا نظر آئے گا
سیکیورٹی کمیونٹی پہلے ہی اسی طریقہ کار کو استعمال کرتے ہوئے مزید ظاہر ہونے والی کیز کی تلاش کر رہی ہے۔ مزید انکشافات کی توقع رکھیں کیونکہ خودکار اسکینرز Stripe tokens پر مشتمل “/.env” فائلوں کے لیے ویب کو کرال (crawl) کر رہے ہیں۔ Stripe کی (key) کی تبدیلی کے وقفے (cadence) پر مزید رہنمائی جاری کر سکتا ہے اور زیادہ خطرے والے آپریشنز کے لیے محدود (restricted) کیز کی سفارش کر سکتا ہے۔
خلاصہ
اگر کوئی ڈاٹ فائل براؤزر کے ذریعے حاصل کی جا سکتی ہے، تو آپ کا ادائیگی کا نظام پہلے ہی خطرے میں ہے – فائل کو بلاک کریں، کی (key) کو تبدیل کریں، اور اس سے پہلے کہ دھوکہ دہی آپ کے لیجر کو متاثر کرے، اپنے سیکرٹ ہینڈلنگ ورک فلو کو دوبارہ ڈیزائن کریں۔
