يمكن اختراق مساعدي البرمجة المدعومين بالذكاء الاصطناعي عبر إدخال خبيث في ملف .git/config يستغل ميزة core.fsmonitor في Git، مما يسمح لمستودع غير موثوق بتنفيذ أوامر على جهاز المطور في اللحظة التي يقوم فيها المساعد بفحص الملفات.
ظهرت هذه الثغرة في العديد من الوكلاء المشهورين — Claude Code، وCursor، وOpenAI Codex، وGoose، وQwen Code، وGrok Build، وHermes. في الوكلاء الذين تم إصلاحهم، لم يعد الاستغلال يعمل؛ أما الآخرون فلا يزالون عرضة للخطر. لا يتطلب الأمر أي نقرات أو مطالبات إضافية، ويتم تشغيل الكود الخبيث بصلاحيات المستخدم نفسه، خارج أي بيئة معزولة (sandbox) قد يوفرها وكيل الذكاء الاصطناعي.
كيف يصل الهجوم إلى المطور
- يقوم مقاول بضغط مشروع وإرساله عبر البريد الإلكتروني.
- يشارك زميل مجلداً على محرك أقراص شبكي.
- يتم تسليم ذاكرة USB تحتوي على قاعدة برمجية.
في كل حالة، يصل المستودع كدليل يحتوي بالفعل على مجلد .git. عندما يفتح مساعد الذكاء الاصطناعي المجلد، فإنه عادةً ما يقوم بتشغيل git status في الخلفية لبناء عرض للكود. يقوم Git بتسريع هذه العملية باستخدام إعداد core.fsmonitor الذي يخبر Git باستدعاء برنامج خارجي لمراقبة نظام الملفات بحثاً عن تغييرات. إذا حدد ملف .git/config الخاص بالمستودع أمراً خبيثاً لـ core.fsmonitor ، فإن Git ينفذه تلقائياً دون استشارة المستخدم.
بما أن الأمر يتم إطلاقه بواسطة Git نفسه، فإنه يرث حقوق المستخدم ويتجاوز أي بيئة معزولة قد يكون قد أعدها أداة الذكاء الاصطناعي. لا يتم تفعيل الاستغلال أثناء عمليات git clone أو git fetch أو git pull العادية؛ بل يتم تفعيله فقط عندما يتم فك ضغط المستودع مع وجود بيانات .git الوصفية مسبقاً.
لماذا تكتسب هذه المشكلة أهمية
يعتمد المطورون بشكل متزايد على مساعدي الذكاء الاصطناعي لاقتراح الإكمال التلقائي، أو إعادة هيكلة الكود، أو إنشاء وحدات برمجية كاملة. تحتاج هذه الأدوات إلى لقطة سريعة لشجرة ملفات المشروع، لذا فهي تستدعي أوامر Git بصمت. إذا تمكن مستودع خبيث من تنفيذ كود في تلك اللحظة، فسيحصل المهاجم على موطئ قدم في محطة عمل المطور دون أي تحذير مرئي. تتراوح الحمولة (payload) المحتملة من سرقة بيانات الاعتماد إلى تثبيت أبواب خلفية مستمرة، كل ذلك بينما يعتقد المستخدم أنه مجرد "يفحص" الكود باستخدام مساعد ذكاء اصطناعي.
كيفية اكتشاف المستودعات المسمومة
قبل تسليم مستودع إلى مساعد ذكاء اصطناعي، قم بتشغيل:
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 لا يحميك. فإعدادات المستودع المحلية تتجاوز دائماً الإعدادات العالمية، لذا يمكن للمستودع الخبيث ببساطة تجاهل القاعدة العالمية.
مشهد الإصلاحات الحالي
- Claude Code – تم الإصلاح (fsmonitor)
- Cursor – تم الإصلاح
- OpenAI Codex – تم الإصلاح
- Goose – تم الإصلاح
- Qwen Code – لم يتم الإصلاح
- Grok Build – لم يتم الإصلاح
- Hermes – لم يتم الإصلاح
يجب على المطورين الذين يستخدمون الوكلاء الذين لم يتم إصلاحهم التعامل مع أي مستودع وارد على أنه خطر محتمل حتى يقوموا إما بتبديل الأدوات أو فرض سياسات Git محلية أكثر صرامة.
وجهة نظر معارضة من مجتمع Git
تُعد ميزة core.fsmonitor في Git ميزة أداء مشروعة وليست خطأً برمجياً. يجادل القائمون على الصيانة بأن المسؤولية تقع على عاتق المستدعين للتحقق من محتويات المستودع قبل استدعاء أوامر Git. يعد تعطيل الميزة عالمياً إجراء تخفيف مباشراً، ولكن كما لوحظ، يمكن للتجاوزات المحلية أن تبطل هذه الحماية. يتركز النقاش الأوسع الآن حول ما إذا كان ينبغي لمساعدي الذكاء الاصطناعي عزل (sandbox) جميع استدعاءات Git الخارجية أو رفض معالجة المستودعات التي تحتوي على خطافات (hooks) مخصصة لـ fsmonitor.
ما يجب مراقبته لاحقاً
- التحديثات من وكلاء الذكاء الاصطناعي الذين لم يتم إصلاحهم — خاصة أي تصريحات بشأن عزل استدعاءات Git.
- التغييرات المحتملة في التعامل الافتراضي لـ Git مع
core.fsmonitorللمجلدات غير الموثوقة. - أدوات الطرف الثالث التي يمكنها تطهير ملف
.git/configالخاص بالمستودع قبل وصوله إلى المساعد.
الخلاصة
يمكن لسطر واحد في ملف إعدادات مخفي أن يحول وسيلة راحة مدعومة بالذكاء الاصطناعي إلى ناقل لتنفيذ التعليمات البرمجية عن بُعد (remote-code-execution). وحتى يتم إصلاح الوكلاء المعرضين للخطر، فإن الممارسة الأكثر أماناً هي تدقيق كل مستودع يصل خارج سير عمل النسخ (clone) القياسي وإزالة أي خطافات core.fsmonitor أو ما شابهها قبل السماح لمساعد الذكاء الاصطناعي بالتعامل مع الكود.
