আপনার AI কোডিং অ্যাসিস্ট্যান্ট আপনার অজান্তেই আপনার SSH কী (keys) পুনরায় লিখে ফেলতে পারে। Wiz Research একটি “GhostApproval” ত্রুটি উন্মোচন করেছে যা একটি ক্ষতিকারক project_settings.json সিমলিঙ্ককে (symlink) প্রাইভেট কী-এর দিকে নির্দেশ করতে দেয়, এবং প্রতিটি কাজের জন্য যে অ্যাপ্রুভাল ডায়ালগ পপ-আপ হয় তা শুধুমাত্র সিমলিঙ্কের নামটি দেখায়। ডায়ালগটি অ্যাপ্রুভ করলেই আপনি অ্যাসিস্ট্যান্টকে আপনার ক্রেডেনশিয়াল বা পরিচয়পত্রের (credentials) অবাধ অ্যাক্সেস দিয়ে দিলেন।

এক্সপ্লয়েটটি যেভাবে কাজ করে

  • একজন আক্রমণকারী একটি রিপোজিটরিতে project_settings.json নামে একটি ফাইল যোগ করে।
  • ফাইলটি কোনো সাধারণ JSON ফাইল নয়; এটি একটি সিম্বলিক লিঙ্ক (symlink) যা ব্যবহারকারীর ~/.ssh/id_rsa (বা সমতুল্য) প্রাইভেট কী-এর দিকে রিডাইরেক্ট করে।
  • যখন ডেভেলপার AI অ্যাসিস্ট্যান্টকে “set up the workspace” করতে বলেন, তখন অ্যাসিস্ট্যান্ট সিমলিঙ্কটি অনুসরণ করে এবং আসল SSH কী ফাইলে লেখার প্রস্তুতি নেয়।
  • যে অ্যাপ্রুভাল ডায়ালগটি প্রদর্শিত হয় তাতে শুধুমাত্র project_settings.json তালিকাভুক্ত থাকে। এটি ডিস্কের আসল পাথ (path) দেখানোর জন্য সিমলিঙ্কটিকে রেজলভ (resolve) করে না।
  • “Approve” ক্লিক করলে অ্যাসিস্ট্যান্ট প্রাইভেট কী পরিবর্তন করার অনুমতি পায়, যা কার্যকরভাবে সেই কী-এর ওপর নির্ভরশীল প্রতিটি সার্ভিসে ব্যবহারকারীর পরিচয় বা আইডেন্টিটি ঝুঁকির মুখে ফেলে দেয়।

এই বাগটি বহুল ব্যবহৃত ছয়টি টুলে দেখা গেছে: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity এবং Windsurf। এগুলোর সবকটিই একই বিভ্রান্তিকর ডায়ালগ দেখায় কারণ ইউজার ইন্টারফেস (UI) শুধুমাত্র প্রাপ্ত নামটি প্রদর্শন করে, রেজলভ করা টার্গেট নয়।

কেন প্রতি-অ্যাকশন ডায়ালগ যথেষ্ট নয়

প্রতি-অ্যাকশন অ্যাপ্রুভাল ধরে নেয় যে একজন মানুষ AI-এর করা প্রতিটি অপারেশন যাচাই করতে পারবেন। বাস্তবে, এটি আপনাকে প্রতি কয়েক সেকেন্ড অন্তর নিখুঁত সিদ্ধান্ত নিতে বাধ্য করে—যা কোনো এজেন্টের কাজের গতির চেয়ে দ্রুত করা মানুষের পক্ষে অসম্ভব।

