ফাইলপ্রোভাইডারের কাছে অনুপযুক্তভাবে প্রকাশ করা ডিরেক্টরি

OWASP বিভাগ: MASVS-STORAGE: স্টোরেজ

সংক্ষিপ্ত বিবরণ

একটি ত্রুটিপূর্ণভাবে কনফিগার করা FileProvider অনিচ্ছাকৃতভাবে ফাইল এবং ডিরেক্টরিগুলোকে একজন আক্রমণকারীর কাছে উন্মুক্ত করে দিতে পারে। কনফিগারেশনের উপর নির্ভর করে, একজন আক্রমণকারী এই উন্মুক্ত ফাইলগুলো থেকে পড়তে বা লিখতে পারে, যার ফলে সংবেদনশীল তথ্য পাচার হতে পারে অথবা, সবচেয়ে খারাপ ক্ষেত্রে, যথেচ্ছভাবে কোড কার্যকর হতে পারে। উদাহরণস্বরূপ, কনফিগারেশনে <root-path> সেট করা একটি অ্যাপ্লিকেশন একজন আক্রমণকারীকে ডেটাবেসে সংরক্ষিত সংবেদনশীল তথ্য অ্যাক্সেস করতে বা অ্যাপ্লিকেশনটির নেটিভ লাইব্রেরিগুলো ওভাররাইট করতে সক্ষম করতে পারে, যা যথেচ্ছভাবে কোড কার্যকর করার দিকে পরিচালিত করে।

প্রভাব

এর প্রভাব কনফিগারেশন এবং ফাইলের বিষয়বস্তুর উপর নির্ভর করে ভিন্ন হয়, তবে সাধারণত এর ফলে ডেটা ফাঁস (পড়ার সময়) বা ফাইল ওভাররাইট (লেখার সময়) হয়।

প্রশমন

কনফিগারেশনে <root-path> পাথ এলিমেন্টটি ব্যবহার করবেন না।

<root-path> বলতে ডিভাইসের রুট ডিরেক্টরি ( / ) বোঝায়। কনফিগারেশনে এটির অনুমতি দিলে অ্যাপের স্যান্ডবক্স এবং /sdcard ডিরেক্টরি সহ বিভিন্ন ফাইল ও ফোল্ডারে যথেচ্ছ অ্যাক্সেস পাওয়া যায়, যা একজন আক্রমণকারীর জন্য আক্রমণের একটি অত্যন্ত বিস্তৃত ক্ষেত্র তৈরি করে।

সংকীর্ণ পথের পরিসর শেয়ার করুন

পাথ কনফিগারেশন ফাইলে, . বা / মতো বিস্তৃত পাথ রেঞ্জ শেয়ার করা থেকে বিরত থাকুন। এমনটা করলে ভুলবশত সংবেদনশীল ফাইল প্রকাশ হয়ে যেতে পারে। শুধুমাত্র একটি সীমিত বা সংকীর্ণ পাথ রেঞ্জ শেয়ার করুন এবং নিশ্চিত করুন যে কেবল আপনি যে ফাইলগুলো শেয়ার করতে চান, সেগুলোই এই পাথের অধীনে রয়েছে। এর ফলে ভুলবশত সংবেদনশীল ফাইল প্রকাশ হওয়া প্রতিরোধ করা যাবে।

নিরাপদ সেটিংস সহ একটি সাধারণ কনফিগারেশন ফাইল দেখতে এইরকম হতে পারে:

এক্সএমএল

<paths>
    <files-path name="images" path="images/" />
    <files-path name="docs" path="docs" />
    <cache-path name="cache" path="net-export/" />
</paths>

বাহ্যিক URI গুলি পরীক্ষা ও যাচাই করুন

এক্সটার্নাল ইউআরআইগুলো ( content স্কিম ব্যবহার করে) যাচাই করুন এবং নিশ্চিত করুন যে সেগুলো আপনার অ্যাপ্লিকেশনের লোকাল ফাইলগুলোর দিকে নির্দেশ করছে না। এর ফলে যেকোনো অনিচ্ছাকৃত তথ্য ফাঁস প্রতিরোধ করা যায়।

ন্যূনতম প্রবেশাধিকার প্রদান করুন

একটি content URI রিড এবং রাইট উভয় অ্যাক্সেস পারমিশন থাকতে পারে। নিশ্চিত করুন যেন শুধুমাত্র ন্যূনতম প্রয়োজনীয় অ্যাক্সেস পারমিশনই দেওয়া হয়। উদাহরণস্বরূপ, যদি শুধুমাত্র রিড পারমিশনের প্রয়োজন হয়, তাহলে স্পষ্টভাবে শুধু FLAG_GRANT_READ_URI_PERMISSION পারমিশনটি দিন।

সংবেদনশীল তথ্য সংরক্ষণ বা শেয়ার করার জন্য <external-path> ব্যবহার করা থেকে বিরত থাকুন।

ব্যক্তিগতভাবে শনাক্তযোগ্য তথ্য (PII)-এর মতো সংবেদনশীল ডেটা অ্যাপ্লিকেশন কন্টেইনার বা সিস্টেম ক্রেডেনশিয়াল স্টোরেজ সুবিধার বাইরে সংরক্ষণ করা উচিত নয়। সুতরাং, <external-path> এলিমেন্টের ব্যবহার পরিহার করুন, যদি না আপনি স্পষ্টভাবে যাচাই করে নেন যে সংরক্ষিত/শেয়ার করা তথ্যটি সংবেদনশীল নয়।

সম্পদ