এই বিভাগে Android ডিভাইসে অ্যাপের নিরাপত্তা নিশ্চিত করার জন্য সুপারিশ রয়েছে।
উত্স কোড পর্যালোচনা
সোর্স কোড পর্যালোচনা এই নথিতে চিহ্নিত করা সহ নিরাপত্তা সংক্রান্ত সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। অ্যান্ড্রয়েড দৃঢ়ভাবে ম্যানুয়াল এবং স্বয়ংক্রিয় সোর্স কোড পর্যালোচনা উভয়কে উৎসাহিত করে।
- কভারেজ নিশ্চিত করতে পর্যালোচনা পরিচালনা করার সময় ব্যাপক নিরাপত্তা নির্দেশিকা অনুসরণ করুন। সামঞ্জস্যপূর্ণ এবং সম্পূর্ণ পর্যালোচনা নিশ্চিত করতে প্রাসঙ্গিক অভ্যন্তরীণ বা বাহ্যিক মানগুলি ব্যবহার করুন।
- অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ কোডে একটি লিন্টার চালান, যেমন অ্যান্ড্রয়েড স্টুডিও লিন্টার এবং কোনো চিহ্নিত সমস্যা সংশোধন করুন।
- একটি স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করে নেটিভ কোড বিশ্লেষণ করুন যা মেমরি পরিচালনার সমস্যাগুলি সনাক্ত করতে পারে, যেমন বাফার ওভারফ্লো এবং অফ-বাই-ওয়ান ত্রুটি৷
- অ্যান্ড্রয়েড বিল্ড সিস্টেম অনেক LLVM স্যানিটাইজার সমর্থন করে, যেমন Address Sanitizer এবং UndefinedBehaviorSanitizer , যা মেমরি-সম্পর্কিত সমস্যাগুলির রানটাইম বিশ্লেষণের জন্য ব্যবহার করা যেতে পারে। ফাজিংয়ের সাথে মিলিত, libFuzer-এর মাধ্যমে অ্যান্ড্রয়েডে সমর্থিত, স্যানিটাইজারগুলি আরও তদন্তের প্রয়োজন অস্বাভাবিক প্রান্তের ঘটনাগুলিকে উন্মোচন করতে পারে।
- একজন জ্ঞানী নিরাপত্তা মূল্যায়নকারীকে উচ্চতর ঝুঁকির কোড পর্যালোচনা করা উচিত, যেমন ক্রিপ্টো, পেমেন্ট প্রসেসিং এবং PII প্রসেসিং।
স্বয়ংক্রিয় পরীক্ষা
স্বয়ংক্রিয় পরীক্ষা নিরাপত্তা সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে সাহায্য করতে পারে এবং এটি নিয়মিত করা উচিত।
- প্রাথমিকভাবে সমস্যা সনাক্ত করতে এবং সংশোধনের সময় কমাতে উন্নয়ন প্রক্রিয়া জুড়ে নিয়মিতভাবে CTS- এর সর্বশেষ সংস্করণ চালান। আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়ায় ক্রমাগত একীকরণের অংশ হিসাবে Android CTS ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
- ইন্টারফেসের স্বয়ংক্রিয় নিরাপত্তা পরীক্ষা, বিকৃত ইনপুট (ফাজ টেস্টিং) সহ পরীক্ষা করা। অ্যান্ড্রয়েডের বিল্ড সিস্টেম ফাজ টেস্ট লেখার জন্য libFuzer সমর্থন করে।
দুর্বলতা স্ক্যানিং
দুর্বলতা স্ক্যানিং নিশ্চিত করতে সাহায্য করতে পারে যে আগে থেকে ইনস্টল করা অ্যাপগুলি পরিচিত নিরাপত্তা দুর্বলতা থেকে মুক্ত। উন্নত সনাক্তকরণ এই দুর্বলতাগুলিকে মোকাবেলা করার জন্য এবং ব্যবহারকারী এবং ডিভাইসগুলির ঝুঁকি প্রতিরোধ করার জন্য প্রয়োজনীয় সময় এবং খরচ কমাতে পারে।
- একটি শিল্প-স্বীকৃত অ্যাপ দুর্বলতা স্ক্যানিং টুল এবং সনাক্ত করা দুর্বলতাগুলির ঠিকানা ব্যবহার করে সমস্ত প্রাক-ইনস্টল করা অ্যাপ স্ক্যান করুন।
সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন
এটি নিশ্চিত করা গুরুত্বপূর্ণ যে আপনার ডিভাইসে আগে থেকে ইনস্টল করা অ্যাপগুলি সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন (PHAs) নয়। আপনার ডিভাইসে অন্তর্ভুক্ত সমস্ত অ্যাপের আচরণের জন্য আপনি দায়ী৷ ডিভাইস লঞ্চের আগে, দুর্বলতার জন্য সমস্ত পূর্ব-লোড করা অ্যাপ স্ক্যান করুন।
PHAs সম্পর্কে আরও তথ্যের জন্য এবং Google কীভাবে Play Store-এ তাদের বিরুদ্ধে লড়াই করছে , Google Play Protect বিকাশকারী ডকুমেন্টেশন দেখুন।
অ্যাপ ইনস্টলেশন এবং অনুমতি
প্রি-ইনস্টল করা অ্যাপগুলির জন্য অতিরিক্ত অনুমতি নিরাপত্তা ঝুঁকি তৈরি করতে পারে। প্রি-ইনস্টল করা অ্যাপগুলিকে ন্যূনতম প্রয়োজনীয় অনুমতিগুলিতে সীমাবদ্ধ করুন এবং নিশ্চিত করুন যে তাদের অপ্রয়োজনীয় অনুমতি বা বিশেষাধিকারগুলিতে অ্যাক্সেস নেই। অ্যাপের অনুমতিগুলি AndroidManifest.xml- এ বর্ণনা করা হয়েছে।
- প্রি-ইনস্টল করা অ্যাপগুলিতে অপ্রয়োজনীয় অনুমতি বা সুযোগ-সুবিধা দেবেন না। সিস্টেম বিশেষাধিকার সহ অ্যাপগুলিকে পুঙ্খানুপুঙ্খভাবে পর্যালোচনা করুন কারণ তাদের খুব সংবেদনশীল অনুমতি থাকতে পারে।
- নিশ্চিত করুন যে অনুরোধ করা সমস্ত অনুমতি সেই নির্দিষ্ট অ্যাপের কার্যকারিতার জন্য প্রাসঙ্গিক এবং প্রয়োজনীয়।
-
INSTALL_PACKAGES
অনুমতি ব্যবহার করে এমন সমস্ত পূর্ব-ইন্সটল করা অ্যাপগুলির জন্য ব্যবহারকারীর প্রকাশ রয়েছে তা নিশ্চিত করুন৷ - নিশ্চিত করুন যে ডেভেলপার চুক্তিগতভাবে UID 0 হিসাবে কোনো অ্যাপ ইনস্টল না করতে বাধ্য।
- বিকাশকারীর নেটওয়ার্কের মাধ্যমে ইনস্টল করা সমস্ত অ্যাপের ম্যানিফেস্টে ঘোষিত অনুমতিগুলির মূল্যায়ন করুন৷
- ডিভাইসে অ্যাপ পরিবেশন করার আগে Google Safe Browsing API- এর সাহায্যে অটো-আপডেটার এবং ইনস্টলার অ্যাপের সমস্ত ডাউনলোড ইউআরএল স্ক্যান করতে ডেভেলপার চুক্তিবদ্ধভাবে বাধ্য কিনা তা নিশ্চিত করুন।
অ্যাপ সাইনিং
অ্যাপ স্বাক্ষরগুলি ডিভাইসের নিরাপত্তায় গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি পরীক্ষা এবং সফ্টওয়্যার আপডেটের জন্য ব্যবহার করা হয়। অ্যাপ্লিকেশানগুলি স্বাক্ষর করার জন্য ব্যবহার করার জন্য একটি কী নির্বাচন করার সময়, এটি বিবেচনা করা গুরুত্বপূর্ণ যে একটি অ্যাপ শুধুমাত্র একটি ডিভাইসে উপলব্ধ হবে নাকি একাধিক ডিভাইসে সাধারণ।
- নিশ্চিত করুন যে অ্যাপগুলি সর্বজনীনভাবে পরিচিত, যেমন AOSP ডেভেলপার কী দিয়ে স্বাক্ষরিত নয়৷
- নিশ্চিত করুন যে অ্যাপগুলিতে স্বাক্ষর করার জন্য ব্যবহৃত কীগুলি সীমিত, নিরীক্ষণযোগ্য অ্যাক্সেস প্রদান করে এমন একটি হার্ডওয়্যার নিরাপত্তা মডিউল (এইচএসএম) সহ সংবেদনশীল কীগুলি পরিচালনা করার জন্য শিল্প-মানের অনুশীলনের সাথে সামঞ্জস্যপূর্ণভাবে পরিচালিত হয়৷
- নিশ্চিত করুন যে অ্যাপগুলি প্ল্যাটফর্ম কী দিয়ে স্বাক্ষরিত নয়। এটি করার ফলে একটি অ্যাপকে প্ল্যাটফর্ম স্বাক্ষর অনুমতিগুলিতে অ্যাক্সেস দেওয়া হয়, যা খুব শক্তিশালী এবং শুধুমাত্র অপারেটিং সিস্টেমের উপাদানগুলির দ্বারা ব্যবহার করার উদ্দেশ্যে। সিস্টেম অ্যাপগুলির বিশেষাধিকারপ্রাপ্ত অনুমতিগুলি ব্যবহার করা উচিত৷
- নিশ্চিত করুন যে একই প্যাকেজ নামের অ্যাপগুলি বিভিন্ন কী দিয়ে স্বাক্ষরিত নয়৷ এটি প্রায়শই বিভিন্ন ডিভাইসের জন্য একটি অ্যাপ তৈরি করার সময় ঘটে, বিশেষ করে যখন প্ল্যাটফর্ম কী ব্যবহার করা হয়। অ্যাপটি ডিভাইস-স্বাধীন হলে, ডিভাইস জুড়ে একই কী ব্যবহার করুন। অ্যাপটি ডিভাইস-নির্দিষ্ট হলে, ডিভাইস এবং কী প্রতি অনন্য প্যাকেজ নাম তৈরি করুন।
অ্যাপ্লিকেশান এবং প্রক্রিয়াগুলি আলাদা করা৷
অ্যান্ড্রয়েড স্যান্ডবক্সিং মডেলটি সঠিকভাবে ব্যবহার করা হলে অ্যাপ এবং প্রক্রিয়াগুলির চারপাশে অতিরিক্ত নিরাপত্তা প্রদান করে।
রুট প্রক্রিয়া বিচ্ছিন্ন করা
রুট প্রক্রিয়াগুলি বিশেষাধিকার বৃদ্ধির আক্রমণের সবচেয়ে ঘন ঘন লক্ষ্য; রুট প্রসেস সংখ্যা কমিয়ে সুবিধা বৃদ্ধির ঝুঁকি কমায়।
- ডিভাইসগুলি রুট হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালায় তা নিশ্চিত করুন৷ যেখানে সম্ভব, রুট প্রক্রিয়ার পরিবর্তে একটি নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। যদি একটি প্রক্রিয়াটি একটি ডিভাইসে রুট হিসাবে চালানো আবশ্যক, একটি AOSP বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি সর্বজনীনভাবে পর্যালোচনা করা যায়।
- যেখানে সম্ভব, রুট কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং ইন্টারপ্রসেস কমিউনিকেশন (IPC) এর মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে রুট কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক পরিচালনা করার জন্য কম বা কোনও সুবিধা নেই এমন অ্যাপে স্বাক্ষরের অনুমতি সহ পরিষেবাটি প্রকাশ করুন৷
- নেটওয়ার্ক সকেটে রুট প্রসেস শুনতে হবে না।
- রুট প্রক্রিয়ায় অবশ্যই একটি সাধারণ-উদ্দেশ্য রানটাইম অন্তর্ভুক্ত করা উচিত নয়, যেমন একটি জাভা ভিএম)।
আইসোলেটিং সিস্টেম অ্যাপ
সাধারণভাবে, শেয়ার্ড সিস্টেম ইউনিক আইডেন্টিফায়ার (UID) দিয়ে আগে থেকে ইনস্টল করা অ্যাপগুলি চালানো উচিত নয়। যদি কোনও অ্যাপের জন্য সিস্টেমের শেয়ার্ড ইউআইডি বা অন্য বিশেষ সুবিধাপ্রাপ্ত পরিষেবা (যেমন, ফোন) ব্যবহার করা প্রয়োজন হয়, তবে অ্যাপটি ব্যবহারকারীদের দ্বারা ইনস্টল করা তৃতীয় পক্ষের অ্যাপগুলির দ্বারা অ্যাক্সেস করতে পারে এমন কোনও পরিষেবা, সম্প্রচার রিসিভার বা সামগ্রী প্রদানকারীকে রপ্তানি করা উচিত নয়। .
- ডিভাইসগুলি সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালায় তা নিশ্চিত করুন। যেখানে সম্ভব, সিস্টেম UID পুনঃব্যবহারের পরিবর্তে নিজস্ব UID সহ একটি Android প্রক্রিয়া ব্যবহার করুন।
- যেখানে সম্ভব, সিস্টেম কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং শুধুমাত্র অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে IPC প্রকাশ করা উচিত৷
- সিস্টেম প্রসেস একটি নেটওয়ার্ক সকেটে শুনতে হবে না. এটি একটি CTS প্রয়োজনীয়তা।
বিচ্ছিন্নকরণ প্রক্রিয়া
অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স রুট প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সহ অ্যাপগুলি সরবরাহ করে। অ্যাপ এবং ব্যবহারকারীর দ্বারা ডিবাগিং বিশেষভাবে সক্ষম না হলে, কোনও অ্যাপই সেই প্রত্যাশা লঙ্ঘন করবে না।
- নিশ্চিত করুন যে রুট প্রক্রিয়াগুলি একটি নথিভুক্ত Android ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত পৃথক অ্যাপ ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করে না।
- নিশ্চিত করুন যে রুট প্রক্রিয়াগুলি অ্যাপের মেমরি অ্যাক্সেস না করে, যদি না একটি নথিভুক্ত অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার করে৷
- নিশ্চিত করুন যে ডিভাইসগুলিতে এমন কোনও অ্যাপ অন্তর্ভুক্ত নেই যা অন্যান্য অ্যাপ বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।