AI কোড অ্যাসিস্ট্যান্টগুলোকে একটি ক্ষতিকারক .git/config এন্ট্রির মাধ্যমে হাইজ্যাক করা সম্ভব, যা Git-এর core.fsmonitor ফিচারটিকে কাজে লাগায়। এর ফলে একটি অনিরাপদ রিপোজিটরি একজন ডেভেলপারের মেশিনে অ্যাসিস্ট্যান্ট ফাইলগুলো স্ক্যান করার সাথে সাথেই কমান্ড রান করতে পারে।
এই ত্রুটিটি বেশ কিছু জনপ্রিয় এজেন্টে দেখা গেছে—Claude Code, Cursor, OpenAI Codex, Goose, Qwen Code, Grok Build এবং Hermes। যে এজেন্টগুলোতে প্যাচ (patch) করা হয়েছে সেখানে এই এক্সপ্লয়েটটি আর কাজ করে না; তবে বাকিগুলো এখনও অরক্ষিত। এর জন্য কোনো অতিরিক্ত ক্লিক বা প্রম্পটের প্রয়োজন হয় না এবং ক্ষতিকারক কোডটি ব্যবহারকারীর নিজস্ব প্রিভিলেজ বা অধিকার নিয়েই চলে, এমনকি AI এজেন্ট যে স্যান্ডবক্স (sandbox) প্রদান করে তার বাইরেও।
কীভাবে আক্রমণটি ডেভেলপারের কাছে পৌঁছায়
- একজন কন্ট্রাক্টর একটি প্রজেক্ট জিপ করে ইমেইল করেন।
- একজন টিমমেট নেটওয়ার্ক ড্রাইভে একটি ফোল্ডার শেয়ার করেন।
- একটি ইউএসবি স্টিক দিয়ে কোডবেস হস্তান্তর করা হয়।
প্রতিটি ক্ষেত্রেই রিপোজিটরি একটি ডিরেক্টরি হিসেবে আসে যার মধ্যে আগে থেকেই একটি .git ফোল্ডার থাকে। যখন একটি AI অ্যাসিস্ট্যান্ট ফোল্ডারটি খোলে, তখন কোডের একটি ভিউ তৈরি করার জন্য এটি সাধারণত ব্যাকগ্রাউন্ডে git status রান করে। Git core.fsmonitor সেটিংসের মাধ্যমে সেই অপারেশনটি দ্রুত করে, যা Git-কে ফাইল সিস্টেমের পরিবর্তনগুলো দেখার জন্য একটি এক্সটার্নাল প্রোগ্রাম কল করতে বলে। যদি রিপোজিটরির .git/config ফাইলে core.fsmonitor-এর জন্য কোনো ক্ষতিকারক কমান্ড সংজ্ঞায়িত করা থাকে, তবে Git ব্যবহারকারীর সাথে পরামর্শ না করেই স্বয়ংক্রিয়ভাবে সেটি কার্যকর করে।
যেহেতু কমান্ডটি Git নিজেই চালু করে, তাই এটি ব্যবহারকারীর অধিকার বা রাইটস (rights) উত্তরাধিকারসূত্রে পায় এবং AI টুলটি যে কোনো স্যান্ডবক্স তৈরি করে রাখলেও তা বাইপাস করে ফেলে। এই এক্সপ্লয়েটটি সাধারণ git clone, git fetch বা git pull-এর সময় কাজ করে না; এটি কেবল তখনই সক্রিয় হয় যখন রিপোজিটরিটির .git মেটাডেটা সহ আনপ্যাক করা হয়।
কেন এই বিষয়টি গুরুত্বপূর্ণ
ডেভেলপাররা কোড কমপ্লিশন সাজেস্ট করা, কোড রিফ্যাক্টর করা বা সম্পূর্ণ মডিউল তৈরি করার জন্য দিন দিন AI অ্যাসিস্ট্যান্টের ওপর নির্ভর করছেন। এই টুলগুলোর প্রজেক্টের ফাইল ট্রি-র একটি দ্রুত স্ন্যাপশট প্রয়োজন হয়, তাই তারা নিঃশব্দে Git কমান্ড কল করে। যদি একটি ক্ষতিকারক রিপোজিটরি সেই মুহূর্তে কোড এক্সিকিউট করতে পারে, তবে আক্রমণকারী কোনো দৃশ্যমান সতর্কতা ছাড়াই ডেভেলপারের ওয়ার্কস্টেশনে প্রবেশাধিকার পেয়ে যায়। এর সম্ভাব্য ক্ষতিকারক কাজের (payload) পরিধি ক্রেডেনশিয়াল চুরি থেকে শুরু করে পারসিস্টেন্ট ব্যাকডোর ইনস্টল করা পর্যন্ত হতে পারে, আর ব্যবহারকারী মনে করেন তিনি কেবল একটি 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 সেট করা আপনাকে রক্ষা করবে না। লোকাল রিপোজিটরি সেটিংস সব সময় গ্লোবাল সেটিংসকে ওভাররাইড করে, তাই একটি ক্ষতিকারক রিপোজিটরি সহজেই গ্লোবাল নিয়ম উপেক্ষা করতে পারে।
বর্তমান প্যাচ পরিস্থিতি
- Claude Code – প্যাচ করা হয়েছে (fsmonitor)
- Cursor – প্যাচ করা হয়েছে
- OpenAI Codex – প্যাচ করা হয়েছে
- Goose – প্যাচ করা হয়েছে
- Qwen Code – প্যাচ করা হয়নি
- Grok Build – প্যাচ করা হয়নি
- Hermes – প্যাচ করা হয়নি
যে সকল ডেভেলপার প্যাচ না করা এজেন্ট ব্যবহার করছেন, তাদের উচিত টুল পরিবর্তন না করা পর্যন্ত বা কঠোর লোকাল Git পলিসি প্রয়োগ না করা পর্যন্ত যেকোনো আগত রিপোজিটরিকে সম্ভাব্য বিপজ্জনক হিসেবে বিবেচনা করা।
Git কমিউনিটির পাল্টা যুক্তি
Git-এর core.fsmonitor একটি বৈধ পারফরম্যান্স ফিচার, কোনো বাগ নয়। মেইনটেইনারদের যুক্তি হলো, Git কমান্ড কল করার আগে রিপোজিটরির বিষয়বস্তু যাচাই করার দায়িত্ব কলকারীদের ওপর বর্তায়। ফিচারটি গ্লোবালভাবে ডিজেবল করা একটি সহজ সমাধান, কিন্তু যেমনটি উল্লেখ করা হয়েছে, লোকাল ওভাররাইড সেই সুরক্ষা নষ্ট করতে পারে। এখন বৃহত্তর আলোচনার কেন্দ্রবিন্দু হলো—AI অ্যাসিস্ট্যান্টগুলোর কি সমস্ত এক্সটার্নাল Git ইনভোকেশন স্যান্ডবক্স করা উচিত নাকি কাস্টম fsmonitor হুক থাকা রিপোজিটরি প্রসেস করতে অস্বীকার করা উচিত।
পরবর্তীতে যা খেয়াল রাখতে হবে
- প্যাচ না করা AI এজেন্টগুলোর আপডেট—বিশেষ করে Git কল স্যান্ডবক্স করা সম্পর্কে কোনো বিবৃতি।
- অনিরাপদ ডিরেক্টরিগুলোর জন্য
core.fsmonitor-এর ডিফল্ট হ্যান্ডলিংয়ে সম্ভাব্য পরিবর্তন। - থার্ড-পার্টি টুল যা কোনো অ্যাসিস্ট্যান্টের কাছে পৌঁছানোর আগে রিপোজিটরির
.git/configস্যানিটাইজ করতে পারে।
সারসংক্ষেপ
একটি লুকানো কনফিগ ফাইলের মাত্র একটি লাইন AI-চালিত সুবিধাকে রিমোট-কোড-এক্সিকিউশন ভেক্টরে পরিণত করতে পারে। যতক্ষণ না অরক্ষিত এজেন্টগুলো ঠিক করা হচ্ছে, ততক্ষণ সবচেয়ে নিরাপদ পদ্ধতি হলো স্ট্যান্ডার্ড ক্লোন ওয়ার্কফ্লোর বাইরে থেকে আসা প্রতিটি রিপোজিটরি অডিট করা এবং AI অ্যাসিস্ট্যান্টকে কোডটি স্পর্শ করতে দেওয়ার আগে যেকোনো core.fsmonitor বা অনুরূপ হুক সরিয়ে ফেলা।
