Secrets کا بے قابو پھیلاؤ: ہم نے 412 لیک ہونے والے ٹوکنز کو کیسے ٹھیک کیا

3 مارچ کو رات 2:13 بجے ایک CI پائپ لائن فیل ہو گئی۔ ہمیں 37 ریپوزٹریز میں 412 لیک ہونے والے API ٹوکنز ملے۔ اس غلطی کی وجہ سے 1.2 ملین ڈالر کے ممکنہ ڈیٹا بریچ (breach) کے اخراجات کا خطرہ پیدا ہو گیا۔

زیادہ تر ٹیمیں سمجھتی ہیں کہ Vault ہر مسئلے کا حل ہے۔ حقیقت میں، Vault لیٹنسی (latency) کے لیے سنگل پوائنٹ آف فیلر بن سکتا ہے۔ جب ٹوکنز Vault سے باہر ہوتے ہیں، تو وہ ہارڈ کوڈڈ ویلیوز یا انوائرمنٹ ویری ایبلز کا استعمال کرتے ہیں۔ یہ متبادل طریقے (fallbacks) آڈٹ لاگز میں ظاہر نہیں ہوتے۔

ہمارے میٹرکس اس پھیلاؤ کی قیمت ظاہر کرتے ہیں:

  • عام سیکرٹ ریٹریول (secret retrieval): فی درخواست 48 ms۔
  • لیک کے دوران: فی درخواست 187 ms۔

بلڈ ایجنٹس نے ایک دور دراز Vault کلسٹر سے فی جاب 12 ٹوکنز حاصل کیے۔ اس کی وجہ سے ٹائم آؤٹ (timeouts) کا سامنا کرنا پڑا اور ڈویلپرز کو دستی طور پر تبدیلیوں کو رول بیک کرنے پر مجبور ہونا پڑا۔ لیٹنسی صرف ایک سست عمل نہیں ہے۔ یہ ایک ایسا کاسٹ سینٹر ہے جو کلاؤڈ بلز کو بڑھاتا ہے اور ڈویلپرز کی رفتار کو کم کرتا ہے۔

اسٹیجنگ ریپو (staging repo) میں ایک لیک ہونے والی AWS کی (key) اگر کوئی حملہ آور استعمال کرے تو اس کی قیمت 120 ڈالر فی گھنٹہ ہو سکتی ہے۔ ایک گھنٹے کا غلط استعمال سہ ماہی سیکیورٹی آڈٹ سے بھی زیادہ مہنگا پڑ سکتا ہے۔

اسٹیٹک اسکینرز ہمیں ناکام رہے۔ انہوں نے ہمارے 78% ٹوکنز کو مس کر دیا۔ کیوں؟ کیونکہ وہ ٹوکنز آن دی فلائی (on the fly) تیار کیے گئے تھے اور بلڈ آرٹفیکٹس (build artifacts) میں موجود تھے، نہ کہ سورس کوڈ میں۔ GitHub Actions کے ایک سٹیپ نے ایک ٹوکن کو Docker لیئر میں لکھ دیا۔ اسکینر کو کچھ نظر نہیں آیا، لیکن وہ ٹوکن ہفتوں تک ہماری رجسٹری میں موجود رہا۔

آپ کو صرف اسٹیٹک انسپیکشن کی نہیں، بلکہ رن ٹائم ویزیبلٹی (runtime visibility) کی ضرورت ہے۔

ہم نے اسے ٹھیک کرنے کے لیے ایک Lambda انجن بنایا۔ یہ نئے سیکرٹس کے لیے CloudTrail پر نظر رکھتا ہے اور ان کا ہمارے Vault سے موازنہ کرتا ہے۔ نیا ورک فلو یہ ہے:

  • ویب ہک (webhook) کے ذریعے سیکرٹ کا پتہ لگانا۔
  • میٹا ڈیٹا کے لیے Vault سے کوئری کرنا۔
  • پرووائیڈر API کے ذریعے ٹوکن کو ان ویلیڈیٹ (invalidate) کرنا۔
  • فائل سے سیکرٹ ہٹانے کے لیے ایک PR کھولنا۔
  • اگر یہ CI پاس کر لے تو خودکار طور پر PR کو مرج کرنا۔

اس انجن نے 27 منٹ میں 99.97% کامیابی کی شرح کے ساتھ 412 ٹوکنز کو روٹیٹ (rotate) کیا۔

اب ہم سیکرٹ کی عمر (secret age) کو ٹریک کرتے ہیں۔ اگر کوئی ٹوکن 30 دن سے زیادہ پرانا ہو، تو بلڈ فیل ہو جاتا ہے۔ اس سادہ سے اصول نے ایک سہ ماہی میں نئے لیکس میں 62% کمی کی۔ ہم غیر معمولی استعمال کے پیٹرنز کو نشان زد کرنے کے لیے آئیسولیشن فارسٹ ماڈل (isolation-forest model) بھی استعمال کرتے ہیں۔ اگر کوئی ٹوکن کسی نئے IP سے ظاہر ہوتا ہے، تو سسٹم اسے فوری طور پر روٹیٹ کر دیتا ہے۔

ٹوکنز کو فائلوں کی طرح سمجھنا بند کریں۔ سیکرٹ کی عمر اور ریٹریول لیٹنسی کو کلیدی میٹرکس کے طور پر لیں۔ اگر آپ ایسا کرتے ہیں، تو یہ پھیلاؤ کم ہو جائے گا۔

ماخذ: https://dev.to/isabelle_dubuis_d858453d7/secrets-sprawl-how-we-cleaned-up-412-leaked-tokens-and-stopped-the-latency-bleed-k71

اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi