Claude Code, Cursor এবং Grok Build-এর মতো AI কোডিং অ্যাসিস্ট্যান্টগুলো কোনো ক্লিক বা প্রম্পট ছাড়াই একজন ডেভেলপার যখন একটি অনিরাপদ (untrusted) রিপোজিটরি ওপেন করেন, তখনই যেকোনো কমান্ড কার্যকর করতে পারে। এই ত্রুটিটি তৈরি হয় যখন এই টুলগুলো প্রজেক্টের ফাইলগুলো স্ক্যান করার জন্য Git-এর core.fsmonitor ফিচারটি ব্যবহার করে।

কেন এই বিষয়টি এখন গুরুত্বপূর্ণ

ডেভেলপাররা কোড সাজেস্ট করা, ফাংশন রিফ্যাক্টর করা বা এমনকি পুরো মডিউল লেখার জন্য ক্রমশ AI এজেন্টদের ওপর নির্ভরশীল হয়ে পড়ছেন। সেই এজেন্টগুলোর কাজের জন্য ওয়ার্কস্পেসের একটি দ্রুত স্ন্যাপশট প্রয়োজন হয়, তাই তারা পর্দার আড়ালে git status কমান্ডটি চালায়। যখন Git একটি রিপোজিটরির .git/config ফাইল পড়ে, তখন core.fsmonitor-এ দেওয়া যেকোনো ভ্যালুকে একটি শেল কমান্ড হিসেবে গণ্য করা হয় যা Git রান করবে। একজন ক্ষতিকারক ব্যক্তি সেই কনফিগ এন্ট্রিতে একটি সুপরিকল্পিত কমান্ড বসিয়ে দিতে পারেন, এবং ব্যবহারকারী একটি লাইন কোড লেখার আগেই AI-এর ব্যাকগ্রাউন্ড Git কলটি সেই কমান্ডটি কার্যকর করে ফেলবে।

এই কোডটি ডেভেলপারের নিজস্ব প্রিভিলেজ বা অধিকার নিয়ে চলে, যা AI এজেন্ট সাধারণত যে স্যান্ডবক্সের (sandbox) মধ্যে কাজ করে তা বাইপাস করে ফেলে। বাস্তবে, একটি আক্রান্ত রিপোজিটরি ম্যালওয়্যার ইনস্টল করতে পারে, ক্রেডেনশিয়াল চুরি করতে পারে বা সোর্স ফাইল পরিবর্তন করতে পারে—আর ডেভেলপার ভাবছেন যে অ্যাসিস্ট্যান্টটি কেবল পরামর্শ দিচ্ছে।

আক্রমণটি যেভাবে ঘটে

  1. প্রস্তুতি (Preparation) – একজন আক্রমণকারী এমন একটি রিপোজিটরি তৈরি করেন যার .git/config-এ core.fsmonitor = /path/to/malicious/script-এর মতো একটি লাইন থাকে।
  2. প্রেরণ (Delivery) – রিপোজিটরিটিকে একটি জিপ ফাইল হিসেবে দেওয়া হয়, ইউএসবি স্টিক থেকে কপি করা হয়, শেয়ার্ড ড্রাইভের মাধ্যমে সিঙ্ক করা হয় অথবা ভিকটিমের মেশিনে .git ফোল্ডারসহ রাখা হয়।
  3. ট্রিগার (Trigger) – ডেভেলপার AI-সক্ষম একটি IDE-তে ফোল্ডারটি ওপেন করেন। অ্যাসিস্ট্যান্টটি কনটেক্সট সংগ্রহের জন্য git status চালায়। Git লোকাল কনফিগ পড়ে, core.fsmonitor কমান্ডটি কার্যকর করে এবং ক্ষতিকারক স্ক্রিপ্টটি সাথে সাথে রান করে।

সাধারণ git clone করলে এই ঝুঁকির মুখে পড়তে হয় না কারণ ক্লোন করার সময় একটি নতুন .git ডিরেক্টরি তৈরি হয় যাতে কোনো পরিবর্তন করা কনফিগ থাকে না। এই আক্রমণটি তখনই কাজ করে যখন আক্রমণকারী আগে থেকে বিদ্যমান একটি .git ফোল্ডার সরবরাহ করতে পারে।

ঝুঁকির মুখে কী কী আছে

  • ব্যক্তিগত ডেভেলপাররা বুঝতে না পেরেও তাদের মেশিন হ্যাক হওয়ার ঝুঁকিতে পড়তে পারেন এবং AI এজেন্ট যে সমস্ত ডেটা অ্যাক্সেস করতে পারে তা হারাতে পারেন।
  • টিমগুলো যারা ইন্টারনাল ড্রাইভ বা কন্ট্রাক্টর জিপ ফাইলের মাধ্যমে কোড শেয়ার করে, তারা অনেকগুলো ওয়ার্কস্টেশনে এই ম্যালওয়্যার ছড়িয়ে দিতে পারে।
  • টুল ভেন্ডরদের সুনাম নষ্ট হওয়ার ঝুঁকি থাকে যদি ব্যবহারকারীরা এই নিরাপত্তা লঙ্ঘনের জন্য মূল Git ইন্টারঅ্যাকশনের পরিবর্তে AI অ্যাসিস্ট্যান্টকে দায়ী করেন।

