OWASP বিভাগ: MASVS-স্টোরেজ: স্টোরেজ
ওভারভিউ
একটি অনুপযুক্তভাবে কনফিগার করা 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>
বাহ্যিক ইউআরআই পরীক্ষা করুন এবং যাচাই করুন
বাহ্যিক ইউআরআইগুলি যাচাই করুন (একটি content
স্কিম ব্যবহার করে) এবং নিশ্চিত করুন যে তারা আপনার অ্যাপ্লিকেশনের স্থানীয় ফাইলগুলির দিকে নির্দেশ করছে না৷ এটি কোনো অসাবধানতাবশত তথ্য ফাঁস প্রতিরোধ করে।
ন্যূনতম অ্যাক্সেসের অনুমতি দিন
একটি content URI
উভয়ই পড়ার এবং লেখার অ্যাক্সেসের অনুমতি থাকতে পারে। নিশ্চিত করুন যে শুধুমাত্র ন্যূনতম প্রয়োজনীয় অ্যাক্সেসের অনুমতি দেওয়া হয়েছে। উদাহরণস্বরূপ, যদি শুধুমাত্র পড়ার অনুমতি প্রয়োজন হয়, তাহলে স্পষ্টভাবে শুধুমাত্র FLAG_GRANT_READ_URI_PERMISSION
মঞ্জুর করুন।
সংবেদনশীল তথ্য সংরক্ষণ/শেয়ার করার জন্য <external-path> এর ব্যবহার এড়িয়ে চলুন
সংবেদনশীল ডেটা, যেমন ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (PII), অ্যাপ্লিকেশন কন্টেইনার বা সিস্টেম শংসাপত্র স্টোরেজ সুবিধার বাইরে সংরক্ষণ করা উচিত নয়। সুতরাং, <external-path>
উপাদানটির ব্যবহার এড়িয়ে চলুন, যদি না আপনি স্পষ্টভাবে যাচাই করেন যে তথ্য সংরক্ষণ/ভাগ করা হচ্ছে সংবেদনশীল নয়।
সম্পদ
,OWASP বিভাগ: MASVS-স্টোরেজ: স্টোরেজ
ওভারভিউ
একটি অনুপযুক্তভাবে কনফিগার করা 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>
বাহ্যিক ইউআরআই পরীক্ষা করুন এবং যাচাই করুন
বাহ্যিক ইউআরআইগুলি যাচাই করুন (একটি content
স্কিম ব্যবহার করে) এবং নিশ্চিত করুন যে তারা আপনার অ্যাপ্লিকেশনের স্থানীয় ফাইলগুলির দিকে নির্দেশ করছে না৷ এটি কোনো অসাবধানতাবশত তথ্য ফাঁস প্রতিরোধ করে।
ন্যূনতম অ্যাক্সেসের অনুমতি দিন
একটি content URI
উভয়ই পড়ার এবং লেখার অ্যাক্সেসের অনুমতি থাকতে পারে। নিশ্চিত করুন যে শুধুমাত্র ন্যূনতম প্রয়োজনীয় অ্যাক্সেসের অনুমতি দেওয়া হয়েছে। উদাহরণস্বরূপ, যদি শুধুমাত্র পড়ার অনুমতি প্রয়োজন হয়, তাহলে স্পষ্টভাবে শুধুমাত্র FLAG_GRANT_READ_URI_PERMISSION
মঞ্জুর করুন।
সংবেদনশীল তথ্য সংরক্ষণ/শেয়ার করার জন্য <external-path> এর ব্যবহার এড়িয়ে চলুন
সংবেদনশীল ডেটা, যেমন ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (PII), অ্যাপ্লিকেশন কন্টেইনার বা সিস্টেম শংসাপত্র স্টোরেজ সুবিধার বাইরে সংরক্ষণ করা উচিত নয়। সুতরাং, <external-path>
উপাদানটির ব্যবহার এড়িয়ে চলুন, যদি না আপনি স্পষ্টভাবে যাচাই করেন যে তথ্য সংরক্ষণ/ভাগ করা হচ্ছে সংবেদনশীল নয়।