آپ کا AI کوڈنگ اسسٹنٹ آپ کی نظروں سے اوجھل ہو کر آپ کی SSH keys کو دوبارہ لکھ رہا ہو سکتا ہے۔
Wiz Research نے ایک "GhostApproval" خامی دریافت کی ہے جو ایک بدنیتی پر مبنی project_settings.json سم لنک (symlink) کو پرائیویٹ کیز (private keys) کی طرف اشارہ کرنے کی اجازت دیتی ہے، اور ہر ایکشن کے لیے آنے والا منظوری کا ڈائیلاگ صرف سم لنک کا نام دکھاتا ہے۔ اگر آپ ڈائیلاگ کو منظور کر لیتے ہیں، تو آپ نے ابھی ابھی اسسٹنٹ کو اپنے کریڈنشلز تک غیر محدود رسائی دے دی ہے۔
یہ ایکسپلائٹ (exploit) کیسے کام کرتا ہے
- ایک حملہ آور ریپوزٹری میں project_settings.json نامی فائل شامل کرتا ہے۔
- وہ فائل کوئی عام JSON فائل نہیں ہے؛ یہ ایک سمبولک لنک (symlink) ہے جو صارف کی ~/.ssh/id_rsa (یا اس کے مساوی) پرائیویٹ کی (private key) کی طرف ری ڈائریکٹ کرتی ہے۔
- جب ڈویلپر AI اسسٹنٹ سے "workspace سیٹ اپ کرنے" کا کہتا ہے، تو اسسٹنٹ سم لنک کا پیچھا کرتا ہے اور اصل SSH کی فائل میں لکھنے کی تیاری کرتا ہے۔
- جو منظوری کا ڈائیلاگ ظاہر ہوتا ہے اس میں صرف project_settings.json درج ہوتا ہے۔ یہ ڈسک پر موجود اصل پاتھ دکھانے کے لیے سم لنک کو ریزالو (resolve) نہیں کرتا۔
- "Approve" پر کلک کرنے سے اسسٹنٹ کو پرائیویٹ کی میں ترمیم کرنے کی اجازت مل جاتی ہے، جس سے مؤثر طور پر ہر اس سروس پر صارف کی شناخت خطرے میں پڑ جاتی ہے جو اس کی (key) پر بھروسہ کرتی ہے۔
یہ بگ چھ بڑے پیمانے پر استعمال ہونے والے ٹولز میں پایا جاتا ہے: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity اور Windsurf۔ یہ تمام ٹولز ایک ہی گمراہ کن ڈائیلاگ دکھاتے ہیں کیونکہ UI وہی نام دکھاتا ہے جو اسے موصول ہوتا ہے، نہ کہ اصل ہدف (target)۔
ہر ایکشن کے لیے ڈائیلاگ کیوں کافی نہیں ہیں
ہر ایکشن کے لیے منظوری اس مفروضے پر مبنی ہے کہ ایک انسان AI کے ذریعے کیے جانے والے ہر آپریشن کی جانچ کر سکتا ہے۔ عملی طور پر، یہ آپ کو ہر چند سیکنڈ بعد مکمل درست فیصلے کرنے پر مجبور کرتا ہے—ایسا کام جو کوئی بھی ایجنٹ کی رفتار سے زیادہ تیزی سے نہیں کر سکتا۔
کمپنیاں کیا کر رہی ہیں – اور یہ کیوں اہم ہے
- Amazon, Google اور Cursor نے اسے پہلے ہی ٹھیک کر دیا ہے۔
- Anthropic (Claude Code بنانے والا) کا کہنا ہے کہ صارفین کو صرف وہی چیز منظور کرنی چاہیے جسے وہ سمجھتے ہیں۔ یہ سم لنکس کو پہچاننے کے ذہنی بوجھ (cognitive load) کو نظر انداز کرتا ہے اور یہ فرض کرتا ہے کہ صارفین ہر فائل پاتھ کا فوری طور پر آڈٹ کر سکتے ہیں—جو کہ ایک غیر حقیقی توقع ہے۔
- Cursor نے ایک الگ مسئلہ بھی ظاہر کیا ہے، جسے DuneSlide کا نام دیا گیا ہے، جس نے حملہ آوروں کو کسی بھی منظوری کے بغیر مشین پر کوڈ چلانے کی اجازت دی۔ کمپنی نے اس بگ کو پیچ (patch) کر دیا ہے، جو یہ ظاہر کرتا ہے کہ جب اجازت کے چیک کمزور ہوں تو یہ اسسٹنٹ کتنی جلدی حملوں کا ذریعہ (attack vectors) بن سکتے ہیں۔
ردعمل میں یہ فرق ایک گہرا سوال اٹھاتا ہے: کیا سیکیورٹی کو کسی واقعے کے بعد آنے والا ڈائیلاگ ہونا چاہیے، یا ایک پہلے سے طے شدہ حد (boundary) ہونی چاہیے جسے اسسٹنٹ کبھی پار نہ کر سکے؟
اسکوپ شدہ اجازتیں (Scoped permissions): ایک عملی متبادل
ہر فائل آپریشن کے لیے پوچھنے کے بجائے، ڈویلپرز اسسٹنٹ کے چلنے سے پہلے اس کے لیے ایک اسکوپ (scope) مقرر کر سکتے ہیں:
- ایک ڈائریکٹری ٹری (مثلاً
/src) متعین کریں جسے AI پڑھ یا لکھ سکتا ہے۔ - اس ٹری سے باہر کی فائلوں کو چھونے کی کوئی بھی کوشش—جیسے
~/.ssh/id_rsa—آپریٹنگ سسٹم یا سینڈ باکس لیئر (sandbox layer) کے ذریعے بلاک کر دی جاتی ہے۔ - اسکوپ ایک بار قائم کر دیا جاتا ہے، جس سے انسان کو کیے جانے والے فیصلوں کی تعداد کم ہو جاتی ہے اور ساتھ ہی اسسٹنٹ کے اثرات کو بھی محدود رکھا جاتا ہے۔
اسکوپنگ سیکیورٹی ماڈل کو "ہر بار پوچھیں" سے بدل کر "صرف وہی اجازت دیں جس کی ضرورت ہے" میں تبدیل کر دیتی ہے۔ یہ بالکل اسی طرح ہے جیسے کنٹینر رن ٹائمز اور موبائل OS ایپلی کیشنز کو سینڈ باکس میں رکھتے ہیں، تاکہ کچھ غلط ہونے کی صورت میں نقصان کو محدود رکھا جا سکے۔
آگے کیا نظر رکھنا ہے
- کمپنیوں کی جانب سے اپ ڈیٹس: متاثرہ چھ ٹولز کے اپ ڈیٹ نوٹس پر نظر رکھیں۔
خلاصہ
GhostApproval ایکسپلائٹ ثابت کرتا ہے کہ ایک پاپ اپ ڈائیلاگ پر بھروسہ کرنا سیکیورٹی کا غلط احساس دلاتا ہے۔ جب تک ہر AI کوڈنگ اسسٹنٹ سم لنکس کو ریزالو (resolve) نہیں کرتا اور مکمل پاتھ نہیں دکھاتا، ڈویلپرز کو اسکوپ شدہ رائٹ پرمیشنز (scoped write permissions) نافذ کرنی چاہئیں—یعنی اسسٹنٹ کے شروع کرنے سے پہلے اسے بالکل واضح طور پر بتانا چاہیے کہ وہ کہاں کام کر سکتا ہے۔ یہ سادہ سی تبدیلی کلک کی تھکن (click-fatigue) پیدا کیے بغیر حملوں کی سب سے خطرناک قسم کو روک دیتی ہے۔
ماخذ: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1
