اس پوسٹ میں ہم بروکن آبجیکٹ لیول اتھارٹی کی ناکامی کی تلاش اور ان پر تبادلہ خیال کرتے ہیں۔
ہم یہ توجیہ کرکے اس بات کی شروعات کر رہے ہیں کہ ٹوٹے ہوئے آبجیکٹ کی سطح کے اختیار کا کیا مطلب ہے۔ اس کے بعد ہم اس سے منسلک خطرے کے عوامل کی وضاحت کرتے ہوئے حملہ کریں گے۔
آخر کار ہم عام دفاعوں پر ایک نظر ڈالنے سے پہلے ہم اس خطرے کے کچھ ممکنہ اثرات کو دیکھیں گے۔
مختصرا. ، اس نوعیت کے حملے کا مطلب یہ ہے کہ اعداد و شمار پر لگائی گئی اجازت اس طرح نہیں ہو رہی ہے جتنی اسے چاہئے۔ اس کے نتیجے میں وسائل اور ڈیٹا تک رسائی حاصل ہوجاتی ہے جب نہیں ہونا چاہئے۔
ٹوٹے ہوئے آبجیکٹ کی سطح کو ماضی میں غیر محفوظ براہ راست آبجیکٹ حوالہ (IDOR) کے نام سے جانا جاتا ہے۔
جب ہم لفظ کہتے ہیں چیز بروکن آبجیکٹ لیول اتھارٹی میں ، ہمارا کیا مطلب ہے قدر یا قدروں کا گروپ۔ شے ایک سوشل میڈیا پوسٹ ہوسکتی ہے جس میں مصنف ، مواد اور اشاعت کی تاریخ ہوتی ہے۔
اجازت وہ سب کچھ ہے جس میں صارف کو رسائی حاصل کرنے کی اجازت ہے۔ لہذا ، ہم ایک ایسے صارف کے بارے میں بات کر رہے ہیں جو پہلے ہی لاگ ان ہے۔
جب کوئی صارف کسی API سے درخواست کرتا ہے تو ، اس درخواست کا استعمال اشیاء تک رسائی حاصل کرنے کے لئے کیا جاتا ہے۔ یہ وہ نقطہ ہے جو اختیار کے بارے میں فیصلہ کرنا چاہئے۔ صارف کو صرف ان اشیاء تک رسائی حاصل کرنے کے قابل ہونا چاہئے جس میں ان کو رسائی دی گئی ہو۔ یہ اجازت سے کام کرنا صحیح ہے۔
جب اجازت کو توڑا جاتا ہے تو ، صارفین کو اعداد و شمار اور وسائل تک رسائی کی اجازت ہوتی ہے جس کی انہیں اجازت نہیں دی جانی چاہئے۔
ایک API اشیاء پر مختلف کارروائیوں کی سہولت فراہم کرتی ہے۔ ہم اشیاء کو حاصل ، تخلیق ، اپ ڈیٹ یا حذف کرسکتے ہیں۔
کسی چیز کے ساتھ بات چیت کرنا ایک API کا پورا نکتہ ہے ، لہذا اگر ان اشیاء کے ارد گرد اختیارات کے کنٹرول توڑ دیئے جاتے ہیں ، تو ہمارے پاس بروکن آبجیکٹ لیول تک پہنچنے کا خطرہ ہوتا ہے۔
ایک بار جب اس خطرے کا پتہ چل جاتا ہے تو اس کا استحصال کرنا عام طور پر آسان ہے۔ حملہ آور کو بس ایک درخواست میں ایک شناخت کنندہ تبدیل کرنا ہے اور انہیں ممکنہ طور پر ایسی اشیاء تک رسائی حاصل ہوگئی ہے جس کی انہیں اجازت نہیں دی جانی چاہئے۔
آئیے اسے ایک مثال میں دیکھتے ہیں۔
یہاں ، ہمارے پاس ایک URL ہے جو API کو کال کرنے کے لئے استعمال ہوتا ہے:
https://myemail.com/messages/12345
یہ API کال صارف کے نجی پیغامات کو بازیافت کرنے کے لئے استعمال کی جاتی ہے۔ جو وسیلہ استعمال کیا جارہا ہے وہ ہے پیغامات .
پیغام وہ اعتراض ہے جس کا ذکر ہم بروکن آبجیکٹ لیول اتھارٹی میں کر رہے ہیں۔ مفروضہ یہ ہے کہ نجی پیغامات صرف مطلوبہ وصول کنندہ ہی پڑھ سکتے ہیں۔
اگلا ، ہمارے پاس پیغام کی شناخت ہے 12345
حملہ آور کے لئے یہ ایک اہم حصہ ہے۔
ID سروس کو بتاتا ہے کہ کون سا ریکارڈ لوٹنا ہے۔ API ایک اعداد و شمار کی دکان سے اس ریکارڈ کو بازیافت کرتا ہے اور اسے جواب میں لوٹاتا ہے۔
اب اگر ہم ID _ | _ | سے ID کو تبدیل کردیں تو کیا ہوتا ہے to 12345
؟ جیسے:
12346
اگر ID کے ساتھ پیغام https://myemail.com/messages/12346
ہمارے صارف کا مقصد تھا ، ہمیں اسے بازیافت کرنے کے قابل ہونا چاہئے۔
لیکن اگر یہ پیغام کسی دوسرے صارف کا تھا تو ، API کو اسے کبھی نہیں لوٹانا چاہئے۔ اگر ہم نے مسیج کو بازیافت کرنے کا انتظام کیا تو ہمارے پاس بروکن لیول آبجیکٹ اتھارٹی کی ناکامی ہے۔
ایک اور مثال ایک وسائل کو اپ ڈیٹ کرنے کے لئے ایک POST درخواست بھیج رہی ہے۔ ہم JSON پے لوڈ میں آئی ڈی کے ساتھ کھیل سکتے ہیں:
12346
اگر ہم نے کوئی صلاحیت رکھی ہو تو {
درخواست میں اور کسی دوسرے صارف کی تفصیلات کو اپ ڈیٹ کرنے کے قابل تھے ، تب ہمیں ایک بہت بڑا مسئلہ درپیش ہے۔
'userId': '12345678',
'oldPassword': 'My_0ld_Pa$$',
'newPassword': '$uperS3CurE' }
ایک بار جب ہم جانتے ہیں کہ کمزوری موجود ہے تو ، ہم اس کا ہر طرح سے استحصال کرسکتے ہیں۔ جیسا کہ پہلے ذکر ہوا ہے ، ہم ایک API پر مختلف HTTP طریقوں کا استعمال کرسکتے ہیں۔ ہم میسجز کو اپ ڈیٹ کرنے یا حذف کرنے کے لئے آئی ڈی کا استعمال کرسکتے ہیں!
اگر ہم سبھی شناختی کارڈوں کے ذریعہ اعادہ کرنے کے قابل ہو جائیں تو کیا ہوتا ہے؟ ہم ذخیرہ کردہ ہر پیغام کو حذف کرنے میں کامیاب ہوسکتے ہیں۔ یہ ایک بہت بڑا اثر ہے۔
یہ ایک بہت عام خطرہ ہے۔ جیسا کہ پہلے ذکر ہوا ، APIs اشیاء تک رسائی حاصل کرنے کے لئے استعمال ہوتے ہیں اور زیادہ تر معاملات میں ہم درخواستوں کو وسائل کی شناخت کے لئے استعمال کرتے ہیں۔ سوال یہ ہے کہ کیا اس رسائی کے ل author اختیارات کے چیک موجود ہیں؟
بنیادی طور پر دو وجوہات ہیں کہ ہمارے پاس کوڈ میں ٹوٹے ہوئے آبجیکٹ لیول کی اجازت سے متعلق خطرات ہیں۔
پہلا یہ کہ سیکیورٹی کنٹرول پر آسانی سے عمل درآمد نہیں ہوا۔ درخواستوں پر اجازت چیک کرنے کے لئے کوڈ نہیں لکھا گیا ہے۔
دوسری وجہ انسانی غلطی ہے۔ لوگ غلطیاں کرتے ہیں۔ اس کی ایک عمدہ مثال ایک API میں ہے جو غیر حساس ڈیٹا پر حساس دونوں کو سنبھالتی ہے۔ کچھ درخواستوں کو اجازت کے چیک ہونے چاہ and اور دوسروں کو نہیں ہونا چاہئے۔ لہذا کوڈ لکھتے وقت چیک کو چھوٹنا آسان ہوسکتا ہے۔
خودکار ٹولز کو عام طور پر اس قسم کا خطرہ نہیں مل پاتا ہے کیونکہ اس میں کم از کم دماغی طاقت کا تھوڑا سا لگنا ہوتا ہے۔
انسان کو اس خطرے کا پتہ لگانا نسبتا easy آسان ہے۔ ہمیں صرف اس شناخت کنندہ کو تلاش کرنے کی ضرورت ہے جو اشیاء کو بازیافت کرنے کے لئے استعمال ہو رہا ہے۔
نوٹ کریں کہ شناخت کنندہ ارل میں ، درخواست باڈی میں یا ہیڈر میں ہوسکتا ہے۔
نیز ہمیں اس ردعمل کا تجزیہ کرنا ہے اور اس کی ترجمانی کرنا ہے جو واپس آنے کے بعد یہ دیکھنے کے ل. کہ آیا وہاں کوئی خطرہ ہے یا نہیں۔
ہم کسی بھی ٹول کا استعمال کرسکتے ہیں جو HTTP درخواستوں اور جوابات کا معائنہ کرتا ہے۔ ان میں سے کچھ یہ ہیں:
کچھ درخواستوں کو خودکار کرنے کے لئے برپ سویٹ کا بھی استعمال کیا جاسکتا ہے۔
ہمیں یہاں دو دفاع ملے ہیں۔
پہلا دفاع استعمال کرنا ہے غیر متوقع شناختات جیسے جی ای یو ڈی . جب ہم کوڈ میں لگاتار نمبر استعمال کرتے ہیں ، جیسے۔ 12345 ، اس کا مطلب یہ ہے کہ آئی ڈی بہت پیشن گوئ ہیں۔ کسی حملہ آور کو اشیاء تلاش کرنے کے ل numbers تعداد سے گزرنے کے لئے بہت زیادہ مشقت کی ضرورت نہیں ہوتی ہے۔
جی ای ڈی کی ایک مثال:
userId
گئیوڈیز پیچیدہ اور اندازہ لگانا بہت مشکل ہیں اور یہ ترتیب وار نہیں ہیں۔
اگلے دفاع میں اصل میں کچھ کوڈ ہونا ہے اجازت چیک کریں . یہ چیک اکثر نہیں ہوتا ہے۔
اجازت کی جانچ پڑتال کسی بھی وقت ہونی چاہئے جب کوئی صارف کسی ID کے اندر API پیش کرے جو استعمال ہونے والا ہے۔ یہاں بنیادی اصول یہ ہے کہ ہمیں کبھی بھی ڈیٹا پر اعتماد نہیں کرنا چاہئے جو صارف API کو دیتا ہے۔
مطلوبہ شناخت کو چیک کرنے کی ضرورت ہے اس بات کی تصدیق کے لئے کہ صارف اس مقصد تک رسائی حاصل کرنے کا مجاز ہے۔
یہ چیک سافٹ ویئر ڈویلپمنٹ اور / یا خودکار چیک کے دوران صرف کوڈ کے آسان جائزے ہوسکتے ہیں جو پوری نشو و نما میں اجازت کی ناکامیوں کو چیک کرتے ہیں۔
جیسا کہ ہم نے دیکھا ہے کہ ٹوٹا ہوا آبجیکٹ لیول کی اتھارٹی ایک عام خطرہ ہے اور اسپاٹ اور حملہ کرنا آسان ہے۔ ممکنہ اثرات بہت زیادہ ہیں۔
اس عدم استحکام کا اصل منبع ڈیٹا پر اعتماد کرنا ہے جو موکل کے ذریعہ API کو منتقل کیا جاتا ہے۔
دفاع کا ایک بڑا حصہ یہ یقینی بنانا ہے کہ ہمیں اس ڈیٹا پر اعتماد نہیں ہے۔ لہذا ہمیں یہ یقینی بنانا ہوگا کہ اجازت کی جانچ پڑتال موجود ہے۔