𝗔𝘂𝘁𝗵𝗲𝗻𝘁𝗶𝗰𝗮𝘁𝗶𝗻𝗴 𝗮 𝗪𝗲𝗯𝗵𝗼𝗼𝗸 𝗜𝘀𝗻'𝘁 𝗩𝗮𝗹𝗶𝗱𝗮𝘁𝗶𝗻𝗴 𝗜𝘁
অনেক ডেভেলপার প্রোডাকশনে একটি বিপজ্জনক বাগ (bug) পাঠিয়ে দেন। তারা অথেন্টিকেশন (authentication) এবং ভ্যালিডেশনের (validation) মধ্যে গুলিয়ে ফেলেন।
অথেন্টিকেশন মানে হলো মেসেজটি সঠিক প্রোভাইডার থেকে এসেছে। ভ্যালিডেশন মানে হলো মেসেজের ভেতরের ডেটা সঠিক।
আপনি যদি কেবল প্রথম ধাপটি অনুসরণ করেন, তবে আপনি আর্থিক ক্ষতির সম্মুখীন হবেন।
সাম্প্রতিক একটি WordPress ভালনারেবিলিটি (CVE-2026-9189) এই ত্রুটিটি প্রকাশ করে। Contact Form 7 PayPal and Stripe Add-on পেমেন্টের পরিমাণ যাচাই করতে ব্যর্থ হয়েছিল।
একজন আক্রমণকারী যেভাবে এটি কাজে লাগায়:
- একজন আক্রমণকারী একটি $২,০০০-এর অর্ডার তৈরি করে।
- আক্রমণকারী একটি আসল $১ পেমেন্ট করে।
- তারা ইনভয়েস নম্বরটি $২,০০০-এর অর্ডারের সাথে মিলিয়ে দেয়।
- PayPal $১ পেমেন্টের জন্য একটি আসল এবং ভেরিফাইড নোটিফিকেশন পাঠায়।
- প্লাগইনটি ভেরিফাইড মেসেজটি দেখে এবং $২,০০০-এর অর্ডারটিকে 'পেইড' (paid) হিসেবে চিহ্নিত করে।
প্লাগইনটি মেসেঞ্জারকে বিশ্বাস করেছিল কিন্তু মেসেজটিকে উপেক্ষা করেছিল।
এই ভুলটি করবেন না। যখন আপনি webhook হ্যান্ডেল করবেন, তখন এই ধাপগুলো অনুসরণ করুন:
- সিগনেচার (signatures) বা শেয়ার্ড সিক্রেট (shared secrets) ব্যবহার করে মেসেজটি অথেন্টিকেট করুন।
- আপনার ডেটাবেসে থাকা অর্ডারের সাথে অ্যামাউন্ট এবং কারেন্সি মিলিয়ে দেখুন।
- প্রাপকের ইমেল আপনার অ্যাকাউন্টের সাথে মিলছে কি না তা যাচাই করুন।
- অর্ডার লিঙ্ক করার জন্য একটি সার্ভার-সাইড ভ্যালু ব্যবহার করুন। শুধুমাত্র পেলোড (payload)-এ পাঠানো ইনভয়েস আইডি-র ওপর নির্ভর করবেন না।
- ডুপ্লিকেট ট্রানজ্যাকশন আইডি এড়াতে idempotency ব্যবহার করুন।
- সমস্ত রিকোয়েস্টের জন্য TLS ভেরিফিকেশন সক্রিয় রাখুন।
- Fail closed নীতি অনুসরণ করুন। যদি কোনো চেক ব্যর্থ হয়, তবে সবকিছু বন্ধ করে দিন।
আপনি যদি Contact Form 7 PayPal and Stripe Add-on ভার্সন ২.৪.৯ বা তার আগের ভার্সন ব্যবহার করেন, তবে এখনই আপডেট করুন। প্রতিটি অপরিশোধিত (unpaid) অর্ডার এই এক্সপ্লয়েটের জন্য একটি লক্ষ্যবস্তু।
সর্বদা মেসেঞ্জারকে অথেন্টিকেট করুন, তারপর ডেটা যাচাই করুন।