AI کوڈ اسسٹنٹ کو ایک بدنیتی پر مبنی .git/config انٹری کے ذریعے ہائی جیک کیا جا سکتا ہے جو Git کے core.fsmonitor فیچر کا فائدہ اٹھاتی ہے، جس سے ایک غیر قابل اعتماد ریپوزٹری کو اس لمحے کمانڈز چلانے کی اجازت مل جاتی ہے جب اسسٹنٹ فائلوں کو اسکین کرتا ہے۔

یہ خامی کئی مقبول ایجنٹس میں سامنے آئی ہے—Claude Code، Cursor، OpenAI Codex، Goose، Qwen Code، Grok Build اور Hermes۔ جن ایجنٹس میں پیچ (patch) لگا دیا گیا ہے ان میں یہ ایکسپلائٹ اب کام نہیں کرتا؛ جبکہ باقی اب بھی خطرے میں ہیں۔ اس کے لیے کسی اضافی کلک یا پرامپٹ کی ضرورت نہیں ہوتی، اور بدنیتی پر مبنی کوڈ صارف کے اپنے اختیارات (privileges) کے ساتھ چلتا ہے، اور اس کسی بھی سینڈ باکس (sandbox) سے باہر ہوتا ہے جو AI ایجنٹ فراہم کر سکتا ہے۔

حملہ ڈویلپر تک کیسے پہنچتا ہے

  • ایک ٹھیکیدار پروجیکٹ کو زپ کرتا ہے اور اسے ای میل کر دیتا ہے۔
  • ایک ٹیم ممبر نیٹ ورک ڈرائیو پر فولڈر شیئر کرتا ہے۔
  • کوڈ بیس کے ساتھ ایک USB اسٹک تھما دی جاتی ہے۔

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

چونکہ کمانڈ خود Git کے ذریعے شروع کی جاتی ہے، اس لیے یہ صارف کے حقوق و اختیارات کو اپنا لیتی ہے اور اس کسی بھی سینڈ باکس کو نظر انداز کر دیتی ہے جو AI ٹول نے بنایا ہو۔ یہ ایکسپلائٹ عام git clone، git fetch یا git pull کے دوران فعال نہیں ہوتا؛ یہ صرف اس وقت متحرک ہوتا ہے جب ریپوزٹری کو اس کے .git میٹا ڈیٹا کے ساتھ ان پیک (unpack) کیا جاتا ہے۔

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

ڈویلپرز مکملشنز (completions) تجویز کرنے، کوڈ کو ریفیکٹر کرنے، یا پورے ماڈیولز تیار کرنے کے لیے تیزی سے AI اسسٹنٹ پر انحصار کر رہے ہیں۔ ان ٹولز کو پروجیکٹ کے فائل ٹری کا ایک فوری اسنیپ شاٹ کی ضرورت ہوتی ہے، اس لیے وہ خاموشی سے Git کمانڈز کو کال کرتے ہیں۔ اگر ایک بدنیتی پر مبنی ریپوزٹری اس لمحے کوڈ چلا سکے، تو حملہ آور کسی بھی ظاہری وارننگ کے بغیر ڈویلپر کے ورک اسٹیشن تک رسائی حاصل کر لیتا ہے۔ اس کے ممکنہ نقصانات (payload) کریڈنشلز کی چوری سے لے کر مستقل بیک ڈور (backdoors) انسٹال کرنے تک ہو سکتے ہیں، اور یہ سب اس وقت ہوتا ہے جب صارف سمجھ رہا ہوتا ہے کہ وہ محض AI ہیلپر کے ساتھ کوڈ کو "چیک" کر رہا ہے۔

زہریلی (poisoned) ریپوزٹری کی شناخت کرنا

کسی اسسٹنٹ کو ریپوزٹری دینے سے پہلے، یہ چلائیں:

git config --get core.fsmonitor

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

git config --local --list | grep -Ei 'fsmonitor|hooksPath|sshCommand|pager|editor|filter\.'

