AI کوڈنگ اسسٹنٹ جیسے کہ Claude Code، Cursor اور Grok Build کسی بھی غیر معتبر (untrusted) ریپوزٹری کو کھولتے ہی، بغیر کسی کلک یا پرامپٹ کے، من مانے کمانڈز (arbitrary commands) چلا سکتے ہیں۔ یہ خامی اس طریقے سے پیدا ہوتی ہے جس کے ذریعے یہ ٹولز کسی پروجیکٹ کی فائلوں کو اسکین کرنے کے لیے Git کے core.fsmonitor فیچر کو استعمال کرتے ہیں۔

یہ مسئلہ اب کیوں اہم ہے

ڈویلپرز کوڈ تجویز کرنے، فنکشنز کو ریفیکٹر کرنے، یا مکمل ماڈیولز لکھنے کے لیے تیزی سے AI ایجنٹس پر انحصار کر رہے ہیں۔ ان ایجنٹس کو ورک اسپیس کا فوری جائزہ لینے کی ضرورت ہوتی ہے، اس لیے وہ پس منظر میں git status چلاتے ہیں۔ جب Git کسی ریپوزٹری کی .git/config فائل کو پڑھتا ہے، تو core.fsmonitor کو دی گئی کوئی بھی ویلیو ایک شیل کمانڈ کے طور پر سمجھی جاتی ہے جسے Git چلا دے گا۔ ایک بدنیتی پر مبنی حملہ آور اس کنفیگ انٹری میں ایک تیار کردہ کمانڈ رکھ سکتا ہے، اور AI کی بیک گراؤنڈ Git کال صارف کے کوڈ کی ایک لائن ٹائپ کرنے سے پہلے ہی اسے ٹرگر کر دے گی۔

یہ کوڈ ڈویلپر کے اپنے اختیارات (privileges) کے ساتھ چلتا ہے، اور اس سینڈ باکس (sandbox) کو بائی پاس کر دیتا ہے جس میں AI ایجنٹ عام طور پر کام کرتا ہے۔ عملی طور پر، ایک متاثرہ ریپوزٹری میلویئر انسٹال کر سکتی ہے، ڈیٹا چوری (exfiltrate credentials) کر سکتی ہے، یا سورس فائلوں کو تبدیل کر سکتی ہے، جبکہ ڈویلپر یہ سمجھ رہا ہوتا ہے کہ اسسٹنٹ محض تجاویز دے رہا ہے۔

حملہ کیسے ہوتا ہے

  1. تیاری (Preparation) – ایک حملہ آور ایسی ریپوزٹری بناتا ہے جس کی .git/config میں core.fsmonitor = /path/to/malicious/script جیسی لائن موجود ہو۔
  2. ڈیلیوری (Delivery) – ریپوزٹری کو ایک zip فائل کے طور پر دیا جاتا ہے، USB اسٹک سے کاپی کیا جاتا ہے، شیئرڈ ڈرائیو کے ذریعے سنک کیا جاتا ہے، یا کسی اور طریقے سے متاثرہ مشین پر رکھا جاتا ہے جس میں .git فولڈر پہلے سے موجود ہو۔
  3. ٹرگر (Trigger) – ڈویلپر AI سے لیس IDE میں فولڈر کھولتا ہے۔ اسسٹنٹ سیاق و سباق (context) جمع کرنے کے لیے git status چلاتا ہے۔ Git مقامی کنفیگ کو پڑھتا ہے، core.fsmonitor کمانڈ کو چلاتا ہے، اور بدنیتی پر مبنی اسکرپٹ فوری طور پر چل پڑتا ہے۔

ایک سادہ git clone اس خطرے کو ظاہر نہیں کرتا کیونکہ کلون ایک نئی .git ڈائریکٹری بناتا ہے جس میں تبدیل شدہ کنفیگ موجود نہیں ہوتی۔ یہ حملہ صرف اس وقت کام کرتا ہے جب حملہ آور پہلے سے موجود .git فولڈر فراہم کر سکے۔

کیا خطرے میں ہے

  • انفرادی ڈویلپرز کی مشینیں یہ جانے بغیر متاثر ہو سکتی ہیں، اور وہ تمام ڈیٹا کھو سکتے ہیں جس تک AI ایجنٹ رسائی حاصل کر سکتا ہے۔
  • ٹیمیں جو انٹرنل ڈرائیوز یا کنٹریکٹر zip فائلوں کے ذریعے کوڈ شیئر کرتی ہیں، وہ اس حملے (payload) کو بہت سے ورک اسٹیشنز تک پھیلا سکتی ہیں۔
  • ٹول وینڈرز کو ساکھ کے نقصان کا سامنا کرنا پڑ سکتا ہے اگر صارفین اس خلاف breach کو بنیادی Git انٹریکشن کے بجائے AI اسسٹنٹ کا نتیجہ قرار دیں۔

