অন্তর্নিহিত অভিপ্রায় হাইজ্যাকিং

OWASP বিভাগ: MASVS-প্ল্যাটফর্ম: প্ল্যাটফর্ম ইন্টারঅ্যাকশন

ওভারভিউ

অন্তর্নিহিত অভিপ্রায় হাইজ্যাকিং দুর্বলতা ঘটে যখন একটি অ্যাপ্লিকেশন একটি সম্পূর্ণ-যোগ্য উপাদান শ্রেণীর নাম বা প্যাকেজ নির্দিষ্ট করে না যখন একটি অভিপ্রায় আহ্বান করে। এটি একটি দূষিত অ্যাপ্লিকেশনকে উদ্দেশ্যযুক্ত অ্যাপ্লিকেশনের পরিবর্তে অভিপ্রায়কে আটকাতে একটি অভিপ্রায় ফিল্টার নিবন্ধন করার অনুমতি দেয়৷

উদ্দেশ্য বিষয়বস্তুর উপর নির্ভর করে, আক্রমণকারীরা সংবেদনশীল তথ্য পড়তে বা সংশোধন করতে পারে বা পরিবর্তনযোগ্য বস্তুর সাথে ইন্টারঅ্যাক্ট করতে পারে, যেমন পরিবর্তনযোগ্য PendingIntents বা Binders

একটি অন্তর্নিহিত অভিপ্রায় হাইজ্যাক করা আক্রমণকারীকে আক্রমণকারী-নিয়ন্ত্রিত উপাদানগুলি চালু করার মতো নির্বিচারে কাজ করার অনুমতি দেয়।

প্রভাব

যদি একটি অন্তর্নিহিত অভিপ্রায় সংবেদনশীল ডেটা পরিচালনা করে একটি ওয়েবভিউ খোলার জন্য একটি অতিরিক্ত URL স্ট্রিংয়ের মধ্যে একটি সেশন টোকেন পাস করে, সঠিক অভিপ্রায় ফিল্টারগুলি নির্দিষ্ট করে এমন যেকোনো অ্যাপ্লিকেশন এই টোকেনটি পড়তে পারে৷ এটি ডিভাইসে সঠিকভাবে-কনফিগার করা অ্যাপ্লিকেশনটিকে উদ্দেশ্যটি আটকাতে এবং ভিতরে সংবেদনশীল ডেটা পড়ার অনুমতি দেয়, আক্রমণকারীদের PII বা সেশন টোকেনের মতো ডেটা বের করে দেওয়ার অনুমতি দেয়।

প্রশমন

অ্যাপ্লিকেশনটির প্রয়োজন না হলে, setPackage() কল করে অভিপ্রায় স্পষ্ট করুন। এটি অভিপ্রায়টিকে শুধুমাত্র একটি নির্দিষ্ট উপাদান দ্বারা ব্যাখ্যা করার অনুমতি দেয় (হয় অ্যাপের মধ্যে বা অন্যান্য অ্যাপ্লিকেশন থেকে), অবিশ্বস্ত অ্যাপ্লিকেশনগুলিকে উদ্দেশ্য সহ পাঠানো ডেটা আটকাতে বাধা দেয়। নিম্নলিখিত স্নিপেট দেখায় কিভাবে একটি অভিপ্রায় স্পষ্ট করতে হয়:

কোটলিন

val intent = Intent("android.intent.action.CREATE_DOCUMENT").apply {
    addCategory("android.intent.category.OPENABLE")
    setPackage("com.some.packagename")
    setType("*/*")
    putExtra("android.intent.extra.LOCAL_ONLY", true)
    putExtra("android.intent.extra.TITLE", "Some Title")
}
startActivity(intent)

জাভা

Intent intent = new Intent("android.intent.action.CREATE_DOCUMENT");
intent.addCategory("android.intent.category.OPENABLE");
intent.setPackage("com.some.packagename");
intent.setType("*/*");
intent.putExtra("android.intent.extra.LOCAL_ONLY", true);
intent.putExtra("android.intent.extra.TITLE", "Some Title");
startActivity(intent);

আপনার যদি অন্তর্নিহিত উদ্দেশ্য ব্যবহার করার প্রয়োজন হয়, তাহলে কোনো সংবেদনশীল তথ্য বা পরিবর্তনযোগ্য বস্তু বাদ দিন যা আপনি প্রকাশ করতে চান না। অন্তর্নিহিত উদ্দেশ্যগুলি ব্যবহার করার প্রয়োজন হতে পারে যখন একটি অ্যাপের সঠিক জ্ঞান না থাকে যে কোন অ্যাপটি ক্রিয়াটি সমাধান করবে (যেমন একটি ইমেল রচনা করা, একটি ছবি তোলা ইত্যাদি)।

সম্পদ