ভেন্ডররা কী করছে – এবং কেন এটি গুরুত্বপূর্ণ

  • Amazon, Google এবং Cursor ইতিমধ্যে এটি ঠিক করে ফেলেছে।
  • Anthropic (Claude Code-এর নির্মাতা) বলছে ব্যবহারকারীদের শুধুমাত্র সেই বিষয়গুলোই অ্যাপ্রুভ করা উচিত যা তারা বোঝেন। এটি সিমলিঙ্ক শনাক্ত করার মানসিক চাপ (cognitive load) উপেক্ষা করে এবং ধরে নেয় যে ব্যবহারকারীরা তাৎক্ষণিকভাবে প্রতিটি ফাইল পাথ অডিট করতে পারবেন—যা একটি অবাস্তব প্রত্যাশা।
  • Cursor একটি আলাদা সমস্যাও প্রকাশ করেছে, যার নাম দেওয়া হয়েছে DuneSlide, যা আক্রমণকারীদের কোনো অ্যাপ্রুভাল প্রম্পট ছাড়াই মেশিনে কোড এক্সিকিউট করতে দেয়। কোম্পানিটি সেই বাগটি প্যাচ করেছে, যা দেখায় যে পারমিশন চেক দুর্বল হলে এই অ্যাসিস্ট্যান্টগুলো কত দ্রুত অ্যাটাক ভেক্টরে পরিণত হতে পারে।

এই ভিন্নধর্মী প্রতিক্রিয়ারা একটি গভীর প্রশ্ন তোলে: নিরাপত্তা কি কোনো ঘটনার পরে আসা একটি ডায়ালগ হওয়া উচিত, নাকি একটি পূর্বনির্ধারিত সীমানা যা অ্যাসিস্ট্যান্ট কখনোই অতিক্রম করবে না?

স্কোপড পারমিশন (Scoped permissions): একটি ব্যবহারিক বিকল্প

প্রতিটি ফাইল অপারেশনের জন্য প্রম্পট করার পরিবর্তে, ডেভেলপাররা অ্যাসিস্ট্যান্ট চালানোর আগে একটি scope নির্ধারণ করে দিতে পারেন:

  • একটি ডিরেক্টরি ট্রি (যেমন, /src) সংজ্ঞায়িত করুন যা AI পড়তে বা লিখতে পারবে।
  • সেই ট্রি-এর বাইরের কোনো ফাইল স্পর্শ করার চেষ্টা—যেমন ~/.ssh/id_rsa—অপারেটিং সিস্টেম বা একটি স্যান্ডবক্স লেয়ার দ্বারা ব্লক হয়ে যাবে।
  • স্কোপটি একবারই নির্ধারণ করা হয়, যা মানুষের নেওয়া সিদ্ধান্তের সংখ্যা কমিয়ে দেয় এবং একই সাথে অ্যাসিস্ট্যান্টের প্রভাবকেও সীমাবদ্ধ রাখে।

স্কোপিং নিরাপত্তা মডেলকে “প্রতিবার জিজ্ঞাসা করা” থেকে “শুধুমাত্র যা প্রয়োজন তা অনুমোদন করা”-তে পরিবর্তন করে। এটি ঠিক যেভাবে কন্টেইনার রানটাইম এবং মোবাইল ওএস (OS) অ্যাপ্লিকেশনগুলোকে স্যান্ডবক্স করে, যাতে কোনো সমস্যা হলে ক্ষতির পরিমাণ সীমিত থাকে।

পরবর্তী করণীয়

  • Vendor roll-outs: ক্ষতিগ্রস্ত ছয়টি টুলের আপডেট নোটের দিকে নজর রাখুন।

সারকথা

GhostApproval এক্সপ্লয়েটটি প্রমাণ করে যে একটি পপ-আপ ডায়ালগের ওপর ভরসা করা নিরাপত্তার একটি মিথ্যা ধারণা দেয়। যতক্ষণ না প্রতিটি AI কোডিং অ্যাসিস্ট্যান্ট সিমলিঙ্কগুলো রেজলভ করছে এবং পূর্ণ পাথ (full path) দেখাচ্ছে, ততক্ষণ ডেভেলপারদের স্কোপড রাইট পারমিশন (scoped write permissions) প্রয়োগ করা উচিত—অ্যাসিস্ট্যান্ট শুরু করার আগেই তাকে স্পষ্টভাবে বলে দেওয়া উচিত সে কোথায় কাজ করতে পারবে। এই সাধারণ পরিবর্তনটি কোনো বাড়তি ক্লিকের ঝামেলা ছাড়াই সবচেয়ে বিপজ্জনক ধরনের আক্রমণগুলো প্রতিরোধ করতে পারে।

উৎস: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1