এই পোস্টে আমরা ব্রোকন অবজেক্ট লেভেল অনুমোদনের ব্যর্থতাটি অনুসন্ধান এবং আলোচনা করি discuss
আমরা ভাঙা অবজেক্ট স্তরের অনুমোদনের অর্থ কী তা ব্যাখ্যা করে শুরু করতে যাচ্ছি। তারপরে আমরা যুক্ত ঝুঁকির কারণগুলি ব্যাখ্যা করে আক্রমণটি অতিক্রম করব।
অবশেষে সাধারণ প্রতিরক্ষার দিকে নজর দেওয়ার আগে আমরা দুর্বলতার সম্ভাব্য কয়েকটি প্রভাবের দিকে তাকাব।
সংক্ষেপে, এই ধরণের আক্রমণ মানে ডেটা প্রয়োগ করা অনুমোদনের এটি করা উচিত হয় নি। এটি যখন হওয়া উচিত নয় তখন এটি সংস্থান এবং ডেটাতে অ্যাক্সেসের মঞ্জুরি দেয়।
ভাঙা বস্তুর স্তরের অনুমোদন অতীতে ইনসিকিউর ডাইরেক্ট অবজেক্ট রেফারেন্স (আইডিওআর) হিসাবে পরিচিত ছিল।
আমরা যখন কথাটি বলি অবজেক্ট ব্রোকন অবজেক্ট লেভেল অথরাইজেশনে, আমরা যা বলতে চাইছি তা হ'ল মান বা মানগুলির একটি গ্রুপ। কোনও বস্তু একটি সামাজিক মিডিয়া পোস্ট হতে পারে যার মধ্যে লেখক, সামগ্রী এবং পোস্টের তারিখ থাকে।
অনুমোদন ব্যবহারকারীকে অ্যাক্সেসের জন্য কী অনুমতি দেওয়া হয় তা সবই। অতএব, আমরা এমন একজন ব্যবহারকারী সম্পর্কে কথা বলছি যিনি ইতিমধ্যে লগ ইন করেছেন।
যখন কোনও ব্যবহারকারী কোনও এপিআই-তে অনুরোধ করে, অনুরোধটি অবজেক্টগুলিতে অ্যাক্সেস করতে ব্যবহৃত হয়। অনুমোদনের বিষয়ে এই সিদ্ধান্তটিই নেওয়া উচিত। ব্যবহারকারীর কেবলমাত্র সেগুলিতে অ্যাক্সেস করতে সক্ষম হওয়া উচিত যা তাদের অ্যাক্সেস পেয়েছে। এটি অনুমোদনটি সঠিকভাবে কাজ করছে।
অনুমোদনটি নষ্ট হয়ে গেলে ব্যবহারকারীদের ডেটা এবং সংস্থানগুলি অ্যাক্সেস করার অনুমতি দেওয়া হয় যা তাদের অনুমতি দেওয়া উচিত নয়।
একটি এপিআই জিনিসগুলিতে বিভিন্ন ক্রিয়াকলাপকে সহজতর করে। আমরা অবজেক্টগুলি পেতে, তৈরি করতে, আপডেট করতে বা এমনকি মুছতে পারি।
কোনও সামগ্রীর সাথে ইন্টারঅ্যাক্ট করা কোনও এপিআইয়ের পুরো বিন্দু, অতএব যদি সেই সমস্ত বস্তুর চারপাশে অনুমোদনের নিয়ন্ত্রণগুলি নষ্ট হয়ে যায়, তবে আমাদের ব্রোকন অবজেক্ট লেভেলের অ্যাক্সেস দুর্বলতা রয়েছে।
একবার এই দুর্বলতাটি খুঁজে পাওয়া গেলে এটি কাজে লাগানো সহজ। সমস্ত আক্রমণকারীকে করণীয় হ'ল একটি অনুরোধে একটি শনাক্তকারী পরিবর্তন করা এবং তারা সম্ভাব্যত সেইগুলিতে অ্যাক্সেস পেয়েছিল যা তাদের অনুমতি দেওয়া উচিত নয়।
আসুন এটি একটি উদাহরণে দেখুন।
এখানে, আমাদের একটি ইউআরএল রয়েছে যা একটি এপিআই কল করতে ব্যবহৃত হয়:
https://myemail.com/messages/12345
এই API কলটি ব্যবহারকারীর ব্যক্তিগত বার্তা পুনরুদ্ধার করতে ব্যবহৃত হয়। ব্যবহৃত সম্পদ হ'ল বার্তা ।
বার্তাটি হ'ল সেই বস্তুটি যা আমরা ব্রোকন অবজেক্ট লেভেল অনুমোদনে উল্লেখ করছি। ধারণাটি হ'ল ব্যক্তিগত বার্তাগুলি কেবল উদ্দেশ্যপ্রাপ্ত প্রাপক দ্বারা পঠিত যেতে পারে।
এর পরে, আমাদের কাছে বার্তাটির আইডি আছে 12345
এটি কোনও আক্রমণকারীর পক্ষে একটি গুরুত্বপূর্ণ অংশ।
আইডি পরিষেবাটি জানায় যে কোন রেকর্ডটি ফিরবে। এপিআই একটি ডেটা স্টোর থেকে সেই রেকর্ডটি পুনরুদ্ধার করে এবং প্রতিক্রিয়াতে এটি ফেরত দেয়।
এখন আমরা কি _ _ + _ | থেকে আইডি পরিবর্তন করি তা হলে ঘটে যায় থেকে 12345
? যেমন:
12346
আইডি সহ বার্তাটি যদি https://myemail.com/messages/12346
আমাদের ব্যবহারকারীর উদ্দেশ্যে ছিল, আমাদের এটি পুনরুদ্ধার করতে সক্ষম হওয়া উচিত।
তবে যদি বার্তাটি অন্য ব্যবহারকারীর হয় তবে এপিআই কখনও তা ফিরিয়ে দেওয়া উচিত নয়। আমরা যদি বার্তাটি পুনরুদ্ধার করতে পরিচালিত করি, তবে আমাদের একটি ব্রোকেন লেভেল অবজেক্ট অনুমোদনের ব্যর্থতা রয়েছে।
আর একটি উদাহরণ একটি সংস্থান আপডেট করার জন্য একটি পোষ্ট অনুরোধ পাঠাচ্ছে। আমরা JSON পেলোডে আইডিটি নিয়ে প্রায় খেলতে পারি:
12346
আমরা যদি কোনও সম্ভাবনা রাখি {
অনুরোধে এবং অন্য ব্যবহারকারীর বিবরণ আপডেট করতে সক্ষম হয়েছি, তারপরে আমাদের একটি বিশাল সমস্যা রয়েছে।
'userId': '12345678',
'oldPassword': 'My_0ld_Pa$$',
'newPassword': '$uperS3CurE' }
একবার আমরা যখন জানব যে দুর্বলতা বিদ্যমান রয়েছে, তখন আমরা এটিকে সব ধরণের কাজে লাগাতে পারি। পূর্বে উল্লিখিত হিসাবে, আমরা একটি API এ বিভিন্ন HTTP পদ্ধতি ব্যবহার করতে পারি। আমরা বার্তা আপডেট করতে বা মুছতে আইডিটি ব্যবহার করতে পারি!
আমরা যদি সমস্ত আইডির মাধ্যমে পুনরাবৃত্তি করতে সক্ষম হই তবে কী হবে? আমরা সঞ্চিত প্রতিটি বার্তা মুছতে সক্ষম হতে পারি। এটি একটি বড় প্রভাব।
এটি খুব সাধারণ দুর্বলতা। পূর্বে উল্লিখিত হিসাবে, API গুলি অবজেক্টগুলিতে অ্যাক্সেস করতে ব্যবহৃত হয় এবং বেশিরভাগ ক্ষেত্রে আমরা সংস্থানগুলি সনাক্ত করতে অনুরোধে আইডি ব্যবহার করি। প্রশ্নটি হল, সেই অ্যাক্সেসের জন্য সেখানে কি অনুমোদনের চেক রয়েছে?
কোডে ব্রোকন অবজেক্ট লেভেল অনুমোদনের দুর্বলতা থাকার কারণে মূলত দুটি কারণ রয়েছে।
প্রথমটি হ'ল কোনও সুরক্ষা নিয়ন্ত্রণ কেবল প্রয়োগ করা হয়নি। অনুরোধে অনুমোদনের চেক সম্পাদনের জন্য কোডটি লেখা হয়নি।
দ্বিতীয় কারণ হ'ল মানুষের ত্রুটি। মানুষ ভুল করে. একটি ভাল উদাহরণ হ'ল একটি এপিআই যা সংবেদনশীল ডেটাতে সংবেদনশীল উভয়কেই পরিচালনা করে। কিছু অনুরোধের অনুমোদন চেক থাকা উচিত এবং অন্যদের উচিত হবে না। সুতরাং কোড লেখার সময় কোনও চেক মিস করা সহজ হতে পারে।
স্বয়ংক্রিয় সরঞ্জামগুলি সাধারণত এই ধরণের দুর্বলতা খুঁজে পাবে না কারণ এটি কমপক্ষে কিছুটা মস্তিষ্কের শক্তি গ্রহণ করে।
একজন মানুষের পক্ষে এই দুর্বলতা সনাক্ত করা তুলনামূলকভাবে সহজ। আমাদের যা করার দরকার তা হ'ল আইডেন্টিফায়ারটি অনুসন্ধান করা যা অবজেক্টগুলি পুনরুদ্ধার করতে ব্যবহৃত হচ্ছে।
নোট শনাক্তকারীটি url তে, অনুরোধের বডি বা শিরোনামে থাকতে পারে তা নোট করুন।
এছাড়াও আমাদের দুর্বলতা আছে কি না তা দেখতে ফিরে আসা প্রতিক্রিয়াটিকে বিশ্লেষণ ও ব্যাখ্যা করতে হবে।
আমরা যে কোনও সরঞ্জাম ব্যবহার করতে পারি যা HTTP অনুরোধ এবং প্রতিক্রিয়াগুলি পরীক্ষা করে। এর মধ্যে কয়েকটি:
কিছু কিছু অনুরোধ স্বয়ংক্রিয় করতে বার্প স্যুট ব্যবহার করা যেতে পারে।
আমরা এখানে দুটি প্রতিরক্ষা পেয়েছি।
প্রথম প্রতিরক্ষা ব্যবহার করা হয় অপ্রত্যাশিত আইডি যেমন জিইউইডিএস । যখন আমরা কোডটিতে পরপর সংখ্যা ব্যবহার করি, যেমন। 12345, এর অর্থ আইডিগুলি খুব অনুমানযোগ্য। কোনও আক্রমণকারীকে অবজেক্টগুলি সন্ধানের জন্য সংখ্যার মধ্য দিয়ে যাওয়ার জন্য প্রচুর পরিশ্রমের প্রয়োজন হয় না।
জিইউডির একটি উদাহরণ:
userId
জিইউইডিগুলি জটিল এবং অনুমান করা খুব কঠিন এবং অনুক্রমিক নয়।
পরবর্তী প্রতিরক্ষা আসলে কিছু কোড আছে অনুমোদন পরীক্ষা করুন । এই চেকটি প্রায়শই ঘটে না।
অনুমোদন চেক করা যে কোনও সময় ঘটতে হবে যখন কোনও ব্যবহারকারীর ব্যবহৃত আইডির মধ্যে এপিআই উপস্থাপন করে। এখানে মূল নীতিটি হ'ল আমাদের কখনও ডেটা বিশ্বাস করা উচিত নয় যা ব্যবহারকারী এপিআইতে দেয়।
ব্যবহারকারী অবজেক্টটি অ্যাক্সেস করার জন্য অনুমোদিত তা নিশ্চিত করার জন্য অনুরোধ করা আইডিটি পরীক্ষা করা দরকার।
এই চেকগুলি সফ্টওয়্যার বিকাশের সময় এবং কেবলমাত্র কোড কোড পর্যালোচনা এবং / অথবা স্বয়ংক্রিয় চেকগুলি হতে পারে যা বিকাশের পুরোপুরি অনুমোদন ব্যর্থতার জন্য পরীক্ষা করে।
যেমনটি আমরা দেখেছি ব্রোকন অবজেক্ট লেভেলের অনুমোদন হ'ল একটি সাধারণ দুর্বলতা এবং স্পট এবং আক্রমণ করা সহজ। সম্ভাব্য প্রভাব বিশাল।
এই দুর্বলতার আসল উত্স হ'ল ডেটা বিশ্বাস করে যা ক্লায়েন্ট দ্বারা API এ দেওয়া হয় passed
প্রতিরক্ষা একটি বড় অংশ নিশ্চিত করা হয় যে আমরা সেই ডেটাতে বিশ্বাস করি না। সুতরাং আমাদের নিশ্চিত হওয়া দরকার যে অনুমোদনের চেকগুলি রয়েছে।