اگر آپ کو ایسی انٹریز نظر آئیں جو آپ نے نہیں ڈالی تھیں، تو انہیں اس کے ذریعے صاف کریں:

git config --local --unset core.fsmonitor

نوٹ کریں کہ git config --global core.fsmonitor false سیٹ کرنا آپ کو تحفظ نہیں دیتا۔ مقامی ریپوزٹری کی سیٹنگز ہمیشہ گلوبل سیٹنگز پر فوقیت رکھتی ہیں، اس لیے ایک بدنیتی پر مبنی ریپوزٹری محض گلوبل رول کو نظر انداز کر سکتی ہے۔

موجودہ پیچ (patch) کی صورتحال

  • Claude Code – پیچ شدہ (fsmonitor)
  • Cursor – پیچ شدہ
  • OpenAI Codex – پیچ شدہ
  • Goose – پیچ شدہ
  • Qwen Code – غیر پیچ شدہ
  • Grok Build – غیر پیچ شدہ
  • Hermes – غیر پیچ شدہ

غیر پیچ شدہ ایجنٹس استعمال کرنے والے ڈویلپرز کو کسی بھی آنے والی ریپوزٹری کو ممکنہ طور پر خطرناک سمجھنا چاہیے جب تک کہ وہ یا تو ٹولز تبدیل نہ کر لیں یا سخت تر مقامی Git پالیسیاں نافذ نہ کر لیں۔

Git کمیونٹی کا جوابی نقطہ نظر

Git کا core.fsmonitor ایک جائز کارکردگی کا فیچر ہے، بگ (bug) نہیں ہے۔ برقرار رکھنے والے (maintainers) کا کہنا ہے کہ ذمہ داری ان کالرز کی ہے جو Git کمانڈز چلانے سے پہلے ریپوزٹری کے مواد کی تصدیق کریں۔ اس فیچر کو عالمی سطح پر (globally) غیر فعال کرنا ایک سادہ حل ہے، لیکن جیسا کہ ذکر کیا گیا ہے، مقامی اوور رائڈز (overrides) اس تحفظ کو ختم کر سکتے ہیں۔ اب وسیع بحث اس بات پر مرکوز ہے کہ آیا AI اسسٹنٹ کو تمام بیرونی Git کالز کو سینڈ باکس کرنا چاہیے یا ان ریپوزٹریز کو پروسیس کرنے سے انکار کر دینا چاہیے جن میں کسٹم fsmonitor ہکس (hooks) موجود ہوں۔

آگے کیا نظر رکھنا ہے

  • غیر پیچ شدہ AI ایجنٹس سے اپ ڈیٹس—خاص طور پر Git کالز کو سینڈ باکس کرنے کے بارے میں کوئی بھی بیان۔
  • غیر قابل اعتماد ڈائریکٹریز کے لیے core.fsmonitor کے Git کے ڈیفالٹ ہینڈلنگ میں ممکنہ تبدیلیاں۔
  • تھرڈ پارٹی ٹولز جو کسی اسسٹنٹ تک پہنچنے سے پہلے ریپوزٹری کی .git/config کو صاف (sanitize) کر سکتے ہیں۔

خلاصہ

ایک چھپی ہوئی کنفیگ فائل میں ایک اکیلی لائن AI کی سہولت کو ریموٹ کوڈ ایگزیکیوشن (remote-code-execution) کے ویکٹر میں بدل سکتی ہے۔ جب تک کمزور ایجنٹس کو ٹھیک نہیں کر لیا جاتا، محفوظ ترین طریقہ یہ ہے کہ ہر اس ریپوزٹری کا آڈٹ کیا جائے جو معیاری کلون ورک فلو (clone workflow) سے باہر آتی ہے اور AI اسسٹنٹ کو کوڈ چھونے دینے سے پہلے کسی بھی core.fsmonitor یا اسی طرح کے ہکس کو ہٹا دیا جائے۔