𝗧𝗵𝗲 𝗧𝗵𝗶𝗻𝗴 𝗬𝗼𝘂 𝗩𝗲𝗿𝗶𝗳𝗶𝗲𝗱 𝗜𝘀 𝗡𝗼𝘁 𝗧𝗵𝗲 𝗧𝗵𝗶𝗻𝗴 𝗧𝗵𝗮𝘁 𝗥𝘂𝗻𝘀
সম্প্রতি একটি নতুন টুল সবার নজর কেড়েছে। এটি curl-এর মতো কমান্ডগুলোর সামনে অবস্থান করে এবং স্ক্রিপ্টটি চলার আগেই আপনাকে সেটি দেখায়। এটি বিপজ্জনক অংশগুলো হাইলাইট করে। এই টুলটি সহায়ক, তবে এটি মূল সমস্যাটি ধরতে পারছে না।
সমস্যাটি এই নয় যে বাইটগুলো ক্ষতিকারক কি না। সমস্যা হলো, একটি URL আজ একটি স্ক্রিপ্ট দিতে পারে এবং আগামীকাল অন্য একটি স্ক্রিপ্ট দিতে পারে। আপনার যাচাইকরণ কেবল একটি নির্দিষ্ট মুহূর্তের জন্য প্রযোজ্য।
সিস্টেম বিশেষজ্ঞরা একে TOCTOU বলেন। এর পূর্ণরূপ হলো time-of-check to time-of-use। আপনি একটি ফাইল যাচাই করেন, তারপর আপনি সেটি খোলার আগেই কেউ সেটি বদলে ফেলে। আপনার যাচাইকরণ সঠিক ছিল, কিন্তু সেটি এমন একটি বিষয় সম্পর্কে সঠিক ছিল যা আর বিদ্যমান নেই।
AI এজেন্টরা এই ঝুঁকি অনেক বাড়িয়ে দেয়। এজেন্টরা প্রতিনিয়ত যাচাইকরণ সম্পন্ন করে।
- একটি এজেন্ট একটি URL-এ পিং করে এবং একটি সফল রেসপন্সকে নিরাপত্তার লক্ষণ হিসেবে গণ্য করে।
- একটি এজেন্ট একটি প্রোফাইল পড়ে এবং একটি ঘোষণা বা ডিক্লারেশনকে সত্য হিসেবে গণ্য করে।
- একটি এজেন্ট একটি সিগনেচার দেখে এবং ধরে নেয় যে এটি যে বাইটগুলো চালাতে যাচ্ছে, সেগুলোই আসলে সাইন করা হয়েছিল।
প্রতিটি যাচাইকরণ একটি নির্দিষ্ট মুহূর্ত বা চ্যানেলের ওপর আস্থা স্থাপন করে। এরপর এজেন্ট এমন কিছুর ওপর ভিত্তি করে কাজ করে যা যাচাইকরণের আওতার বাইরে ছিল।
উদাহরণস্বরূপ, একটি এজেন্ট একটি টুল ম্যানিফেস্ট (tool manifest) যাচাই করতে পারে এবং ফলাফলটি ক্যাশ (cache) করে রাখতে পারে। যদি এজেন্টটি টুলটি কল করার আগে এন্ডপয়েন্ট পরিবর্তিত হয়, তবে এজেন্টটি ভুল ভার্সনটি চালায়। যাচাইকরণ সফল হয়েছিল, কিন্তু সেটি এমন একটি ম্যানিফেস্টের জন্য সফল হয়েছিল যা এজেন্টটি আর ব্যবহার করছে না।
আরও কঠোরভাবে স্ক্যান করার মাধ্যমে এটি সমাধান করার চেষ্টা করা কাজ করে না। আরও বেশি নিয়ম কেবল সময়ের ব্যবধান কমিয়ে আনে, কিন্তু তা বন্ধ করতে পারে না। আপনার স্ক্যান এবং এক্সিকিউশনের মধ্যবর্তী কয়েক মিলিসেকেন্ডের মধ্যেই একজন প্রডিউসার ভিন্ন কোনো আর্টিফ্যাক্ট (artifact) সরবরাহ করতে পারে।
এটি সমাধান করতে, মুহূর্ত যাচাই করা বন্ধ করুন। আর্টিফ্যাক্ট যাচাই করা শুরু করুন।
একটি fetch-এর পরিবর্তে আপনার সিদ্ধান্তগুলোকে একটি ইমিউটেবল (immutable) অবজেক্টের সাথে যুক্ত করুন।
- কোনো URL অনুমোদন করবেন না।
- একটি নির্দিষ্ট কন্টেন্ট হ্যাশ (content hash) অনুমোদন করুন।
- আরও ভালো হয় যদি এমন একটি হ্যাশ অনুমোদন করেন যা একটি বিশ্বস্ত কী (key) দ্বারা সাইন করা হয়েছে।
এটি প্রশ্নটিকে "এই টেক্সটটি কি ভীতিজনক?" থেকে পরিবর্তন করে "এটি কি সেই সঠিক আর্টিফ্যাক্ট যার জন্য কী (key) নিশ্চয়তা দিয়েছে?" করে তোলে। যদি হ্যাশ না মিলে, তবে আপনি এটি প্রত্যাখ্যান করবেন। এখানে কোনো বিতর্কের অবকাশ নেই।
এই পদ্ধতিটি যাচাইকরণকে পোর্টেবল (portable) বা বহনযোগ্য করে তোলে। একজন তৃতীয় পক্ষ একই হ্যাশ এবং সিগনেচার ব্যবহার করে নিজেই ফলাফলটি যাচাই করতে পারে। এটি অবজেক্টের একটি বৈশিষ্ট্য, আপনার সময়ের কোনো বৈশিষ্ট্য নয়।
যেকোনো যাচাইকরণ পরীক্ষা করতে এই দুটি প্রশ্ন ব্যবহার করুন:
- Is the check bound to the exact artifact used, or to a moment and a promise?
- Can a stranger re-run the check and reach the same verdict?
If the answer to the first is a moment, the check has an expiry date. If the answer to the second is no, you do not have verification. You have testimony.
Most current agent verification is just testimony. "The handshake succeeded" or "the scan was clean" are true statements about a moment, but they do not attach to the bytes that actually run.
Agents act thousands of times without human oversight. If you do not pin trust to artifacts, the whole chain inherits the weakest, oldest check.
You do not need new technology to fix this. Content addressing and digital signatures are decades old. You simply need to point them at the right thing: the exact bytes that execute, not the request that fetched them.
Before you trust a check, find out what it attaches to. If it attaches to a moment, it has already expired.
Source: https://dev.to/anp2network/the-thing-you-verified-is-not-the-thing-that-runs-hnl
Optional learning community: https://t.me/GyaanSetuAi