ویب ہک (Webhook) کی آتھنٹیکیشن کرنا اس کی ویلیڈیشن (Validation) کرنا نہیں ہے
بہت سے ڈویلپرز پروڈکشن میں ایک خطرناک بگ (bug) بھیج دیتے ہیں۔ وہ آتھنٹیکیشن (authentication) اور ویلیڈیشن (validation) کے درمیان فرق کرنے میں غلطی کرتے ہیں۔
آتھنٹیکیشن کا مطلب ہے کہ پیغام صحیح فراہم کنندہ (provider) سے آیا ہے۔ ویلیڈیشن کا مطلب ہے کہ پیغام کے اندر موجود ڈیٹا درست ہے۔
اگر آپ صرف پہلا قدم اٹھاتے ہیں، تو آپ کو مالی نقصان ہو سکتا ہے۔
ورڈپریس (WordPress) کی ایک حالیہ کمزوری (CVE-2026-9189) اسی غلطی کو ظاہر کرتی ہے۔ Contact Form 7 PayPal اور Stripe Add-on ادائیگی کی رقم کی جانچ کرنے میں ناکام رہا۔
ایک حملہ آور اس طرح اس کا فائدہ اٹھاتا ہے:
- ایک حملہ آور 2,000 ڈالر کا آرڈر بناتا ہے۔
- حملہ آور اصل میں 1 ڈالر کی ادائیگی کرتا ہے۔
- وہ انوائس نمبر کو 2,000 ڈالر کے آرڈر کے مطابق سیٹ کرتا ہے۔
- PayPal 1 ڈالر کی ادائیگی کے لیے ایک حقیقی اور تصدیق شدہ نوٹیفکیشن بھیجتا ہے۔
- پلگ ان تصدیق شدہ پیغام دیکھتا ہے اور 2,000 ڈالر کے آرڈر کو ادا شدہ (paid) قرار دے دیتا ہے۔
پلگ ان نے پیغام بھیجنے والے پر تو بھروسہ کیا لیکن پیغام کے مواد کو نظر انداز کر دیا۔
یہ غلطی نہ کریں۔ جب آپ ویب ہکس (webhooks) کو ہینڈل کریں، تو ان اقدامات پر عمل کریں:
- سگنیچرز (signatures) یا شیئرڈ سیکرٹس (shared secrets) کا استعمال کرتے ہوئے پیغام کی آتھنٹیکیشن کریں۔
- رقم اور کرنسی کا آپ کے ڈیٹا بیس میں موجود آرڈر سے ملان کریں۔
- تصدیق کریں کہ وصول کنندہ کا ای میل آپ کے اکاؤنٹ سے مطابقت رکھتا ہے۔
- آرڈر کو لنک کرنے کے لیے سرور سائیڈ ویلیو کا استعمال کریں۔ صرف پے لوڈ (payload) میں بھیجے گئے انوائس آئی ڈی پر بھروسہ نہ کریں۔
- ڈپلیکیٹ ٹرانزیکشن آئی ڈیز کو نظر انداز کرنے کے لیے آئیڈیمپوٹینسی (idempotency) کا استعمال کریں۔
- تمام درخواستوں کے لیے TLS ویریفیکیشن کو فعال رکھیں۔
- Fail closed کا اصول اپنائیں۔ اگر کوئی بھی چیک ناکام ہو جائے تو سب کچھ روک دیں۔
اگر آپ Contact Form 7 PayPal اور Stripe Add-on کا ورژن 2.4.9 یا اس سے پرانا استعمال کر رہے ہیں، تو اسے ابھی اپ ڈیٹ کریں۔ ہر غیر ادا شدہ آرڈر اس حملے کا نشانہ بن سکتا ہے۔
ہمیشہ پیغام بھیجنے والے کی تصدیق کریں، پھر ڈیٹا کو چیک کریں۔