অথরাইজেশন বাগ (Authorization Bugs) খুঁজে পেতে AI-এর ব্যবহার

বাগ বাউন্টি প্রোগ্রামগুলো পরিবর্তিত হচ্ছে। কিছু প্রোগ্রাম পুরস্কার দেওয়া বন্ধ করে দিয়েছে। অন্যরা পেমেন্ট ৮০% কমিয়ে দিয়েছে। এর কারণ এই নয় যে AI অনেক বেশি বাগ খুঁজে পাচ্ছে। কারণ হলো AI অনেক বেশি ভুল বাগ খুঁজে পাচ্ছে। ট্রায়াজ (Triage) টিমগুলো নিম্নমানের রিপোর্টের চাপে ডুবে যাচ্ছে।

এই পরিবেশে, সবচেয়ে গুরুত্বপূর্ণ দক্ষতা বাগ খুঁজে পাওয়া নয়। বরং একটি বাগ যে নেই, তা প্রমাণ করা। আপনাকে সঠিক নেগেটিভ (negatives) খুঁজে বের করতে হবে।

আমি সোর্স-অ্যাভেলেবল (source-available) টার্গেটের জন্য একটি দ্বি-স্তরীয় পদ্ধতি ব্যবহার করি।

ধাপ ১: ফ্যান-আউট (Fan-out) কোড পড়ার জন্য সস্তা AI মডেল ব্যবহার করুন। টার্গেটটিকে ছোট ছোট অংশে বিভক্ত করুন। মডেলটিকে ভাঙা ইনভ্যারিয়েন্ট (broken invariants) খুঁজে বের করতে বলুন। এমন জায়গা খুঁজুন যেখানে কোনো ওনার চেক (owner check) ছাড়াই একটি অবজেক্ট লোড হচ্ছে অথবা যেখানে একটি সিকিউরিটি গেট এড়িয়ে যাওয়া হচ্ছে। হাই রিকল (high recall) অর্জনের লক্ষ্য রাখুন। অনেক ভুলের জন্য প্রস্তুত থাকুন।

ধাপ ২: অ্যাডভারসারিয়াল ভেরিফিকেশন (Adversarial Verification) ক্যান্ডিডেটগুলোকে বাতিল করার জন্য একটি দামী, উচ্চ-রিজনিং (high-reasoning) মডেল ব্যবহার করুন। ধরে নিন প্রতিটি ক্যান্ডিডেটই ভুল। একটি ক্যান্ডিডেট কেবল তখনই টিকে থাকবে যদি আপনি কোডের নির্দিষ্ট লাইন উল্লেখ করতে পারেন। আপনাকে প্রমাণ করতে হবে যে পাথটি (path) রিচেবল (reachable) এবং অন্য কোনো চেক এটিকে বাধা দিচ্ছে না।

সবচেয়ে মূল্যবান আউটপুট হলো রিফিউটেশন (refutations) বা খণ্ডনগুলোর একটি তালিকা। এই তালিকা ট্রায়াজারের সাথে বিশ্বাসযোগ্যতা তৈরি করে।

আমি Ory Kratos পরীক্ষা করেছি, যা একটি ওপেন-সোর্স আইডেন্টিটি সার্ভার। আমি সেটিংস ফ্লো (settings flow) পরীক্ষা করেছি। এই অংশটি পাসওয়ার্ড পরিবর্তন এবং ইমেল আপডেট পরিচালনা করে। এখানে একটি মাত্র ভুল অ্যাকাউন্ট টেকওভারের (account takeover) দিকে নিয়ে যেতে পারে।

প্রথম ধাপে একটি প্রলুব্ধকর বাগ পাওয়া গিয়েছিল। OIDC স্ট্র্যাটেজিতে, একটি নির্দিষ্ট কন্টেইনারে আইডেন্টিটি বাইন্ডিং (identity binding) নেই। আপনি যদি কেবল মিসিং চেক খুঁজতেন, তবে আপনি এটিকে একটি হাই-সিভিয়ারিটি (high-severity) বাগ হিসেবে রিপোর্ট করতেন।

সেটি একটি ভুল হতো।

মিসিং বাইন্ডিংটি এক্সপ্লয়েটেবল (exploitable) নয়। সিস্টেমটি একটি লাইভ সেশন কুকি বা সাইনড টোকেন থেকে টার্গেট আইডেন্টিটি সংগ্রহ করে। কন্টেইনার ট্রেইটগুলো (container traits) কখনোই প্রকৃত রাইট টার্গেটের (write target) ক্ষেত্রে প্রযোজ্য হয় না। ডিজাইনটি সঠিক আছে।

এটি রিপোর্ট করলে সময় নষ্ট হবে এবং আপনার গ্রহণযোগ্যতা ক্ষুণ্ণ হবে। আমি যে ভ্যালু প্রদান করেছি তা হলো রিপোর্ট না করার আত্মবিশ্বাস।

যখন আমি এই একই পদ্ধতি অন্য একটি টার্গেটে ব্যবহার করি, তখন আমি একটি আসল বাগ খুঁজে পাই। একটি বিকল্প এন্ট্রি পয়েন্ট এমন একটি অথরাইজেশন চেক মিস করেছিল যা মেইন পাথ (main path) প্রয়োগ করেছিল। একজন বাতিল করা (revoked) ব্যবহারকারী তবুও একটি সাইড ডোর (side door) দিয়ে প্রবেশ করতে পারতেন। এই বাগটি ছিল হাই-ইমপ্যাক্ট এবং সাধারণ স্ক্যানারগুলোর কাছে অদৃশ্য।

গেটকিপাররা ভলিউমের বিরুদ্ধে দেয়াল তুলছে। সফল হতে হলে আপনার AI কাজকে অবশ্যই কঠোর হতে হবে। একজন মানুষের চেয়ে বেশি কোড পড়ার জন্য AI ব্যবহার করুন। তারপর সাবমিট করার আগে নিজেকে ভুল প্রমাণ করতে AI ব্যবহার করুন।

ভলিউমের দিকে নয়, সিগন্যালের (signal) দিকে মনোযোগ দিন।

উৎস: https://dev.to/fdjedkdlsspec/using-ai-to-find-authorization-bugs-and-to-prove-the-ones-that-arent-real-3m7d