OWASP বিভাগ: MASVS-প্ল্যাটফর্ম: প্ল্যাটফর্ম ইন্টারঅ্যাকশন
ওভারভিউ
অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি এবং অ্যান্ড্রয়েড সিস্টেমগুলি তাদের আগ্রহী হতে পারে এমন ইভেন্টগুলির অন্যান্য অ্যাপগুলিকে জানানোর জন্য একটি বার্তাপ্রেরণ সিস্টেম হিসাবে সম্প্রচারগুলি ব্যবহার করতে পারে৷ স্টিকি সম্প্রচার হল একটি বিশেষ ধরণের সম্প্রচার যার জন্য পাঠানো অভিপ্রায় বস্তু(গুলি) সম্প্রচারের পরে ক্যাশে থেকে যায়৷ সম্পূর্ণ হয় সিস্টেম রিসিভারের পরবর্তী নিবন্ধনগুলিতে স্টিকি উদ্দেশ্যগুলি পুনরায় সম্প্রচার করতে পারে। দুর্ভাগ্যবশত, স্টিকি ব্রডকাস্ট এপিআই বেশ কিছু নিরাপত্তা-সম্পর্কিত ত্রুটির কারণে ভুগছে, যে কারণে এটি অ্যান্ড্রয়েড 5.0 (এপিআই লেভেল 21) এ অবমূল্যায়িত হয়েছে।
যে কেউ স্টিকি সম্প্রচার অ্যাক্সেস করতে পারেন
স্টিকি সম্প্রচারগুলি নির্দিষ্ট অনুমতি ধারণকারী রিসিভারগুলিতে সীমাবদ্ধ করা যাবে না৷ অতএব, তারা সংবেদনশীল তথ্য সম্প্রচারের জন্য উপযুক্ত নয়। এটা ভাবতে প্রলুব্ধ হতে পারে যে সম্প্রচারের Intent
অ্যাপ্লিকেশন প্যাকেজের নাম উল্লেখ করা BroadcastReceivers
এর সেটকে সীমাবদ্ধ করে:
কোটলিন
val intent = Intent("com.example.NOTIFY").apply {
setPackage("com.example.myapp")
}
applicationContext.sendBroadcast(intent)
জাভা
Intent intent = new Intent("com.example.NOTIFY");
intent.setPackage("com.example.myapp");
getApplicationContext().sendBroadcast(intent);
উদাহরণে, সম্প্রচারটি পাঠানো হলে শুধুমাত্র com.example.myapp
প্যাকেজের রিসিভাররা অভিপ্রায় গ্রহণ করে। যাইহোক, যখন স্টিকি ক্যাশে থেকে ইন্টেন্ট পুনরায় সম্প্রচার করা হয় তখন প্যাকেজ নামের ফিল্টারটি প্রয়োগ করা হয় না। registerReceiver()
পদ্ধতি ব্যবহার করে একটি রিসিভার নিবন্ধন করার সময়, নির্দিষ্ট ফিল্টারের সাথে মেলে স্টিকি ক্যাশের সমস্ত অভিপ্রায় রিসিভারের কাছে পুনরায় সম্প্রচার করা হয়, প্রাপকটি যে প্যাকেজটিতে থাকুক না কেন।
যে কেউ স্টিকি সম্প্রচার পাঠাতে পারে
স্টিকি সম্প্রচার পাঠাতে, একটি অ্যাপের শুধুমাত্র android.permission.BROADCAST_STICKY
অনুমতি প্রয়োজন, যেটি অ্যাপটি ইনস্টল করা হলে স্বয়ংক্রিয়ভাবে মঞ্জুর করা হয়। অতএব, আক্রমণকারীরা যে কোনো রিসিভারের কাছে যেকোনো উদ্দেশ্য পাঠাতে পারে, সম্ভাব্যভাবে অন্য অ্যাপে অননুমোদিত অ্যাক্সেস লাভ করে। ব্রডকাস্ট রিসিভার প্রেরকদের একটি নির্দিষ্ট অনুমতি ধারণকারীদের মধ্যে সীমাবদ্ধ রাখতে পারে। যাইহোক, এটি করে, রিসিভার স্টিকি ক্যাশে থেকে সম্প্রচার গ্রহণ করতে পারে না কারণ সেগুলি কোনো অ্যাপের পরিচয়ের প্রেক্ষিতে পাঠানো হয় না এবং কোনো অনুমতি নিয়ে সম্প্রচার করা হয় না।
যে কেউ স্টিকি সম্প্রচার সংশোধন করতে পারে
যখন একটি অভিপ্রায় একটি স্টিকি সম্প্রচারের অংশ হয়, তখন সেই অভিপ্রায়টি স্টিকি ক্যাশেতে একই অ্যাকশন, ডেটা, টাইপ, শনাক্তকারী, শ্রেণী এবং বিভাগগুলি রয়েছে এমন কোনো পূর্ববর্তী উদাহরণকে প্রতিস্থাপন করে। অতএব, একজন আক্রমণকারী একটি বৈধ অ্যাপ থেকে স্টিকি অভিপ্রায়ে অতিরিক্ত ডেটা তুচ্ছভাবে ওভাররাইট করতে পারে, যা অন্য রিসিভারগুলিতে পুনরায় সম্প্রচারিত হতে পারে।
sendStickyOrderedBroadcast()
পদ্ধতি ব্যবহার করে প্রেরিত সম্প্রচারগুলি একবারে একটি রিসিভারের কাছে বিতরণ করা হয় যাতে উচ্চ অগ্রাধিকার সহ রিসিভাররা কম অগ্রাধিকার সহ রিসিভারদের কাছে বিতরণ করার আগে সম্প্রচার গ্রহণ করতে পারে৷ যেহেতু প্রতিটি রিসিভার পালাক্রমে কার্যকর করে, এটি পরবর্তী রিসিভারের কাছে একটি ফলাফল প্রচার করতে পারে, যেমন setResultData()
কল করে, অথবা এটি সম্প্রচার বাতিল করতে পারে, পরবর্তী রিসিভারদের সম্প্রচার গ্রহণ থেকে বাধা দেয়। একজন আক্রমণকারী যেটি একটি বৈধ অ্যাপ থেকে স্টিকি অর্ডার করা সম্প্রচার গ্রহণ করতে পারে সে সম্প্রচার ফলাফলের ডেটা বা সম্প্রচার সম্পূর্ণভাবে বাদ দেওয়ার জন্য একটি উচ্চ-অগ্রাধিকার রিসিভার তৈরি করতে পারে।
প্রভাব
কিভাবে স্টিকি সম্প্রচার ব্যবহার করা হয় এবং সম্প্রচার রিসিভারে কোন ডেটা পাঠানো হয় তার উপর নির্ভর করে প্রভাব পরিবর্তিত হয়। সাধারণভাবে বলতে গেলে, স্টিকি সম্প্রচারের ব্যবহার সংবেদনশীল ডেটা এক্সপোজার, ডেটা টেম্পারিং, অন্য অ্যাপে আচরণ চালানোর অননুমোদিত অ্যাক্সেস এবং পরিষেবা অস্বীকার করতে পারে।
প্রশমন
স্টিকি সম্প্রচার ব্যবহার করা উচিত নয়। প্রস্তাবিত প্যাটার্ন হল অন্য একটি পদ্ধতির সাথে নন-স্টিকি সম্প্রচার ব্যবহার করা, যেমন একটি স্থানীয় ডাটাবেস, যখনই ইচ্ছা বর্তমান মান পুনরুদ্ধার করতে।
বিকাশকারীরা অনুমতি ব্যবহার করে বা অভিপ্রায়ে অ্যাপ্লিকেশন প্যাকেজের নাম সেট করে কে নন-স্টিকি সম্প্রচার পেতে পারে তা নিয়ন্ত্রণ করতে পারে। অধিকন্তু, যদি একটি সম্প্রচার একটি অ্যাপের বাইরের উপাদানগুলিতে পাঠানোর প্রয়োজন না হয়, তাহলে LiveData
ব্যবহার করুন, যা পর্যবেক্ষক প্যাটার্ন প্রয়োগ করে।
সম্প্রচার সুরক্ষিত করার বিষয়ে আরও তথ্য সম্প্রচার ওভারভিউ পৃষ্ঠায় পাওয়া যাবে।