ایک AI کے ذریعے تیار کردہ کرون جاب (cron job) نے دس سیکنڈ سے بھی کم وقت میں ایک اسٹارٹ اپ کے تمام فعال Stripe سبسکرپشنز کو حذف کر دیا، جس سے کمپنی کی ماہانہ مستقل آمدنی (MRR) گر کر صرف 38 ڈالر رہ گئی۔ یہ واقعہ ظاہر کرتا ہے کہ خطرہ کوڈ لکھنے والے لینگویج ماڈل میں نہیں، بلکہ ڈیپلائمنٹ پائپ لائن (deployment pipeline) میں چھپا ہوتا ہے۔
کیا ہوا
گزشتہ ہفتے BridgeMindAI کی ٹیم جب بیدار ہوئی تو ڈیش بورڈ پر ماہانہ مستقل آمدنی (MRR) صرف 38 ڈالر دکھائی دے رہی تھی۔ ایک AI ماڈل نے کوڈ کی ایک ایسی لائن تیار کی جسے شیڈیولر (scheduler) نے خودکار طریقے سے چلا دیا۔ اس لائن نے ہر کسٹمر ریکارڈ کے لیے Stripe کے subscription-cancellation endpoint کو کال کیا۔ یہ کال سات سیکنڈ میں مکمل ہوئی اور تمام کسٹمر بیس کو ختم کر دیا۔
اسکرپٹ نے خالی ڈیلیشن کیو (deletion queue) کو سب کچھ حذف کرنے کے اشارے کے طور پر غلط پڑھ لیا۔ یہ "empty = all" والا پیٹرن جنریٹیو AI سے بہت پہلے، یعنی 1980 کی دہائی سے ہی پروڈکشن کوڈ میں موجود ہے۔
ماڈل قصوروار کیوں نہیں ہے
لوگوں نے فوری طور پر AI ماڈل کو ناقابلِ اعتبار قرار دے کر اس پر الزام لگا دیا۔ ماڈل کو تبدیل کرنے سے بھی یہ تباہی نہیں رکتی کیونکہ خامی انسانی طور پر لکھی گئی منطق (logic) میں تھی، نہ کہ کسی ہالوسینیشن (hallucination) یا تعصب میں۔
اصل ناکامیاں ساختیاتی (architectural) تھیں:
- اسکرپٹ میں ایک لائیو پروڈکشن Stripe API key محفوظ تھی جو سبسکرپشنز منسوخ کر سکتی تھی۔
- یہ بغیر کسی رن ٹائم نگرانی (runtime supervision) کے چلا۔
- کوڈ کی تیاری اور اس کے عمل درآمد کے درمیان کوئی انسانی چیک پوائنٹ موجود نہیں تھا۔
ان خامیوں کی وجہ سے ایک معمولی بگ (bug) نے چند سیکنڈوں میں آمدنی کا ذریعہ تباہ کر دیا۔
کسی بھی خود مختار پائپ لائن کے لیے تین حفاظتی سوالات
کون سے آپریشنز ناقابلِ واپسی (irreversible) ہیں؟ سبسکرپشن منسوخ کرنا، ریکارڈ حذف کرنا، یا ریفنڈ جاری کرنا ایسی چیزیں ہیں جنہیں واپس نہیں لیا جا سکتا۔ انہیں صرف پڑھنے والے (read-only) سوالات کے مقابلے میں زیادہ تحفظ کی ضرورت ہوتی ہے۔
ایجنٹ کے پاس کون سے کریڈنشلز (credentials) ہیں؟ کسی خود مختار عمل کو Stripe کی ماسٹر کی (master key) دینا اسے غیر محدود طاقت دے دیتا ہے۔ "کم سے کم مراعات" (least-privilege) کے اصول پر عمل کریں: ایسی اسکوپڈ کیز (scoped keys) استعمال کریں جو صرف مطلوبہ کام انجام دے سکیں۔
انسانی چیک پوائنٹ کہاں ہے؟ صرف کوڈ ریویو کافی نہیں ہے۔ کوڈ کی تیاری کے بعد اور کسی بھی تباہ کن عمل سے پہلے ایک گیٹ (gate) لگائیں۔
عملی حفاظتی اقدامات
- Dry-run گیٹ – کسی بھی ڈیلیٹ یا کینسل کال سے پہلے، مطلوبہ اہداف (targets) کو لاگ (log) کریں۔ اگر فہرست خالی ہو یا غیر معمولی طور پر بڑی ہو، تو عمل روک دیں اور کسی انسان کو الرٹ کریں۔
- اسکوپڈ کریڈنشلز (Scoped credentials) – ڈیفالٹ کے طور پر ریڈ-اونلی (read-only) کیز استعمال کریں۔ جب کسی کام کے لیے سبسکرپشن منسوخ کرنا ضروری ہو، تو ایک محدود کی (restricted key) بنائیں جو ایک وقت میں صرف ایک کسٹمر آئی ڈی پر عمل کر سکے۔
- ہیومن ان دی لوپ پرامپٹ (Human-in-the-loop prompt) – کسی چینل (مثلاً Slack) پر ایک مختصر پیغام بھیجیں جیسے کہ "میں 47 سبسکرپشنز منسوخ کرنے والا ہوں۔ کیا میں تصدیق کروں؟" اس کی لاگت نہ ہونے کے برابر ہے، لیکن حفاظتی فائدہ بہت بڑا ہے۔
یہ اقدامات اس بات سے قطع نظر کام کرتے ہیں کہ کوڈ کون سا ماڈل لکھ رہا ہے، کیونکہ یہ جنریٹر کے بجائے ایگزیکیوشن انوائرمنٹ (execution environment) کا تحفظ کرتے ہیں۔
خود مختار ایجنٹس کے لیے پروڈکشن چیک لسٹ
- ہر آپریشن کو read، reversible، یا irreversible کے طور پر درجہ بندی کریں۔
- تمام irreversible اقدامات کے لیے واضح انسانی منظوری درکار کریں۔
- کریڈنشلز کو صرف کام کے لیے درکار کم سے کم اجازتوں تک محدود رکھیں۔
- ان لوپس (loops) پر سائز کی حد مقرر کریں جو ریکارڈز کو حذف یا تبدیل کرتے ہیں۔
- ایجنٹس کو پہلے ایک ایسے سینڈ باکس (sandbox) میں چلائیں جو پروڈکشن ڈیٹا کی عکاسی کرتا ہو؛ لائیو ڈیٹا کو چھونے سے پہلے نتیجے کی تصدیق کریں۔
- عمل درآمد سے پہلے ایجنٹ کے منصوبے کو سادہ زبان میں لاگ کریں تاکہ ریویور ایک نظر میں مقصد کو سمجھ سکے۔
اس چیک لسٹ پر عمل کرنے سے "ایک بار چلاؤ اور بھول جاؤ" والا اسکرپٹ ایک کنٹرول شدہ ورک فلو میں بدل جاتا ہے جسے آڈٹ کیا جا سکتا ہے اور اگر کچھ غلط لگے تو روکا جا سکتا ہے۔
سبق واضح ہے: عمل پر بھروسہ کریں، ماڈل پر نہیں۔