چونکہ بدنیتی پر مبنی کمانڈ صارف کے حقوق و اختیارات حاصل کر لیتی ہے، اس لیے یہ کسی بھی ایسی فائل کو تبدیل کر سکتی ہے جسے ڈویلپر تبدیل کر سکتا ہے، بشمول SSH keys، بلڈ اسکرپٹس، یا ڈیپلائمنٹ کریڈنشلز۔

بچاؤ کے اقدامات جو ڈویلپرز آج کر سکتے ہیں

  • مقامی Git سیٹنگز پر بھروسہ نہ کریں۔ ہر بار جب کوئی AI اسسٹنٹ پروجیکٹ کے بارے میں معلومات حاصل کرتا ہے، تو ریپوزٹری کی کنفیگ گلوبل ویلیوز پر فوقیت (override) رکھتی ہے۔

  • اسسٹنٹ کے ساتھ فولڈر کھولنے سے پہلے core.fsmonitor انٹری کا معائنہ کریں:

    git config --get core.fsmonitor
    

    اگر کوئی بھی ویلیو نظر آئے، تو اسے مشکوک سمجھیں۔

  • اس انٹری کو اس طرح ختم کریں:

    git config --local --unset core.fsmonitor
    
  • دیگر پرخطر کیز (keys) کو چیک کریں جنہیں Git چلا سکتا ہے: hooksPath, sshCommand, pager, editor, filter۔ یہ تصدیق کرنے کے لیے کہ وہ خالی ہیں، اسی git config --get پیٹرن کا استعمال کریں۔

  • کسی بھی کوڈ کے لیے جسے آپ AI ٹول کو دینا چاہتے ہیں، صاف کلونز (clean clones) کو ترجیح دیں۔ اگر آپ کو کسی zip یا منتقل شدہ فولڈر کے ساتھ کام کرنا ہی پڑے، تو اس کی .git ڈائریکٹری کو حذف کر دیں اور ریپوزٹری کو دوبارہ شروع (re-initialize) کریں، یا پہلے اوپر دیے گئے چیکز کریں۔

ذمہ داری کس پر ہے

یہ کمزوری Claude Code، Cursor یا Grok Build کو چلانے والے لینگویج ماڈلز میں کوئی خامی نہیں ہے؛ بلکہ یہ اس بات کا نتیجہ ہے کہ وہ ٹولز فائل کی معلومات کیسے اکٹھی کرتے ہیں۔ کچھ وینڈرز نے Git کالز کو زیادہ سختی سے سینڈ باکس (sandbox) کرنا شروع کر دیا ہے، لیکن ڈیفالٹ رویہ اب بھی مقامی ریپوزٹری سیٹنگز پر بھروسہ کرتا ہے۔ جب تک صنعت ایک ایسا معیار نہیں اپنا لیتی جو AI ایجنٹ کے ورک اسپیس اسکین کرنے کے دوران ممکنہ طور پر خطرناک کنفیگ انٹریز کو ختم یا نظر انداز کر دے، ڈویلپرز کو آخری دفاعی لائن کے طور پر تیار رہنا ہوگا۔

آگے کیا نظر آئے گا

  • ٹول اپ ڈیٹس جو git status چلانے سے پہلے Git کنفیگریشن کو واضح طور پر صاف (sanitize) کریں۔
  • محفوظ AI-اسسٹڈ ڈویلپمنٹ کے لیے کمیونٹی کی طرف سے تیار کردہ رہنما اصول، جن میں ممکنہ طور پر تجویز کردہ پری فلائٹ چیکس شامل ہوں گے۔
  • سیکیورٹی ریسرچ جو کوڈ ایگزیکیوشن کے قابل مزید Git کنفیگ کیز کو بے نقاب کر سکتی ہے، جس سے اوپر دیے گئے پانچ کے علاوہ چیک لسٹ میں اضافہ ہو سکتا ہے۔

خلاصہ یہ ہے کہ: ایک AI اسسٹنٹ ایک آرام دہ پیئر پروگرامر (pair-programmer) ہو سکتا ہے، لیکن یہ خوشی سے کسی بھی ایسی کمانڈ کو چلا دے گا جو ریپوزٹری کی Git کنفیگ میں چھپی ہوئی ہو۔ اسسٹنٹ کو استعمال کرنے سے پہلے ورک اسپیس کی تصدیق ضرور کریں۔