يمكن لمساعدي البرمجة بالذكاء الاصطناعي مثل Claude Code وCursor وGrok Build تنفيذ أوامر عشوائية في اللحظة التي يفتح فيها المطور مستودعًا غير موثوق، دون الحاجة إلى أي نقرة أو مطالبة. ينشأ هذا الخلل من الطريقة التي تستدعي بها هذه الأدوات ميزة core.fsmonitor في Git لمسح ملفات المشروع.

لماذا يكتسب هذا الأمر أهمية الآن

يعتمد المطورون بشكل متزايد على وكلاء الذكاء الاصطناعي (AI agents) لاقتراح الكود، أو إعادة هيكلة الدوال، أو حتى كتابة وحدات برمجية كاملة. يحتاج هؤلاء الوكلاء إلى لقطة سريعة لمساحة العمل، لذا يقومون بتشغيل git status في الخلفية. عندما يقرأ Git ملف .git/config الخاص بالمستودع، يتم التعامل مع أي قيمة مخصصة لـ core.fsmonitor كأمر shell سيقوم Git بتشغيله. يمكن للمهاجم وضع أمر مصمم بعناية في إدخال التكوين هذا، وسيقوم استدعاء Git الذي يتم في الخلفية بواسطة الذكاء الاصطناعي بتشغيله قبل أن يكتب المستخدم سطرًا واحدًا من الكود.

يتم تشغيل الكود بصلاحيات المطور نفسه، مما يتجاوز البيئة المعزولة (sandbox) التي يعمل فيها وكيل الذكاء الاصطناعي عادةً. من الناحية العملية، يمكن للمستودع المخترق تثبيت برامج ضارة، أو تسريب بيانات الاعتماد، أو تعديل ملفات المصدر، كل ذلك بينما يعتقد المطور أن المساعد يقدم اقتراحات فحسب.

كيف يحدث الهجوم

  1. التحضير – ينشئ المهاجم مستودعًا يحتوي ملف .git/config الخاص به على سطر مثل core.fsmonitor = /path/to/malicious/script.
  2. التسليم – يتم تسليم المستودع كملف zip، أو نسخه من ذاكرة USB، أو مزامنته عبر محرك أقراص مشترك، أو وضعه بأي طريقة أخرى على جهاز الضحية مع وجود مجلد .git مسبقًا.
  3. التفعيل – يفتح المطور المجلد في بيئة تطوير (IDE) مدعومة بالذكاء الاصطناعي. يقوم المساعد بتشغيل git status لجمع السياق. يقرأ Git التكوين المحلي، وينفذ أمر core.fsmonitor ، ويتم تشغيل السكربت الخبيث على الفور.

لا يؤدي أمر git clone العادي إلى كشف هذا الخطر لأن عملية الاستنساخ تنشئ دليل .git جديدًا يفتقر إلى التكوين المتلاعب به. يعمل الهجوم فقط عندما يتمكن المهاجم من توفير مجلد .git موجود مسبقًا.

المخاطر المترتبة

  • المطورون الأفراد قد تتعرض أجهزتهم للاختراق دون إدراك ذلك، مما يؤدي إلى فقدان أي بيانات يمكن لوكيل الذكاء الاصطناعي الوصول إليها.
  • الفرق التي تشارك الكود عبر محركات الأقراص الداخلية أو ملفات zip من المتعاقدين قد تنشر الحمولة الضارة عبر العديد من محطات العمل.
  • موردو الأدوات يخاطرون بتضرر سمعتهم إذا أرجع المستخدمون الاختراق إلى مساعد الذكاء الاصطناعي بدلاً من تفاعل Git الأساسي.

بما أن الأمر الخبيث يرث حقوق المستخدم، فيمكنه تعديل أي ملف يمكن للمطور تعديله، بما في ذلك مفاتيح SSH، أو سكربتات البناء، أو بيانات اعتماد النشر.

خطوات التخفيف التي يمكن للمطورين اتخاذها اليوم

  • لا تثق في إعدادات Git المحلية. يتجاوز تكوين المستودع القيم العالمية في كل مرة يستعلم فيها مساعد الذكاء الاصطناعي عن المشروع.

  • افحص إدخال core.fsmonitor قبل فتح مجلد باستخدام مساعد:

    git config --get core.fsmonitor
    

    إذا ظهرت أي قيمة، فتعامل معها على أنها مشبوهة.

  • احذف الإدخال باستخدام:

    git config --local --unset core.fsmonitor
    
  • تحقق من المفاتيح الخطرة الأخرى التي يمكن لـ Git تنفيذها: hooksPath و sshCommand و pager و editor و filter. استخدم نفس نمط git config --get للتحقق من أنها فارغة.

  • فضل عمليات الاستنساخ النظيفة (clean clones) لأي كود تنوي تقديمه لأداة ذكاء اصطناعي. إذا كان لابد من العمل مع ملف zip أو مجلد منقول، فاحذف دليل .git الخاص به وأعد تهيئة المستودع، أو قم بإجراء الفحوصات المذكورة أعلاه أولاً.

أين تقع المسؤولية

الثغرة ليست خللاً في النماذج اللغوية التي تشغل Claude Code أو Cursor أو Grok Build؛ بل هي نتيجة للطريقة التي تجمع بها تلك الأدوات معلومات الملفات. بدأ بعض الموردين في عزل استدعاءات Git بشكل أكثر صرامة، ولكن السلوك الافتراضي لا يزال يثق في إعدادات المستودع المحلية. وإلى أن يتبنى القطاع معيارًا يقوم بإزالة أو تجاهل إدخالات التكوين التي قد تكون خطيرة عندما يقوم وكيل الذكاء الاصطناعي بمسح مساحة العمل، يجب أن يظل المطورون خط الدفاع الأخير.

ما يجب مراقبته لاحقًا

  • تحديثات الأدوات التي تقوم بتطهير تكوين Git صراحةً قبل استدعاء git status.
  • الإرشادات التي يقودها المجتمع للتطوير الآمن بمساعدة الذكاء الاصطناعي، والتي من المرجح أن تشمل فحوصات ما قبل التشغيل الموصى بها.
  • الأبحاث الأمنية التي قد تكشف عن مفاتيح تكوين Git إضافية قادرة على تنفيذ الكود، مما يوسع قائمة التحقق بما يتجاوز المفاتيح الخمسة المذكورة أعلاه.

الخلاصة: يمكن أن يكون مساعد الذكاء الاصطناعي مبرمجًا مساعدًا (pair-programmer) مريحًا، ولكنه سيقوم بكل سرور بتشغيل أي أمر مخفي في تكوين Git الخاص بالمستودع. تحقق من مساحة العمل قبل أن تسمح للمساعد بالتعامل معها.