دستیارهای کد هوش مصنوعی میتوانند از طریق یک ورودی مخرب در .git/config که از ویژگی core.fsmonitor در Git سوءاستفاده میکند، تسخیر شوند. این نقص به یک مخزن (repository) غیرقابل اعتماد اجازه میدهد تا به محض اینکه دستیار شروع به اسکن فایلها میکند، دستوراتی را روی سیستم توسعهدهنده اجرا کند.
این نقص در چندین عامل (agent) محبوب از جمله Claude Code، Cursor، OpenAI Codex، Goose، Qwen Code، Grok Build و Hermes آشکار شده است. در عاملهایی که اصلاح شدهاند، این اکسپلویت دیگر کار نمیکند؛ اما بقیه همچنان آسیبپذیر هستند. برای این کار نیازی به کلیک یا تایید اضافی نیست و کد مخرب با همان سطح دسترسی کاربر و خارج از هرگونه محیط ایزولهای (sandbox) که عامل هوش مصنوعی ممکن است فراهم کرده باشد، اجرا میشود.
حمله چگونه به دست توسعهدهنده میرسد
- یک پیمانکار پروژهای را زیپ کرده و ایمیل میکند.
- یک همکار، پوشهای را در یک درایو شبکه به اشتراک میگذارد.
- یک فلش مموری حاوی کد منبع (codebase) تحویل داده میشود.
در هر یک از این موارد، مخزن به صورت یک دایرکتوری میرسد که از قبل حاوی پوشه .git است. وقتی یک دستیار هوش مصنوعی پوشه را باز میکند، معمولاً برای ساختن نمای کلی از کد، دستور git status را در پسزمینه اجرا میکند. Git این عملیات را با تنظیم core.fsmonitor تسریع میکند؛ این تنظیم به Git میگوید تا یک برنامه خارجی را برای نظارت بر تغییرات سیستم فایل فراخوانی کند. اگر فایل .git/config مخزن، یک دستور مخرب را برای core.fsmonitor تعریف کرده باشد، Git آن را بدون مشورت با کاربر، بهطور خودکار اجرا میکند.
از آنجایی که دستور توسط خود Git اجرا میشود، حقوق (سطح دسترسی) کاربر را به ارث میبرد و هرگونه محیط ایزولهای (sandbox) را که ابزار هوش مصنوعی ایجاد کرده باشد، دور میزند. این اکسپلویت در طول یک git clone ،git fetch یا git pull معمولی اجرا نمیشود؛ بلکه تنها زمانی فعال میشود که مخزن به همراه متادیتای .git موجود در آن، از حالت فشرده خارج شود.
چرا این موضوع اهمیت دارد
توسعهدهندگان بهطور فزایندهای برای پیشنهاد تکمیل کد، بازنویسی (refactor) کد یا تولید ماژولهای کامل به دستیارهای هوش مصنوعی متکی هستند. این ابزارها برای داشتن یک نمای سریع از درخت فایلهای پروژه، دستورات Git را بهصورت بیصدا فراخوانی میکنند. اگر یک مخزن مخرب بتواند در آن لحظه کد را اجرا کند، مهاجم بدون هیچ هشدار قابل مشاهدهای، جای پایی در ایستگاه کاری توسعهدهنده پیدا میکند. بار مخرب (payload) احتمالی میتواند از سرقت اعتبارنامهها تا نصب درهای پشتی (backdoors) ماندگار متغیر باشد، در حالی که کاربر تصور میکند صرفاً در حال «بررسی» کد با یک دستیار هوش مصنوعی است.
شناسایی یک مخزن مسموم
قبل از تحویل دادن یک مخزن به دستیار، این دستور را اجرا کنید:
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 از شما محافظت نمیکند. تنظیمات محلی مخزن همیشه بر تنظیمات سراسری (global) اولویت دارند، بنابراین یک مخزن مخرب میتواند بهسادگی قوانین سراسری را نادیده بگیرد.
وضعیت فعلی اصلاحات
- Claude Code – اصلاحشده (fsmonitor)
- Cursor – اصلاحشده
- OpenAI Codex – اصلاحشده
- Goose – اصلاحشده
- Qwen Code – اصلاحنشده
- Grok Build – اصلاحنشده
- Hermes – اصلاحنشده
توسعهدهندگانی که از عاملهای اصلاحنشده استفاده میکنند، باید هر مخزن ورودی را تا زمانی که ابزار خود را تغییر ندهند یا سیاستهای محلی سختگیرانهتری برای Git اعمال نکنند، بالقوه خطرناک تلقی کنند.
دیدگاه مخالف از سوی جامعه Git
ویژگی core.fsmonitor در Git یک قابلیت عملکردی مشروع است، نه یک باگ. نگهدارندگان این ابزار استدلال میکنند که مسئولیت اعتبارسنجی محتویات مخزن قبل از فراخوانی دستورات Git بر عهده فراخوانکنندگان است. غیرفعال کردن سراسری این ویژگی یک راهکار مقابلهای ساده است، اما همانطور که اشاره شد، بازنویسیهای محلی میتوانند آن محافظت را از کار بیندازند. بحثهای گستردهتر اکنون بر این موضوع متمرکز است که آیا دستیارهای هوش مصنوعی باید تمام فراخوانیهای خارجی Git را در محیط ایزوله (sandbox) اجرا کنند یا از پردازش مخازنی که حاوی قلابهای (hooks) سفارشی fsmonitor هستند، خودداری کنند.
آنچه باید در آینده زیر نظر داشت
- بهروزرسانیهای عاملهای هوش مصنوعی اصلاحنشده — بهویژه هرگونه اظهارنظر درباره ایزولهسازی (sandboxing) فراخوانیهای Git.
- تغییرات احتمالی در مدیریت پیشفرض Git برای دایرکتوریهای غیرقابل اعتماد در مورد
core.fsmonitor. - ابزارهای شخص ثالث که میتوانند
.git/configیک مخزن را قبل از رسیدن به دستیار، پاکسازی کنند.
نتیجهگیری
تنها یک خط در یک فایل تنظیمات پنهان میتواند یک ابزار تسهیلکننده مبتنی بر هوش مصنوعی را به یک بردار اجرای کد از راه دور (remote-code-execution) تبدیل کند. تا زمانی که عاملهای آسیبپذیر اصلاح شوند، امنترین روش این است که هر مخزنی را که خارج از جریان کاری استاندارد clone دریافت میشود، بازرسی کرده و هرگونه قلاب (hook) مربوط به core.fsmonitor یا موارد مشابه را قبل از اجازه دادن به دستیار هوش مصنوعی برای لمس کد، حذف کنید.
