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

বাগ বাউন্টি প্রোগ্রামগুলো বন্ধ হয়ে যাচ্ছে। নিম্নমানের AI রিপোর্টের কারণে Nextcloud তাদের পেইড রিওয়ার্ড প্রদান বন্ধ করে দিয়েছে। Mattermost তাদের প্রোগ্রামটি শেষ করে দিয়েছে। The Internet Bug Bounty তাদের পেমেন্ট ৮০ শতাংশ কমিয়ে দিয়েছে।

সমস্যাটি এই নয় যে AI বাগ খুঁজে পেতে পারে না। সমস্যা হলো AI এমন অনেক রিপোর্ট তৈরি করে যা দেখতে আসল মনে হলেও আসলে ভুল। ট্রায়াজ (Triage) টিমগুলো এই অপ্রয়োজনীয় তথ্যের (noise) চাপে ডুবে যাচ্ছে।

২০২৬ সালে আপনার প্রয়োজনীয় দক্ষতা বাগ খুঁজে পাওয়া নয়। একটি মডেল দুপুরের খাবারের আগেই আপনাকে পঞ্চাশটি আইডিয়া দিয়ে দেবে। আসল দক্ষতা হলো কেন তার মধ্যে উনপঞ্চাশটি ভুল, তা প্রমাণ করা। আপনার এমন একটি পদ্ধতির প্রয়োজন যা সঠিক নেগেটিভ (correct negatives) ফলাফল দিতে পারে।

সোর্স-অ্যাভেইলেবল (source-available) কোডের জন্য এই দুই-ধাপের পদ্ধতিটি ব্যবহার করুন:

১. ফ্যান-আউট (Fan-out) (সস্তা মডেল) অথরাইজেশন সারফেসকে ছোট ছোট অংশে ভাগ করুন। প্রতিটি অংশ সমান্তরালভাবে (in parallel) পড়ুন। ভাঙা নিয়মগুলো খুঁজুন। এমন জায়গাগুলো খুঁজুন যেখানে ওনার চেক (owner check) ছাড়াই কোনো অবজেক্ট লোড হচ্ছে। এমন পাথ (path) খুঁজুন যা সিকিউরিটি গেট এড়িয়ে যায়। প্রতিটি সম্ভাব্য লিড (lead) খুঁজে বের করার দিকে মনোযোগ দিন। অনেক ফলস পজিটিভ (false positives) আসার সম্ভাবনা থাকবে।

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

সবচেয়ে গুরুত্বপূর্ণ আউটপুট হলো রিফিউটেশন বা খণ্ডন করার তালিকা (list of refutations)। কোনো কিছু কেন বাগ নয়, তার কারণগুলোর তালিকা ট্রায়াজারের কাছে আপনার বিশ্বাসযোগ্যতা বাড়ায়।

আমি একটি আইডেন্টিটি সার্ভার Ory Kratos পরীক্ষা করেছি। এই সিস্টেমটি পাসওয়ার্ড বা ইমেল পরিবর্তন করার মতো সংবেদনশীল কাজগুলো পরিচালনা করে। এটি একটি উচ্চ-ঝুঁকিপূর্ণ ক্ষেত্র।

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

আমি এটি যাচাই করতে দ্বিতীয় ধাপটি ব্যবহার করেছি। আমি দেখতে পেলাম যে, সেই মিসিং চেকটি কোনো এক্সপ্লয়েট (exploit) তৈরির সুযোগ দেয়নি। সিস্টেমটি লাইভ সেশন কুকি ব্যবহার করে এবং শেষ ধাপে পুনরায় প্রিভিলেজ বা অধিকার যাচাই করে। ত্রুটিটি আসলে কোনো বড় প্রভাব ফেলতে পারত না।

আমি যদি এটি রিপোর্ট করতাম, তবে আমি আমার বিশ্বাসযোগ্যতা হারাতাম। আসল গুরুত্ব ছিল চুপ থাকার আত্মবিশ্বাস।

একই পদ্ধতি একটি ভিন্ন টার্গেটে একটি আসল বাগ খুঁজে পেয়েছে। একটি সেকেন্ডারি এন্ট্রি পয়েন্ট অথরাইজেশন চেকটি মিরর (mirror) করতে ভুলে গিয়েছিল। ব্যবহারকারীর অ্যাক্সেস বাতিল করার পরেও তিনি একটি সাইড ডোর দিয়ে প্রবেশ করতে পারতেন।

বাগ হান্টিংয়ের বিজয়ীরা ভলিউমের বদলে সিগন্যালের (signal) দিকে মনোযোগ দেবে। একজন মানুষের চেয়ে বেশি কোড পড়ার জন্য AI ব্যবহার করুন। তারপর রিপোর্ট জমা দেওয়ার আগে নিজেকে ভুল প্রমাণ করতে AI ব্যবহার করুন।

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

Optional learning community: https://t.me/GyaanSetuAi