যেহেতু ক্ষতিকারক কমান্ডটি ইউজারের অধিকার বা রাইটস ইনহেরিট করে, তাই এটি ডেভেলপারের অ্যাক্সেস আছে এমন যেকোনো ফাইল পরিবর্তন করতে পারে, যার মধ্যে SSH কী, বিল্ড স্ক্রিপ্ট বা ডিপ্লয়মেন্ট ক্রেডেনশিয়াল অন্তর্ভুক্ত।

ডেভেলপাররা আজই যে প্রতিরোধমূলক পদক্ষেপগুলো নিতে পারেন

  • লোকাল Git সেটিংসের ওপর ভরসা করবেন না। প্রতিবার যখন কোনো AI অ্যাসিস্ট্যান্ট প্রজেক্টটি কুয়েরি করে, তখন রিপোজিটরির কনফিগ গ্লোবাল ভ্যালুগুলোকে ওভাররাইড করে।

  • অ্যাসিস্ট্যান্ট দিয়ে কোনো ফোল্ডার খোলার আগে core.fsmonitor এন্ট্রিটি পরীক্ষা করুন:

    git config --get core.fsmonitor
    

    যদি কোনো ভ্যালু দেখা যায়, তবে সেটিকে সন্দেহজনক হিসেবে গণ্য করুন।

  • নিচের কমান্ড দিয়ে এন্ট্রিটি মুছে ফেলুন:

    git config --local --unset core.fsmonitor
    
  • Git কার্যকর করতে পারে এমন অন্যান্য ঝুঁকিপূর্ণ কী (keys) পরীক্ষা করুন: hooksPath, sshCommand, pager, editor, filter। এগুলো খালি আছে কিনা তা যাচাই করতে একই git config --get প্যাটার্ন ব্যবহার করুন।

  • যে কোডটি আপনি কোনো AI টুলে দিতে চান, তার জন্য ক্লিন ক্লোন (clean clone) ব্যবহার করা শ্রেয়। যদি আপনাকে কোনো জিপ বা ট্রান্সফার করা ফোল্ডার নিয়ে কাজ করতে হয়, তবে প্রথমে তার .git ডিরেক্টরি মুছে ফেলুন এবং রিপোজিটরি পুনরায় ইনিশিয়ালাইজ করুন, অথবা উপরের পরীক্ষাগুলো সম্পন্ন করুন।

দায়ভার কার ওপর বর্তায়

এই দুর্বলতা Claude Code, Cursor বা Grok Build-এর চালিকাশক্তি ল্যাঙ্গুয়েজ মডেলগুলোর কোনো ত্রুটি নয়; এটি সেই টুলগুলো যেভাবে ফাইল সংক্রান্ত তথ্য সংগ্রহ করে তার একটি ফলাফল। কিছু ভেন্ডর Git কলগুলোকে আরও কঠোরভাবে স্যান্ডবক্স করা শুরু করেছেন, কিন্তু ডিফল্ট আচরণ এখনও লোকাল রিপোজিটরি সেটিংসের ওপর আস্থা রাখে। যতক্ষণ না শিল্পখাত এমন একটি স্ট্যান্ডার্ড গ্রহণ করছে যা AI এজেন্ট ওয়ার্কস্পেস স্ক্যান করার সময় সম্ভাব্য বিপজ্জনক কনফিগ এন্ট্রিগুলোকে সরিয়ে দেয় বা উপেক্ষা করে, ততক্ষণ ডেভেলপারদেরকেই শেষ প্রতিরক্ষা স্তর হিসেবে থাকতে হবে।

পরবর্তীতে কী লক্ষ্য রাখা উচিত

  • টুল আপডেট, যা git status কল করার আগে স্পষ্টভাবে Git কনফিগারেশন স্যানিটাইজ (sanitize) করবে।
  • নিরাপদ AI-সহায়তা সম্পন্ন ডেভেলপমেন্টের জন্য কমিউনিটি-চালিত নির্দেশিকা, যেখানে সম্ভবত প্রি-ফ্লাইট চেকের সুপারিশ থাকবে।
  • সিকিউরিটি রিসার্চ, যা কোড এক্সিকিউশন করতে সক্ষম আরও অতিরিক্ত Git কনফিগ কী খুঁজে পেতে পারে, যা উপরে উল্লিখিত পাঁচটি চেকলিস্টের বাইরেও বিস্তৃত হতে পারে।

মূল কথা হলো: একটি AI অ্যাসিস্ট্যান্ট সুবিধাজনক পেয়ার-প্রোগ্রামার হতে পারে, কিন্তু এটি রিপোজিটরির Git কনফিগ-এ লুকিয়ে থাকা যেকোনো কমান্ড সানন্দে কার্যকর করে ফেলবে। অ্যাসিস্ট্যান্টকে কাজ করার সুযোগ দেওয়ার আগে ওয়ার্কস্পেসটি যাচাই করে নিন।