নিরাপত্তা প্রয়োগ করুন

অ্যান্ড্রয়েড সিকিউরিটি টিম নিয়মিতভাবে অ্যান্ড্রয়েড ডিভাইসে সম্ভাব্য নিরাপত্তা সমস্যা প্রতিরোধের বিষয়ে তথ্যের জন্য অনুরোধ পায়। এছাড়াও আমরা মাঝে মাঝে ডিভাইসগুলি পরীক্ষা করি এবং ডিভাইস প্রস্তুতকারক এবং প্রভাবিত অংশীদারদের সম্ভাব্য সমস্যার কথা জানাই।

এই পৃষ্ঠাটি আমাদের অভিজ্ঞতার উপর ভিত্তি করে নিরাপত্তার সর্বোত্তম অনুশীলন প্রদান করে, আমরা বিকাশকারীদের জন্য প্রদত্ত নিরাপত্তা ডকুমেন্টেশনের প্রসারিত করে এবং ডিভাইসে সিস্টেম-স্তরের সফ্টওয়্যার তৈরি বা ইনস্টল করার জন্য অনন্য বিবরণ অন্তর্ভুক্ত করে।

এই সর্বোত্তম অনুশীলনগুলি গ্রহণের সুবিধার্থে, যেখানে সম্ভব Android সিকিউরিটি টিম অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) এবং অ্যান্ড্রয়েড লিন্টে পরীক্ষাগুলিকে অন্তর্ভুক্ত করে৷ আমরা ডিভাইস বাস্তবায়নকারীদের এমন পরীক্ষায় অবদান রাখতে উত্সাহিত করি যা অন্যান্য Android ব্যবহারকারীদের সাহায্য করতে পারে ( root/cts/tests/tests/security/src/android/security/cts এ নিরাপত্তা-সম্পর্কিত পরীক্ষাগুলি দেখুন)।

উন্নয়ন প্রক্রিয়া

আপনার উন্নয়ন প্রক্রিয়া এবং পরিবেশে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

সোর্স কোড পর্যালোচনা করুন

সোর্স কোড পর্যালোচনা এই নথিতে চিহ্নিত করা সহ নিরাপত্তা সংক্রান্ত সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। অ্যান্ড্রয়েড দৃঢ়ভাবে ম্যানুয়াল এবং স্বয়ংক্রিয় সোর্স কোড পর্যালোচনা উভয়কে উৎসাহিত করে। সর্বোত্তম অনুশীলন:

  • অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ কোডে অ্যান্ড্রয়েড লিন্ট চালান এবং কোনও চিহ্নিত সমস্যা সংশোধন করুন।
  • নেটিভ কোড একটি স্বয়ংক্রিয় টুল ব্যবহার করে বিশ্লেষণ করা উচিত যা মেমরি পরিচালনার সমস্যা যেমন বাফার ওভারফ্লো এবং অফ-বাই-ওয়ান ত্রুটি সনাক্ত করতে পারে।
  • অ্যান্ড্রয়েড বিল্ড সিস্টেমে অনেক LLVM স্যানিটাইজারের জন্য সমর্থন রয়েছে, যেমন Address Sanitizer এবং Undefined Behavior Sanitizer যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে।

স্বয়ংক্রিয় পরীক্ষা ব্যবহার করুন

স্বয়ংক্রিয় পরীক্ষা নীচে আলোচনা করা বেশ কয়েকটি সমস্যা সহ বিস্তৃত সুরক্ষা সমস্যা সনাক্ত করতে পারে। সর্বোত্তম অনুশীলন:

  • CTS নিয়মিত নিরাপত্তা পরীক্ষার সাথে আপডেট করা হয়; সামঞ্জস্য যাচাই করতে CTS-এর সাম্প্রতিকতম সংস্করণ চালান।
  • প্রাথমিকভাবে সমস্যা সনাক্ত করতে এবং সংশোধনের সময় কমাতে উন্নয়ন প্রক্রিয়া জুড়ে নিয়মিতভাবে CTS চালান। আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়ায় ক্রমাগত একীকরণের অংশ হিসাবে Android CTS ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
  • ডিভাইস নির্মাতাদের উচিত ইন্টারফেসের নিরাপত্তা পরীক্ষা স্বয়ংক্রিয় করা, যার মধ্যে ত্রুটিপূর্ণ ইনপুট (ফাজ টেস্টিং) সহ পরীক্ষা করা।

সিস্টেম ইমেজ সাইন ইন করুন

সিস্টেম ইমেজের স্বাক্ষর ডিভাইসের অখণ্ডতা নির্ধারণের জন্য গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলিকে সর্বজনীনভাবে পরিচিত একটি কী দিয়ে স্বাক্ষর করা উচিত নয়৷
  • ডিভাইস সাইন করার জন্য ব্যবহৃত কীগুলি সীমিত, নিরীক্ষাযোগ্য অ্যাক্সেস প্রদান করে এমন একটি হার্ডওয়্যার সিকিউরিটি মডিউল (এইচএসএম) সহ সংবেদনশীল কীগুলি পরিচালনার জন্য শিল্পের মানক অনুশীলনের সাথে সামঞ্জস্যপূর্ণভাবে পরিচালনা করা উচিত।

সাইন অ্যাপস (এপিকে)

অ্যাপ স্বাক্ষরগুলি ডিভাইসের নিরাপত্তায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি চেক করার পাশাপাশি সফ্টওয়্যার আপডেটের জন্য ব্যবহৃত হয়। অ্যাপ্লিকেশানগুলি স্বাক্ষর করার জন্য ব্যবহার করার জন্য একটি কী নির্বাচন করার সময়, এটি বিবেচনা করা গুরুত্বপূর্ণ যে একটি অ্যাপ শুধুমাত্র একটি ডিভাইসে উপলব্ধ হবে নাকি একাধিক ডিভাইসে সাধারণ। সর্বোত্তম অনুশীলন:

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

অ্যাপস প্রকাশ করুন

Google Play ডিভাইস নির্মাতাদের সম্পূর্ণ সিস্টেম আপডেট না করেই অ্যাপ আপডেট করার ক্ষমতা প্রদান করে। এটি সুরক্ষা সমস্যাগুলির প্রতিক্রিয়া এবং নতুন বৈশিষ্ট্যগুলির সরবরাহকে ত্বরান্বিত করতে পারে, সেইসাথে আপনার অ্যাপের একটি অনন্য প্যাকেজ নাম রয়েছে তা নিশ্চিত করার একটি উপায় প্রদান করে৷ সর্বোত্তম অনুশীলন:

  • সম্পূর্ণ ওভার-দ্য-এয়ার (OTA) আপডেটের প্রয়োজন ছাড়াই স্বয়ংক্রিয় আপডেটের অনুমতি দিতে Google Play-তে আপনার অ্যাপগুলি আপলোড করুন। যে অ্যাপগুলি আপলোড করা হয়েছে কিন্তু অপ্রকাশিত হয়েছে সেগুলি ব্যবহারকারীদের দ্বারা সরাসরি ডাউনলোড করা যায় না কিন্তু অ্যাপগুলি এখনও আপডেট করা হয়৷ যে ব্যবহারকারীরা আগে অ্যাপটি ইনস্টল করেছেন তারা এটি পুনরায় ইনস্টল করতে এবং/অথবা অন্যান্য ডিভাইসে ইনস্টল করতে পারেন।
  • একটি অ্যাপ প্যাকেজ নাম তৈরি করুন যা আপনার কোম্পানির সাথে স্পষ্টভাবে যুক্ত, যেমন একটি কোম্পানির ট্রেডমার্ক ব্যবহার করে।
  • তৃতীয় পক্ষের ব্যবহারকারীদের দ্বারা প্যাকেজের নামের ছদ্মবেশ এড়াতে ডিভাইস নির্মাতাদের দ্বারা প্রকাশিত অ্যাপগুলিকে Google Play স্টোরে আপলোড করা উচিত। যদি কোনও ডিভাইস প্রস্তুতকারক প্লে স্টোরে অ্যাপটি প্রকাশ না করে একটি ডিভাইসে একটি অ্যাপ ইনস্টল করে, তাহলে অন্য ডেভেলপার একই অ্যাপ আপলোড করতে, একই প্যাকেজের নাম ব্যবহার করতে এবং অ্যাপের মেটাডেটা পরিবর্তন করতে পারে। অ্যাপটি ব্যবহারকারীর কাছে উপস্থাপিত হলে, এই সম্পর্কহীন মেটাডেটা বিভ্রান্তি তৈরি করতে পারে।

ঘটনার প্রতিক্রিয়া

বাহ্যিক পক্ষগুলির ডিভাইস-নির্দিষ্ট নিরাপত্তা সমস্যাগুলির বিষয়ে ডিভাইস নির্মাতাদের সাথে যোগাযোগ করার ক্ষমতা থাকতে হবে। আমরা নিরাপত্তা ঘটনাগুলি পরিচালনা করার জন্য একটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য ইমেল ঠিকানা তৈরি করার পরামর্শ দিই৷ সর্বোত্তম অনুশীলন:

  • একটি security@your-company.com বা অনুরূপ ঠিকানা তৈরি করুন এবং এটি প্রচার করুন।
  • আপনি যদি একাধিক ডিভাইস প্রস্তুতকারকদের থেকে Android OS বা Android ডিভাইসগুলিকে প্রভাবিত করে এমন একটি নিরাপত্তা সমস্যা সম্পর্কে সচেতন হন, তাহলে আপনাকে একটি নিরাপত্তা বাগ রিপোর্ট ফাইল করে Android নিরাপত্তা টিমের সাথে যোগাযোগ করা উচিত।

পণ্য বাস্তবায়ন

একটি পণ্য বাস্তবায়ন করার সময় নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

রুট প্রক্রিয়া বিচ্ছিন্ন করুন

রুট প্রক্রিয়াগুলি বিশেষাধিকার বৃদ্ধি আক্রমণের সবচেয়ে ঘন ঘন লক্ষ্যবস্তু, তাই রুট প্রক্রিয়ার সংখ্যা হ্রাস করা বিশেষাধিকার বৃদ্ধির ঝুঁকি হ্রাস করে। CTS একটি তথ্যমূলক পরীক্ষা অন্তর্ভুক্ত করে যা মূল প্রক্রিয়াগুলি তালিকাভুক্ত করে। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলিকে রুট হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, রুট প্রক্রিয়ার পরিবর্তে একটি নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। ICS Galaxy Nexus-এর মাত্র ছয়টি রুট প্রসেস আছে: vold, inetd, zygote, tf_daemon, ueventd এবং init। যদি একটি প্রক্রিয়াটি একটি ডিভাইসে রুট হিসাবে চালানো আবশ্যক, একটি AOSP বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি সর্বজনীনভাবে পর্যালোচনা করা যায়।
  • যেখানে সম্ভব, রুট কোড অবিশ্বস্ত ডেটা থেকে আলাদা করা উচিত এবং IPC এর মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে রুট কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক পরিচালনা করার জন্য কম বা কোনও সুবিধা নেই এমন একটি অ্যাপে স্বাক্ষরের অনুমতি সহ পরিষেবাটি প্রকাশ করুন৷
  • নেটওয়ার্ক সকেটে রুট প্রসেস শুনতে হবে না।
  • রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপগুলির জন্য একটি সাধারণ-উদ্দেশ্য রানটাইম প্রদান করবে না (উদাহরণস্বরূপ, একটি জাভা ভিএম)।

আইসোলেট সিস্টেম অ্যাপ

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

  • ডিভাইসগুলিকে সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, সিস্টেম UID পুনঃব্যবহারের পরিবর্তে নিজস্ব UID সহ একটি Android প্রক্রিয়া ব্যবহার করুন।
  • যেখানে সম্ভব, সিস্টেম কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং শুধুমাত্র অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে IPC প্রকাশ করা উচিত৷
  • সিস্টেম প্রসেস একটি নেটওয়ার্ক সকেটে শুনতে হবে না.

বিচ্ছিন্ন প্রক্রিয়া

অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স রুট প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সহ অ্যাপগুলি সরবরাহ করে। অ্যাপ এবং ব্যবহারকারীর দ্বারা ডিবাগিং বিশেষভাবে সক্ষম না হলে, কোনও অ্যাপই সেই প্রত্যাশা লঙ্ঘন করবে না। সর্বোত্তম অনুশীলন:

  • একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত রুট প্রক্রিয়াগুলি পৃথক অ্যাপ ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করতে পারবে না।
  • একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত রুট প্রক্রিয়াগুলিকে অবশ্যই অ্যাপের মেমরি অ্যাক্সেস করা উচিত নয়।
  • ডিভাইসগুলিতে এমন কোনও অ্যাপ অন্তর্ভুক্ত করা উচিত নয় যা অন্যান্য অ্যাপ বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।

সুরক্ষিত SUID ফাইল

নতুন সেটুইড প্রোগ্রামগুলি অবিশ্বস্ত প্রোগ্রামগুলির দ্বারা অ্যাক্সেসযোগ্য হওয়া উচিত নয়৷ সেটুইড প্রোগ্রামগুলি প্রায়শই দুর্বলতার অবস্থান হয়ে থাকে যা রুট অ্যাক্সেস পেতে ব্যবহার করা যেতে পারে, তাই অবিশ্বস্ত অ্যাপগুলিতে সেটুইড প্রোগ্রামের প্রাপ্যতা হ্রাস করার চেষ্টা করুন। সর্বোত্তম অনুশীলন:

  • SUID প্রক্রিয়াগুলিকে অবশ্যই একটি শেল বা ব্যাকডোর প্রদান করা উচিত নয় যা Android নিরাপত্তা মডেলকে ফাঁকি দিতে ব্যবহার করা যেতে পারে।
  • SUID প্রোগ্রাম কোনো ব্যবহারকারীর দ্বারা লিখিত হতে হবে না.
  • SUID প্রোগ্রামগুলি বিশ্ব পাঠযোগ্য বা এক্সিকিউটেবল হওয়া উচিত নয়। একটি গোষ্ঠী তৈরি করুন, সেই গোষ্ঠীর সদস্যদের জন্য SUID বাইনারিতে অ্যাক্সেস সীমিত করুন এবং সেই গোষ্ঠীতে SUID প্রোগ্রামটি কার্যকর করতে সক্ষম এমন কোনও অ্যাপ রাখুন৷
  • SUID প্রোগ্রামগুলি ডিভাইসের ব্যবহারকারী রুট করার একটি সাধারণ উৎস। এই ঝুঁকি কমাতে, SUID প্রোগ্রামগুলি শেল ব্যবহারকারীর দ্বারা কার্যকর করা উচিত নয়।

CTS যাচাইকারী একটি তথ্যমূলক পরীক্ষা তালিকাভুক্ত SUID ফাইল অন্তর্ভুক্ত করে; CTS পরীক্ষা প্রতি কিছু setuid ফাইল অনুমোদিত নয়।

সুরক্ষিত শোনার সকেট

CTS পরীক্ষা ব্যর্থ হয় যখন কোনো ডিভাইস কোনো পোর্টে, কোনো ইন্টারফেসে শুনছে। একটি ব্যর্থতার ক্ষেত্রে, Android যাচাই করে যে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করা হচ্ছে:

  • ডিভাইসে কোন শোনার পোর্ট থাকা উচিত নয়।
  • লিসেনিং পোর্টগুলিকে ওটিএ ছাড়াই অক্ষম করতে সক্ষম হতে হবে। এটি একটি সার্ভার বা ব্যবহারকারী-ডিভাইস কনফিগারেশন পরিবর্তন হতে পারে।
  • কোনো পোর্টে রুট প্রসেস শুনতে হবে না।
  • সিস্টেম ইউআইডির মালিকানাধীন প্রসেস কোনো পোর্টে শুনতে হবে না।
  • সকেট ব্যবহার করে স্থানীয় IPC-এর জন্য, অ্যাপগুলিকে অবশ্যই একটি UNIX ডোমেন সকেট ব্যবহার করতে হবে যাতে একটি গোষ্ঠীতে সীমাবদ্ধ অ্যাক্সেস থাকে। IPC-এর জন্য একটি ফাইল বর্ণনাকারী তৈরি করুন এবং একটি নির্দিষ্ট UNIX গোষ্ঠীর জন্য এটি +RW করুন। যেকোনো ক্লায়েন্ট অ্যাপ অবশ্যই সেই UNIX গ্রুপের মধ্যে থাকতে হবে।
  • একাধিক প্রসেসর সহ কিছু ডিভাইস (যেমন অ্যাপ প্রসেসর থেকে আলাদা রেডিও/মডেম) প্রসেসরের মধ্যে যোগাযোগের জন্য নেটওয়ার্ক সকেট ব্যবহার করে। এই ধরনের দৃষ্টান্তে, আন্তঃ-প্রসেসর যোগাযোগের জন্য ব্যবহৃত নেটওয়ার্ক সকেটটি ডিভাইসে অননুমোদিত অ্যাপগুলির দ্বারা অ্যাক্সেস রোধ করতে একটি বিচ্ছিন্ন নেটওয়ার্ক ইন্টারফেস ব্যবহার করতে হবে (অর্থাৎ, ডিভাইসে অন্যান্য অ্যাপের দ্বারা অ্যাক্সেস রোধ করতে iptables ব্যবহার করুন)।
  • লিসনিং পোর্টগুলি পরিচালনাকারী ডেমনগুলি অবশ্যই বিকৃত ডেটার বিরুদ্ধে শক্তিশালী হতে হবে। Google অননুমোদিত ক্লায়েন্ট এবং যেখানে সম্ভব অনুমোদিত ক্লায়েন্ট ব্যবহার করে পোর্টের বিরুদ্ধে ফাজ-টেস্টিং পরিচালনা করতে পারে। যেকোন ক্র্যাশ যথাযথ তীব্রতার সাথে বাগ হিসাবে দায়ের করা হয়।

লগ ডেটা

লগিং ডেটা সেই ডেটার এক্সপোজারের ঝুঁকি বাড়ায় এবং সিস্টেমের কর্মক্ষমতা হ্রাস করে। অ্যান্ড্রয়েড ডিভাইসে ডিফল্টরূপে ইনস্টল করা অ্যাপের মাধ্যমে সংবেদনশীল ব্যবহারকারীর ডেটা লগ করার ফলে একাধিক জননিরাপত্তার ঘটনা ঘটেছে। সর্বোত্তম অনুশীলন:

  • সংবেদনশীল তথ্য থাকতে পারে এমন থার্ড-পার্টি অ্যাপ থেকে প্রদত্ত ডেটা লগ করা অ্যাপ বা সিস্টেম পরিষেবার উচিত নয়।
  • স্বাভাবিক ক্রিয়াকলাপের অংশ হিসাবে অ্যাপগুলিকে অবশ্যই কোনও ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (PII) লগ করা উচিত নয়৷

CTS-এর মধ্যে এমন পরীক্ষা রয়েছে যা সিস্টেম লগগুলিতে সম্ভাব্য সংবেদনশীল তথ্যের উপস্থিতি পরীক্ষা করে।

ডিরেক্টরি অ্যাক্সেস সীমিত করুন

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

একটি সর্বোত্তম অনুশীলন হিসাবে, সিস্টেম বা রুট ব্যবহারকারীদের দ্বারা তৈরি ডিরেক্টরিগুলি বিশ্ব লিখনযোগ্য হওয়া উচিত নয়। CTS পরীক্ষাগুলি পরিচিত ডিরেক্টরি পরীক্ষা করে এই সর্বোত্তম অনুশীলনকে কার্যকর করতে সাহায্য করে।

সুরক্ষিত কনফিগারেশন ফাইল

অনেক ড্রাইভার এবং পরিষেবাগুলি /system/etc এবং /data মতো ডিরেক্টরিতে সংরক্ষিত কনফিগারেশন এবং ডেটা ফাইলের উপর নির্ভর করে। যদি এই ফাইলগুলি একটি বিশেষ সুবিধাপ্রাপ্ত প্রক্রিয়া দ্বারা প্রক্রিয়া করা হয় এবং বিশ্ব লিখনযোগ্য হয়, তাহলে একটি অ্যাপের পক্ষে বিশ্ব-লেখাযোগ্য ফাইলে দূষিত বিষয়বস্তু তৈরি করে প্রক্রিয়ার একটি দুর্বলতাকে কাজে লাগানো সম্ভব। সর্বোত্তম অনুশীলন:

  • সুবিধাপ্রাপ্ত প্রসেস দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি বিশ্ব পাঠযোগ্য হওয়া উচিত নয়।
  • সুবিধাপ্রাপ্ত প্রসেস দ্বারা ব্যবহৃত কনফিগারেশন ফাইল বিশ্ব লিখনযোগ্য হতে হবে না।

স্থানীয় কোড লাইব্রেরি সংরক্ষণ করুন

বিশেষাধিকারপ্রাপ্ত ডিভাইস প্রস্তুতকারকের প্রসেস দ্বারা ব্যবহৃত যেকোন কোড অবশ্যই /vendor বা /system থাকতে হবে; এই ফাইল-সিস্টেমগুলি বুটেই মাউন্ট করা হয়। একটি সর্বোত্তম অনুশীলন হিসাবে, ডিভাইসে ইনস্টল করা সিস্টেম বা অন্যান্য উচ্চ-সুবিধাপ্রাপ্ত অ্যাপ দ্বারা ব্যবহৃত লাইব্রেরিগুলিও এই ফাইল সিস্টেমগুলিতে থাকা উচিত৷ এটি একটি সুরক্ষা দুর্বলতা প্রতিরোধ করতে পারে যা আক্রমণকারীকে একটি বিশেষাধিকারপ্রাপ্ত প্রক্রিয়া সম্পাদন করে এমন কোড নিয়ন্ত্রণ করতে দেয়।

ডিভাইস ড্রাইভার অ্যাক্সেস সীমিত করুন

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

ADB নিষ্ক্রিয় করুন

অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) একটি মূল্যবান ডেভেলপমেন্ট এবং ডিবাগিং টুল, কিন্তু এটি নিয়ন্ত্রিত, নিরাপদ পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে এবং সাধারণ ব্যবহারের জন্য সক্ষম করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • ADB ডিফল্টরূপে নিষ্ক্রিয় করা আবশ্যক।
  • সংযোগ গ্রহণ করার আগে ADB অবশ্যই ব্যবহারকারীকে এটি চালু করতে হবে।

বুটলোডার আনলক করুন

অনেক অ্যান্ড্রয়েড ডিভাইস আনলকিং সমর্থন করে, ডিভাইসের মালিককে সিস্টেম পার্টিশন পরিবর্তন করতে এবং/অথবা একটি কাস্টম অপারেটিং সিস্টেম ইনস্টল করতে সক্ষম করে। সাধারণ ব্যবহারের ক্ষেত্রে একটি তৃতীয় পক্ষের রম ইনস্টল করা এবং ডিভাইসে সিস্টেম-স্তরের বিকাশ করা অন্তর্ভুক্ত। উদাহরণস্বরূপ, একজন Google নেক্সাস ডিভাইসের মালিক আনলকিং প্রক্রিয়া শুরু করতে fastboot oem unlock চালাতে পারেন, যা ব্যবহারকারীকে নিম্নলিখিত বার্তাটি উপস্থাপন করে:

বুটলোডার আনলক করবেন?

আপনি বুটলোডার আনলক করলে, আপনি এই ডিভাইসে কাস্টম অপারেটিং সিস্টেম সফ্টওয়্যার ইনস্টল করতে সক্ষম হবেন।

একটি কাস্টম OS মূল OS এর মতো একই পরীক্ষার বিষয় নয়, এবং আপনার ডিভাইস এবং ইনস্টল করা অ্যাপগুলি সঠিকভাবে কাজ করা বন্ধ করতে পারে।

আপনার ব্যক্তিগত ডেটাতে অননুমোদিত অ্যাক্সেস রোধ করতে, বুটলোডার আনলক করলে আপনার ডিভাইস থেকে সমস্ত ব্যক্তিগত ডেটা মুছে যাবে (একটি "ফ্যাক্টরি ডেটা রিসেট")।

হ্যাঁ বা না নির্বাচন করতে ভলিউম আপ/ডাউন বোতাম টিপুন। তারপর চালিয়ে যেতে পাওয়ার বোতাম টিপুন।

হ্যাঁ : বুটলোডার আনলক করুন (ওয়ারেন্টি বাতিল হতে পারে)

না : বুটলোডার আনলক করবেন না এবং ডিভাইস পুনরায় চালু করবেন না।


সর্বোত্তম অনুশীলন হিসাবে, আনলক করা যায় এমন Android ডিভাইসগুলিকে অবশ্যই আনলক হওয়ার আগে সমস্ত ব্যবহারকারীর ডেটা সুরক্ষিতভাবে মুছে ফেলতে হবে। আনলক করার সময় সমস্ত ডেটা সঠিকভাবে মুছে ফেলতে ব্যর্থ হলে একজন শারীরিকভাবে কাছাকাছি আক্রমণকারীকে গোপনীয় Android ব্যবহারকারী ডেটাতে অননুমোদিত অ্যাক্সেস পেতে অনুমতি দিতে পারে। ব্যবহারকারীর ডেটা প্রকাশ রোধ করার জন্য, আনলকিং সমর্থন করে এমন একটি ডিভাইস অবশ্যই এটি সঠিকভাবে প্রয়োগ করবে (আমরা অসংখ্য উদাহরণ দেখেছি যেখানে ডিভাইস নির্মাতারা ভুলভাবে আনলকিং প্রয়োগ করেছে)। একটি সঠিকভাবে বাস্তবায়িত আনলকিং প্রক্রিয়ার নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • আনলকিং কমান্ড ব্যবহারকারীর দ্বারা নিশ্চিত করা হলে, ডিভাইসটিকে অবিলম্বে ডেটা মুছা শুরু করতে হবে। নিরাপদ মোছা সম্পূর্ণ না হওয়া পর্যন্ত unlocked পতাকা সেট করা উচিত নয়।
  • যদি একটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ করা না যায়, তাহলে ডিভাইসটিকে একটি লক অবস্থায় থাকতে হবে।
  • অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত হলে, ioctl(BLKSECDISCARD) বা সমতুল্য ব্যবহার করা উচিত। eMMC ডিভাইসের জন্য, এর অর্থ হল একটি সিকিউর ইরেজ বা সিকিউর ট্রিম কমান্ড ব্যবহার করা। eMMC 4.5 এবং তার পরের জন্য, এর অর্থ হল একটি সাধারণ মুছে ফেলা বা ছাঁটাই ব্যবহার করার পরে একটি স্যানিটাইজ অপারেশন।
  • BLKSECDISCARD অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত না হলে, ioctl(BLKDISCARD) পরিবর্তে ব্যবহার করা আবশ্যক। eMMC ডিভাইসে, এটি একটি সাধারণ ট্রিম অপারেশন।
  • BLKDISCARD সমর্থিত না হলে, সমস্ত শূন্য সহ ব্লক ডিভাইসগুলি ওভাররাইট করা গ্রহণযোগ্য।
  • একটি পার্টিশন ফ্ল্যাশ করার আগে ব্যবহারকারীর ডেটা মুছে ফেলার প্রয়োজন করার জন্য একজন শেষ ব্যবহারকারীর বিকল্প থাকতে হবে। উদাহরণস্বরূপ, Nexus ডিভাইসে, এটি fastboot oem lock কমান্ডের মাধ্যমে করা হয়।
  • একটি ডিভাইস এফউজ বা অনুরূপ পদ্ধতির মাধ্যমে রেকর্ড করতে পারে, একটি ডিভাইস আনলক এবং/অথবা পুনরায় লক করা হয়েছে কিনা।

এই প্রয়োজনীয়তাগুলি নিশ্চিত করে যে একটি আনলক অপারেশন সম্পূর্ণ হওয়ার পরে সমস্ত ডেটা ধ্বংস হয়ে গেছে। এই সুরক্ষাগুলি বাস্তবায়নে ব্যর্থতা একটি মাঝারি স্তরের নিরাপত্তা দুর্বলতা হিসাবে বিবেচিত হয়।

আনলক করা একটি ডিভাইস পরবর্তীতে fastboot oem lock কমান্ড ব্যবহার করে পুনরায় লক করা হতে পারে। বুটলোডার লক করা নতুন কাস্টম ওএসের সাথে ব্যবহারকারীর ডেটার একই সুরক্ষা প্রদান করে যেমনটি আসল ডিভাইস প্রস্তুতকারক ওএসের সাথে উপলব্ধ ছিল (যেমন ডিভাইসটি আবার আনলক করা হলে ব্যবহারকারীর ডেটা মুছে ফেলা হবে)।

,

অ্যান্ড্রয়েড সিকিউরিটি টিম নিয়মিতভাবে অ্যান্ড্রয়েড ডিভাইসে সম্ভাব্য নিরাপত্তা সমস্যা প্রতিরোধের বিষয়ে তথ্যের জন্য অনুরোধ পায়। এছাড়াও আমরা মাঝে মাঝে ডিভাইসগুলি পরীক্ষা করি এবং ডিভাইস প্রস্তুতকারক এবং প্রভাবিত অংশীদারদের সম্ভাব্য সমস্যার কথা জানাই।

এই পৃষ্ঠাটি আমাদের অভিজ্ঞতার উপর ভিত্তি করে নিরাপত্তার সর্বোত্তম অনুশীলন প্রদান করে, আমরা বিকাশকারীদের জন্য প্রদত্ত নিরাপত্তা ডকুমেন্টেশনের প্রসারিত করে এবং ডিভাইসে সিস্টেম-স্তরের সফ্টওয়্যার তৈরি বা ইনস্টল করার জন্য অনন্য বিবরণ অন্তর্ভুক্ত করে।

এই সর্বোত্তম অনুশীলনগুলি গ্রহণের সুবিধার্থে, যেখানে সম্ভব Android সিকিউরিটি টিম অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) এবং অ্যান্ড্রয়েড লিন্টে পরীক্ষাগুলিকে অন্তর্ভুক্ত করে৷ আমরা ডিভাইস বাস্তবায়নকারীদের এমন পরীক্ষায় অবদান রাখতে উত্সাহিত করি যা অন্যান্য Android ব্যবহারকারীদের সাহায্য করতে পারে ( root/cts/tests/tests/security/src/android/security/cts এ নিরাপত্তা-সম্পর্কিত পরীক্ষাগুলি দেখুন)।

উন্নয়ন প্রক্রিয়া

আপনার উন্নয়ন প্রক্রিয়া এবং পরিবেশে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

সোর্স কোড পর্যালোচনা করুন

সোর্স কোড পর্যালোচনা এই নথিতে চিহ্নিত করা সহ নিরাপত্তা সংক্রান্ত সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। অ্যান্ড্রয়েড দৃঢ়ভাবে ম্যানুয়াল এবং স্বয়ংক্রিয় সোর্স কোড পর্যালোচনা উভয়কে উৎসাহিত করে। সর্বোত্তম অনুশীলন:

  • অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ কোডে অ্যান্ড্রয়েড লিন্ট চালান এবং কোনও চিহ্নিত সমস্যা সংশোধন করুন।
  • নেটিভ কোড একটি স্বয়ংক্রিয় টুল ব্যবহার করে বিশ্লেষণ করা উচিত যা মেমরি পরিচালনার সমস্যা যেমন বাফার ওভারফ্লো এবং অফ-বাই-ওয়ান ত্রুটি সনাক্ত করতে পারে।
  • অ্যান্ড্রয়েড বিল্ড সিস্টেমে অনেক LLVM স্যানিটাইজারের জন্য সমর্থন রয়েছে, যেমন Address Sanitizer এবং Undefined Behavior Sanitizer যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে।

স্বয়ংক্রিয় পরীক্ষা ব্যবহার করুন

স্বয়ংক্রিয় পরীক্ষা নীচে আলোচনা করা বেশ কয়েকটি সমস্যা সহ বিস্তৃত সুরক্ষা সমস্যা সনাক্ত করতে পারে। সর্বোত্তম অনুশীলন:

  • CTS নিয়মিত নিরাপত্তা পরীক্ষার সাথে আপডেট করা হয়; সামঞ্জস্য যাচাই করতে CTS-এর সাম্প্রতিকতম সংস্করণ চালান।
  • প্রাথমিকভাবে সমস্যা সনাক্ত করতে এবং সংশোধনের সময় কমাতে উন্নয়ন প্রক্রিয়া জুড়ে নিয়মিতভাবে CTS চালান। আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়ায় ক্রমাগত একীকরণের অংশ হিসাবে Android CTS ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
  • ডিভাইস নির্মাতাদের উচিত ইন্টারফেসের নিরাপত্তা পরীক্ষা স্বয়ংক্রিয় করা, যার মধ্যে ত্রুটিপূর্ণ ইনপুট (ফাজ টেস্টিং) সহ পরীক্ষা করা।

সিস্টেম ইমেজ সাইন ইন করুন

সিস্টেম ইমেজের স্বাক্ষর ডিভাইসের অখণ্ডতা নির্ধারণের জন্য গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলিকে সর্বজনীনভাবে পরিচিত একটি কী দিয়ে স্বাক্ষর করা উচিত নয়৷
  • ডিভাইস সাইন করার জন্য ব্যবহৃত কীগুলি সীমিত, নিরীক্ষাযোগ্য অ্যাক্সেস প্রদান করে এমন একটি হার্ডওয়্যার সিকিউরিটি মডিউল (এইচএসএম) সহ সংবেদনশীল কীগুলি পরিচালনার জন্য শিল্পের মানক অনুশীলনের সাথে সামঞ্জস্যপূর্ণভাবে পরিচালনা করা উচিত।

সাইন অ্যাপস (এপিকে)

অ্যাপ স্বাক্ষরগুলি ডিভাইসের নিরাপত্তায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি চেক করার পাশাপাশি সফ্টওয়্যার আপডেটের জন্য ব্যবহৃত হয়। অ্যাপ্লিকেশানগুলি স্বাক্ষর করার জন্য ব্যবহার করার জন্য একটি কী নির্বাচন করার সময়, এটি বিবেচনা করা গুরুত্বপূর্ণ যে একটি অ্যাপ শুধুমাত্র একটি ডিভাইসে উপলব্ধ হবে নাকি একাধিক ডিভাইসে সাধারণ। সর্বোত্তম অনুশীলন:

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

অ্যাপস প্রকাশ করুন

Google Play ডিভাইস নির্মাতাদের সম্পূর্ণ সিস্টেম আপডেট না করেই অ্যাপ আপডেট করার ক্ষমতা প্রদান করে। এটি সুরক্ষা সমস্যাগুলির প্রতিক্রিয়া এবং নতুন বৈশিষ্ট্যগুলির সরবরাহকে ত্বরান্বিত করতে পারে, সেইসাথে আপনার অ্যাপের একটি অনন্য প্যাকেজ নাম রয়েছে তা নিশ্চিত করার একটি উপায় প্রদান করে৷ সর্বোত্তম অনুশীলন:

  • সম্পূর্ণ ওভার-দ্য-এয়ার (OTA) আপডেটের প্রয়োজন ছাড়াই স্বয়ংক্রিয় আপডেটের অনুমতি দিতে Google Play-তে আপনার অ্যাপগুলি আপলোড করুন। যে অ্যাপগুলি আপলোড করা হয়েছে কিন্তু অপ্রকাশিত হয়েছে সেগুলি ব্যবহারকারীদের দ্বারা সরাসরি ডাউনলোড করা যায় না কিন্তু অ্যাপগুলি এখনও আপডেট করা হয়৷ যে ব্যবহারকারীরা আগে অ্যাপটি ইনস্টল করেছেন তারা এটি পুনরায় ইনস্টল করতে এবং/অথবা অন্যান্য ডিভাইসে ইনস্টল করতে পারেন।
  • একটি অ্যাপ প্যাকেজ নাম তৈরি করুন যা আপনার কোম্পানির সাথে স্পষ্টভাবে যুক্ত, যেমন একটি কোম্পানির ট্রেডমার্ক ব্যবহার করে।
  • তৃতীয় পক্ষের ব্যবহারকারীদের দ্বারা প্যাকেজের নামের ছদ্মবেশ এড়াতে ডিভাইস নির্মাতাদের দ্বারা প্রকাশিত অ্যাপগুলিকে Google Play স্টোরে আপলোড করা উচিত। যদি কোনও ডিভাইস প্রস্তুতকারক প্লে স্টোরে অ্যাপটি প্রকাশ না করে একটি ডিভাইসে একটি অ্যাপ ইনস্টল করে, তাহলে অন্য ডেভেলপার একই অ্যাপ আপলোড করতে, একই প্যাকেজের নাম ব্যবহার করতে এবং অ্যাপের মেটাডেটা পরিবর্তন করতে পারে। অ্যাপটি ব্যবহারকারীর কাছে উপস্থাপিত হলে, এই সম্পর্কহীন মেটাডেটা বিভ্রান্তি তৈরি করতে পারে।

ঘটনার প্রতিক্রিয়া

বাহ্যিক পক্ষগুলির ডিভাইস-নির্দিষ্ট নিরাপত্তা সমস্যাগুলির বিষয়ে ডিভাইস নির্মাতাদের সাথে যোগাযোগ করার ক্ষমতা থাকতে হবে। আমরা নিরাপত্তা ঘটনাগুলি পরিচালনা করার জন্য একটি সর্বজনীনভাবে অ্যাক্সেসযোগ্য ইমেল ঠিকানা তৈরি করার পরামর্শ দিই৷ সর্বোত্তম অনুশীলন:

  • একটি security@your-company.com বা অনুরূপ ঠিকানা তৈরি করুন এবং এটি প্রচার করুন।
  • আপনি যদি একাধিক ডিভাইস প্রস্তুতকারকদের থেকে Android OS বা Android ডিভাইসগুলিকে প্রভাবিত করে এমন একটি নিরাপত্তা সমস্যা সম্পর্কে সচেতন হন, তাহলে আপনাকে একটি নিরাপত্তা বাগ রিপোর্ট ফাইল করে Android নিরাপত্তা টিমের সাথে যোগাযোগ করা উচিত।

পণ্য বাস্তবায়ন

একটি পণ্য বাস্তবায়ন করার সময় নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

রুট প্রক্রিয়া বিচ্ছিন্ন করুন

রুট প্রক্রিয়াগুলি বিশেষাধিকার বৃদ্ধি আক্রমণের সবচেয়ে ঘন ঘন লক্ষ্যবস্তু, তাই রুট প্রক্রিয়ার সংখ্যা হ্রাস করা বিশেষাধিকার বৃদ্ধির ঝুঁকি হ্রাস করে। CTS একটি তথ্যমূলক পরীক্ষা অন্তর্ভুক্ত করে যা মূল প্রক্রিয়াগুলি তালিকাভুক্ত করে। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলিকে রুট হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, রুট প্রক্রিয়ার পরিবর্তে একটি নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। ICS Galaxy Nexus-এর মাত্র ছয়টি রুট প্রসেস আছে: vold, inetd, zygote, tf_daemon, ueventd এবং init। যদি একটি প্রক্রিয়াটি একটি ডিভাইসে রুট হিসাবে চালানো আবশ্যক, একটি AOSP বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি সর্বজনীনভাবে পর্যালোচনা করা যায়।
  • যেখানে সম্ভব, রুট কোড অবিশ্বস্ত ডেটা থেকে আলাদা করা উচিত এবং IPC এর মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে রুট কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক পরিচালনা করার জন্য কম বা কোনও সুবিধা নেই এমন একটি অ্যাপে স্বাক্ষরের অনুমতি সহ পরিষেবাটি প্রকাশ করুন৷
  • নেটওয়ার্ক সকেটে রুট প্রসেস শুনতে হবে না।
  • রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপগুলির জন্য একটি সাধারণ-উদ্দেশ্য রানটাইম প্রদান করবে না (উদাহরণস্বরূপ, একটি জাভা ভিএম)।

আইসোলেট সিস্টেম অ্যাপ

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

  • ডিভাইসগুলিকে সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, সিস্টেম UID পুনঃব্যবহারের পরিবর্তে নিজস্ব UID সহ একটি Android প্রক্রিয়া ব্যবহার করুন।
  • যেখানে সম্ভব, সিস্টেম কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং শুধুমাত্র অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে IPC প্রকাশ করা উচিত৷
  • সিস্টেম প্রসেস একটি নেটওয়ার্ক সকেটে শুনতে হবে না.

বিচ্ছিন্ন প্রক্রিয়া

অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স রুট প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সহ অ্যাপগুলি সরবরাহ করে। অ্যাপ এবং ব্যবহারকারীর দ্বারা ডিবাগিং বিশেষভাবে সক্ষম না হলে, কোনও অ্যাপই সেই প্রত্যাশা লঙ্ঘন করবে না। সর্বোত্তম অনুশীলন:

  • একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত রুট প্রক্রিয়াগুলি পৃথক অ্যাপ ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করতে পারবে না।
  • একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত রুট প্রক্রিয়াগুলিকে অবশ্যই অ্যাপের মেমরি অ্যাক্সেস করা উচিত নয়।
  • ডিভাইসগুলিতে এমন কোনও অ্যাপ অন্তর্ভুক্ত করা উচিত নয় যা অন্যান্য অ্যাপ বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।

সুরক্ষিত SUID ফাইল

নতুন সেটুইড প্রোগ্রামগুলি অবিশ্বস্ত প্রোগ্রামগুলির দ্বারা অ্যাক্সেসযোগ্য হওয়া উচিত নয়৷ সেটুইড প্রোগ্রামগুলি প্রায়শই দুর্বলতার অবস্থান হয়ে থাকে যা রুট অ্যাক্সেস পেতে ব্যবহার করা যেতে পারে, তাই অবিশ্বস্ত অ্যাপগুলিতে সেটুইড প্রোগ্রামের প্রাপ্যতা হ্রাস করার চেষ্টা করুন। সর্বোত্তম অনুশীলন:

  • SUID প্রক্রিয়াগুলিকে অবশ্যই একটি শেল বা ব্যাকডোর প্রদান করা উচিত নয় যা Android নিরাপত্তা মডেলকে ফাঁকি দিতে ব্যবহার করা যেতে পারে।
  • SUID প্রোগ্রাম কোনো ব্যবহারকারীর দ্বারা লিখিত হতে হবে না.
  • SUID প্রোগ্রামগুলি বিশ্ব পাঠযোগ্য বা এক্সিকিউটেবল হওয়া উচিত নয়। একটি গোষ্ঠী তৈরি করুন, সেই গোষ্ঠীর সদস্যদের জন্য SUID বাইনারিতে অ্যাক্সেস সীমিত করুন এবং সেই গোষ্ঠীতে SUID প্রোগ্রামটি কার্যকর করতে সক্ষম এমন কোনও অ্যাপ রাখুন৷
  • SUID প্রোগ্রামগুলি ডিভাইসের ব্যবহারকারী রুট করার একটি সাধারণ উৎস। এই ঝুঁকি কমাতে, SUID প্রোগ্রামগুলি শেল ব্যবহারকারীর দ্বারা কার্যকর করা উচিত নয়।

CTS যাচাইকারী একটি তথ্যমূলক পরীক্ষা তালিকাভুক্ত SUID ফাইল অন্তর্ভুক্ত করে; CTS পরীক্ষা প্রতি কিছু setuid ফাইল অনুমোদিত নয়।

সুরক্ষিত শোনার সকেট

CTS পরীক্ষা ব্যর্থ হয় যখন কোনো ডিভাইস কোনো পোর্টে, কোনো ইন্টারফেসে শুনছে। একটি ব্যর্থতার ক্ষেত্রে, Android যাচাই করে যে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করা হচ্ছে:

  • ডিভাইসে কোন শোনার পোর্ট থাকা উচিত নয়।
  • লিসেনিং পোর্টগুলিকে ওটিএ ছাড়াই অক্ষম করতে সক্ষম হতে হবে। এটি একটি সার্ভার বা ব্যবহারকারী-ডিভাইস কনফিগারেশন পরিবর্তন হতে পারে।
  • কোনো পোর্টে রুট প্রসেস শুনতে হবে না।
  • সিস্টেম ইউআইডির মালিকানাধীন প্রসেস কোনো পোর্টে শুনতে হবে না।
  • সকেট ব্যবহার করে স্থানীয় IPC-এর জন্য, অ্যাপগুলিকে অবশ্যই একটি UNIX ডোমেন সকেট ব্যবহার করতে হবে যাতে একটি গোষ্ঠীতে সীমাবদ্ধ অ্যাক্সেস থাকে। IPC-এর জন্য একটি ফাইল বর্ণনাকারী তৈরি করুন এবং একটি নির্দিষ্ট UNIX গোষ্ঠীর জন্য এটি +RW করুন। যেকোনো ক্লায়েন্ট অ্যাপ অবশ্যই সেই UNIX গ্রুপের মধ্যে থাকতে হবে।
  • একাধিক প্রসেসর সহ কিছু ডিভাইস (যেমন অ্যাপ প্রসেসর থেকে আলাদা রেডিও/মডেম) প্রসেসরের মধ্যে যোগাযোগের জন্য নেটওয়ার্ক সকেট ব্যবহার করে। এই ধরনের দৃষ্টান্তে, আন্তঃ-প্রসেসর যোগাযোগের জন্য ব্যবহৃত নেটওয়ার্ক সকেটটি ডিভাইসে অননুমোদিত অ্যাপগুলির দ্বারা অ্যাক্সেস রোধ করতে একটি বিচ্ছিন্ন নেটওয়ার্ক ইন্টারফেস ব্যবহার করতে হবে (অর্থাৎ, ডিভাইসে অন্যান্য অ্যাপের দ্বারা অ্যাক্সেস রোধ করতে iptables ব্যবহার করুন)।
  • লিসনিং পোর্টগুলি পরিচালনাকারী ডেমনগুলি অবশ্যই বিকৃত ডেটার বিরুদ্ধে শক্তিশালী হতে হবে। Google অননুমোদিত ক্লায়েন্ট এবং যেখানে সম্ভব অনুমোদিত ক্লায়েন্ট ব্যবহার করে পোর্টের বিরুদ্ধে ফাজ-টেস্টিং পরিচালনা করতে পারে। যেকোন ক্র্যাশ যথাযথ তীব্রতার সাথে বাগ হিসাবে দায়ের করা হয়।

লগ ডেটা

লগিং ডেটা সেই ডেটার এক্সপোজারের ঝুঁকি বাড়ায় এবং সিস্টেমের কর্মক্ষমতা হ্রাস করে। অ্যান্ড্রয়েড ডিভাইসে ডিফল্টরূপে ইনস্টল করা অ্যাপের মাধ্যমে সংবেদনশীল ব্যবহারকারীর ডেটা লগ করার ফলে একাধিক জননিরাপত্তার ঘটনা ঘটেছে। সর্বোত্তম অনুশীলন:

  • সংবেদনশীল তথ্য থাকতে পারে এমন থার্ড-পার্টি অ্যাপ থেকে প্রদত্ত ডেটা লগ করা অ্যাপ বা সিস্টেম পরিষেবার উচিত নয়।
  • স্বাভাবিক ক্রিয়াকলাপের অংশ হিসাবে অ্যাপগুলিকে অবশ্যই কোনও ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (PII) লগ করা উচিত নয়৷

CTS-এর মধ্যে এমন পরীক্ষা রয়েছে যা সিস্টেম লগগুলিতে সম্ভাব্য সংবেদনশীল তথ্যের উপস্থিতি পরীক্ষা করে।

ডিরেক্টরি অ্যাক্সেস সীমিত করুন

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

একটি সর্বোত্তম অনুশীলন হিসাবে, সিস্টেম বা রুট ব্যবহারকারীদের দ্বারা তৈরি ডিরেক্টরিগুলি বিশ্ব লিখনযোগ্য হওয়া উচিত নয়। CTS পরীক্ষাগুলি পরিচিত ডিরেক্টরি পরীক্ষা করে এই সর্বোত্তম অনুশীলনকে কার্যকর করতে সাহায্য করে।

সুরক্ষিত কনফিগারেশন ফাইল

অনেক ড্রাইভার এবং পরিষেবাগুলি /system/etc এবং /data মতো ডিরেক্টরিতে সংরক্ষিত কনফিগারেশন এবং ডেটা ফাইলের উপর নির্ভর করে। যদি এই ফাইলগুলি একটি বিশেষ সুবিধাপ্রাপ্ত প্রক্রিয়া দ্বারা প্রক্রিয়া করা হয় এবং বিশ্ব লিখনযোগ্য হয়, তাহলে একটি অ্যাপের পক্ষে বিশ্ব-লেখাযোগ্য ফাইলে দূষিত বিষয়বস্তু তৈরি করে প্রক্রিয়ার একটি দুর্বলতাকে কাজে লাগানো সম্ভব। সর্বোত্তম অনুশীলন:

  • সুবিধাপ্রাপ্ত প্রসেস দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি বিশ্ব পাঠযোগ্য হওয়া উচিত নয়।
  • সুবিধাপ্রাপ্ত প্রসেস দ্বারা ব্যবহৃত কনফিগারেশন ফাইল বিশ্ব লিখনযোগ্য হতে হবে না।

স্থানীয় কোড লাইব্রেরি সংরক্ষণ করুন

বিশেষাধিকারপ্রাপ্ত ডিভাইস প্রস্তুতকারকের প্রসেস দ্বারা ব্যবহৃত যেকোন কোড অবশ্যই /vendor বা /system থাকতে হবে; এই ফাইল-সিস্টেমগুলি বুটেই মাউন্ট করা হয়। একটি সর্বোত্তম অনুশীলন হিসাবে, ডিভাইসে ইনস্টল করা সিস্টেম বা অন্যান্য উচ্চ-সুবিধাপ্রাপ্ত অ্যাপ দ্বারা ব্যবহৃত লাইব্রেরিগুলিও এই ফাইল সিস্টেমগুলিতে থাকা উচিত৷ এটি একটি সুরক্ষা দুর্বলতা প্রতিরোধ করতে পারে যা আক্রমণকারীকে একটি বিশেষাধিকারপ্রাপ্ত প্রক্রিয়া সম্পাদন করে এমন কোড নিয়ন্ত্রণ করতে দেয়।

ডিভাইস ড্রাইভার অ্যাক্সেস সীমিত করুন

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

ADB নিষ্ক্রিয় করুন

অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) একটি মূল্যবান ডেভেলপমেন্ট এবং ডিবাগিং টুল, কিন্তু এটি নিয়ন্ত্রিত, নিরাপদ পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে এবং সাধারণ ব্যবহারের জন্য সক্ষম করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • ADB ডিফল্টরূপে নিষ্ক্রিয় করা আবশ্যক।
  • সংযোগ গ্রহণ করার আগে ADB অবশ্যই ব্যবহারকারীকে এটি চালু করতে হবে।

বুটলোডার আনলক করুন

অনেক অ্যান্ড্রয়েড ডিভাইস আনলকিং সমর্থন করে, ডিভাইসের মালিককে সিস্টেম পার্টিশন পরিবর্তন করতে এবং/অথবা একটি কাস্টম অপারেটিং সিস্টেম ইনস্টল করতে সক্ষম করে। সাধারণ ব্যবহারের ক্ষেত্রে একটি তৃতীয় পক্ষের রম ইনস্টল করা এবং ডিভাইসে সিস্টেম-স্তরের বিকাশ করা অন্তর্ভুক্ত। উদাহরণস্বরূপ, একজন Google নেক্সাস ডিভাইসের মালিক আনলকিং প্রক্রিয়া শুরু করতে fastboot oem unlock চালাতে পারেন, যা ব্যবহারকারীকে নিম্নলিখিত বার্তাটি উপস্থাপন করে:

বুটলোডার আনলক করবেন?

আপনি বুটলোডার আনলক করলে, আপনি এই ডিভাইসে কাস্টম অপারেটিং সিস্টেম সফ্টওয়্যার ইনস্টল করতে সক্ষম হবেন।

একটি কাস্টম OS মূল OS এর মতো একই পরীক্ষার বিষয় নয়, এবং আপনার ডিভাইস এবং ইনস্টল করা অ্যাপগুলি সঠিকভাবে কাজ করা বন্ধ করতে পারে।

আপনার ব্যক্তিগত ডেটাতে অননুমোদিত অ্যাক্সেস রোধ করতে, বুটলোডার আনলক করলে আপনার ডিভাইস থেকে সমস্ত ব্যক্তিগত ডেটা মুছে যাবে (একটি "ফ্যাক্টরি ডেটা রিসেট")।

হ্যাঁ বা না নির্বাচন করতে ভলিউম আপ/ডাউন বোতাম টিপুন। তারপর চালিয়ে যেতে পাওয়ার বোতাম টিপুন।

হ্যাঁ : বুটলোডার আনলক করুন (ওয়ারেন্টি বাতিল হতে পারে)

না : বুটলোডার আনলক করবেন না এবং ডিভাইস পুনরায় চালু করবেন না।


সর্বোত্তম অনুশীলন হিসাবে, আনলক করা যায় এমন Android ডিভাইসগুলিকে অবশ্যই আনলক হওয়ার আগে সমস্ত ব্যবহারকারীর ডেটা সুরক্ষিতভাবে মুছে ফেলতে হবে। আনলক করার সময় সমস্ত ডেটা সঠিকভাবে মুছে ফেলতে ব্যর্থ হলে একজন শারীরিকভাবে কাছাকাছি আক্রমণকারীকে গোপনীয় Android ব্যবহারকারী ডেটাতে অননুমোদিত অ্যাক্সেস পেতে অনুমতি দিতে পারে। ব্যবহারকারীর ডেটা প্রকাশ রোধ করার জন্য, আনলকিং সমর্থন করে এমন একটি ডিভাইস অবশ্যই এটি সঠিকভাবে প্রয়োগ করবে (আমরা অসংখ্য উদাহরণ দেখেছি যেখানে ডিভাইস নির্মাতারা ভুলভাবে আনলকিং প্রয়োগ করেছে)। একটি সঠিকভাবে বাস্তবায়িত আনলকিং প্রক্রিয়ার নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • আনলকিং কমান্ড ব্যবহারকারীর দ্বারা নিশ্চিত করা হলে, ডিভাইসটিকে অবিলম্বে ডেটা মুছা শুরু করতে হবে। নিরাপদ মোছা সম্পূর্ণ না হওয়া পর্যন্ত unlocked পতাকা সেট করা উচিত নয়।
  • যদি একটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ করা না যায়, তাহলে ডিভাইসটিকে একটি লক অবস্থায় থাকতে হবে।
  • অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত হলে, ioctl(BLKSECDISCARD) বা সমতুল্য ব্যবহার করা উচিত। eMMC ডিভাইসের জন্য, এর অর্থ হল একটি সিকিউর ইরেজ বা সিকিউর ট্রিম কমান্ড ব্যবহার করা। eMMC 4.5 এবং তার পরের জন্য, এর অর্থ হল একটি সাধারণ মুছে ফেলা বা ছাঁটাই ব্যবহার করার পরে একটি স্যানিটাইজ অপারেশন।
  • BLKSECDISCARD অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত না হলে, ioctl(BLKDISCARD) পরিবর্তে ব্যবহার করা আবশ্যক। eMMC ডিভাইসে, এটি একটি সাধারণ ট্রিম অপারেশন।
  • BLKDISCARD সমর্থিত না হলে, সমস্ত শূন্য সহ ব্লক ডিভাইসগুলি ওভাররাইট করা গ্রহণযোগ্য।
  • একটি পার্টিশন ফ্ল্যাশ করার আগে ব্যবহারকারীর ডেটা মুছে ফেলার প্রয়োজন করার জন্য একজন শেষ ব্যবহারকারীর বিকল্প থাকতে হবে। উদাহরণস্বরূপ, Nexus ডিভাইসে, এটি fastboot oem lock কমান্ডের মাধ্যমে করা হয়।
  • একটি ডিভাইস এফউজ বা অনুরূপ পদ্ধতির মাধ্যমে রেকর্ড করতে পারে, একটি ডিভাইস আনলক এবং/অথবা পুনরায় লক করা হয়েছে কিনা।

এই প্রয়োজনীয়তাগুলি নিশ্চিত করে যে একটি আনলক অপারেশন সম্পূর্ণ হওয়ার পরে সমস্ত ডেটা ধ্বংস হয়ে গেছে। এই সুরক্ষাগুলি বাস্তবায়নে ব্যর্থতা একটি মাঝারি স্তরের নিরাপত্তা দুর্বলতা হিসাবে বিবেচিত হয়।

আনলক করা একটি ডিভাইস পরবর্তীতে fastboot oem lock কমান্ড ব্যবহার করে পুনরায় লক করা হতে পারে। বুটলোডার লক করা নতুন কাস্টম ওএসের সাথে ব্যবহারকারীর ডেটার একই সুরক্ষা প্রদান করে যেমনটি আসল ডিভাইস প্রস্তুতকারক ওএসের সাথে উপলব্ধ ছিল (যেমন ডিভাইসটি আবার আনলক করা হলে ব্যবহারকারীর ডেটা মুছে ফেলা হবে)।

,

অ্যান্ড্রয়েড সিকিউরিটি টিম নিয়মিতভাবে অ্যান্ড্রয়েড ডিভাইসে সম্ভাব্য নিরাপত্তা সমস্যা প্রতিরোধের বিষয়ে তথ্যের জন্য অনুরোধ পায়। এছাড়াও আমরা মাঝে মাঝে ডিভাইসগুলি পরীক্ষা করি এবং ডিভাইস প্রস্তুতকারক এবং প্রভাবিত অংশীদারদের সম্ভাব্য সমস্যার কথা জানাই।

এই পৃষ্ঠাটি আমাদের অভিজ্ঞতার উপর ভিত্তি করে নিরাপত্তার সর্বোত্তম অনুশীলন প্রদান করে, আমরা বিকাশকারীদের জন্য প্রদত্ত নিরাপত্তা ডকুমেন্টেশনের প্রসারিত করে এবং ডিভাইসে সিস্টেম-স্তরের সফ্টওয়্যার তৈরি বা ইনস্টল করার জন্য অনন্য বিবরণ অন্তর্ভুক্ত করে।

এই সর্বোত্তম অনুশীলনগুলি গ্রহণের সুবিধার্থে, যেখানে সম্ভব Android সিকিউরিটি টিম অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (সিটিএস) এবং অ্যান্ড্রয়েড লিন্টে পরীক্ষাগুলিকে অন্তর্ভুক্ত করে৷ আমরা ডিভাইস বাস্তবায়নকারীদের এমন পরীক্ষায় অবদান রাখতে উত্সাহিত করি যা অন্যান্য Android ব্যবহারকারীদের সাহায্য করতে পারে ( root/cts/tests/tests/security/src/android/security/cts এ নিরাপত্তা-সম্পর্কিত পরীক্ষাগুলি দেখুন)।

উন্নয়ন প্রক্রিয়া

আপনার উন্নয়ন প্রক্রিয়া এবং পরিবেশে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

সোর্স কোড পর্যালোচনা করুন

সোর্স কোড পর্যালোচনা এই নথিতে চিহ্নিত করা সহ নিরাপত্তা সংক্রান্ত সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। অ্যান্ড্রয়েড দৃঢ়ভাবে ম্যানুয়াল এবং স্বয়ংক্রিয় সোর্স কোড পর্যালোচনা উভয়কে উৎসাহিত করে। সর্বোত্তম অনুশীলন:

  • অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ কোডে অ্যান্ড্রয়েড লিন্ট চালান এবং কোনও চিহ্নিত সমস্যা সংশোধন করুন।
  • নেটিভ কোড একটি স্বয়ংক্রিয় টুল ব্যবহার করে বিশ্লেষণ করা উচিত যা মেমরি পরিচালনার সমস্যা যেমন বাফার ওভারফ্লো এবং অফ-বাই-ওয়ান ত্রুটি সনাক্ত করতে পারে।
  • অ্যান্ড্রয়েড বিল্ড সিস্টেমে অনেক LLVM স্যানিটাইজারের জন্য সমর্থন রয়েছে, যেমন Address Sanitizer এবং Undefined Behavior Sanitizer যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে।

স্বয়ংক্রিয় পরীক্ষা ব্যবহার করুন

স্বয়ংক্রিয় পরীক্ষা নীচে আলোচনা করা বেশ কয়েকটি সমস্যা সহ নিরাপত্তা সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। সর্বোত্তম অনুশীলন:

  • CTS নিয়মিত নিরাপত্তা পরীক্ষার সাথে আপডেট করা হয়; সামঞ্জস্য যাচাই করতে CTS-এর সাম্প্রতিকতম সংস্করণ চালান।
  • প্রাথমিকভাবে সমস্যা সনাক্ত করতে এবং সংশোধনের সময় কমাতে উন্নয়ন প্রক্রিয়া জুড়ে নিয়মিতভাবে CTS চালান। আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়ায় ক্রমাগত একীকরণের অংশ হিসাবে Android CTS ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
  • ডিভাইস নির্মাতাদের উচিত ইন্টারফেসের নিরাপত্তা পরীক্ষা স্বয়ংক্রিয় করা, যার মধ্যে ত্রুটিপূর্ণ ইনপুট (ফাজ টেস্টিং) সহ পরীক্ষা করা।

সিস্টেম ইমেজ সাইন ইন করুন

সিস্টেম ইমেজের স্বাক্ষর ডিভাইসের অখণ্ডতা নির্ধারণের জন্য গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলিকে সর্বজনীনভাবে পরিচিত একটি কী দিয়ে স্বাক্ষর করা উচিত নয়৷
  • ডিভাইসগুলিতে স্বাক্ষর করতে ব্যবহৃত কীগুলি সংবেদনশীল কীগুলি পরিচালনা করার জন্য শিল্পের স্ট্যান্ডার্ড অনুশীলনের সাথে সামঞ্জস্যপূর্ণভাবে পরিচালনা করা উচিত, যার মধ্যে একটি হার্ডওয়্যার সুরক্ষা মডিউল (এইচএসএম) সহ সীমাবদ্ধ, নিরীক্ষণযোগ্য অ্যাক্সেস সরবরাহ করে।

সাইন অ্যাপস (এপিকেএস)

অ্যাপ্লিকেশন স্বাক্ষরগুলি ডিভাইস সুরক্ষায় গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি চেকের পাশাপাশি সফ্টওয়্যার আপডেটের জন্য ব্যবহৃত হয়। অ্যাপ্লিকেশনগুলিতে স্বাক্ষর করার জন্য কোনও কী নির্বাচন করার সময়, কোনও অ্যাপ্লিকেশন কেবলমাত্র একক ডিভাইসে বা একাধিক ডিভাইস জুড়ে সাধারণ পাওয়া যাবে কিনা তা বিবেচনা করা গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

  • অ্যাপ্লিকেশনগুলি প্রকাশ্যে পরিচিত এমন কোনও কী দিয়ে স্বাক্ষর করতে হবে না।
  • অ্যাপ্লিকেশনগুলিতে স্বাক্ষর করতে ব্যবহৃত কীগুলি সংবেদনশীল কীগুলি পরিচালনা করার জন্য শিল্প স্ট্যান্ডার্ড অনুশীলনের সাথে সামঞ্জস্য রেখে এমন একটি পদ্ধতিতে পরিচালনা করা উচিত, যার মধ্যে একটি এইচএসএম যা সীমিত, নিরীক্ষণযোগ্য অ্যাক্সেস সরবরাহ করে।
  • অ্যাপ্লিকেশনগুলি প্ল্যাটফর্ম কী দিয়ে স্বাক্ষর করা উচিত নয়।
  • একই প্যাকেজের নাম সহ অ্যাপ্লিকেশনগুলি বিভিন্ন কী দিয়ে স্বাক্ষর করা উচিত নয়। এটি প্রায়শই ঘটে যখন বিভিন্ন ডিভাইসের জন্য একটি অ্যাপ্লিকেশন তৈরি করা হয়, বিশেষত প্ল্যাটফর্ম কী ব্যবহার করার সময়। যদি অ্যাপটি ডিভাইস-স্বতন্ত্র হয় তবে ডিভাইসগুলিতে একই কী ব্যবহার করুন। যদি অ্যাপটি ডিভাইস-নির্দিষ্ট হয় তবে ডিভাইস এবং কী প্রতি অনন্য প্যাকেজ নাম তৈরি করুন।

অ্যাপ্লিকেশন প্রকাশ করুন

গুগল প্লে ডিভাইস নির্মাতাদের একটি সম্পূর্ণ সিস্টেম আপডেট না করে অ্যাপ্লিকেশন আপডেট করার ক্ষমতা সরবরাহ করে। এটি সুরক্ষা সমস্যা এবং নতুন বৈশিষ্ট্য সরবরাহের প্রতিক্রিয়া ত্বরান্বিত করতে পারে, পাশাপাশি আপনার অ্যাপ্লিকেশনটির একটি অনন্য প্যাকেজের নাম রয়েছে তা নিশ্চিত করার একটি উপায় সরবরাহ করতে পারে। সর্বোত্তম অনুশীলন:

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

ঘটনার প্রতিক্রিয়া

বাহ্যিক দলগুলির অবশ্যই ডিভাইস-নির্দিষ্ট সুরক্ষা সমস্যাগুলি সম্পর্কে ডিভাইস নির্মাতাদের সাথে যোগাযোগ করার ক্ষমতা থাকতে হবে। আমরা সুরক্ষা ঘটনাগুলি পরিচালনার জন্য সর্বজনীনভাবে অ্যাক্সেসযোগ্য ইমেল ঠিকানা তৈরি করার পরামর্শ দিই। সর্বোত্তম অনুশীলন:

  • একটি সুরক্ষা@your-company.com বা অনুরূপ ঠিকানা তৈরি করুন এবং এটি প্রচার করুন।
  • আপনি যদি একাধিক ডিভাইস নির্মাতাদের অ্যান্ড্রয়েড ওএস বা অ্যান্ড্রয়েড ডিভাইসগুলিকে প্রভাবিত করে এমন কোনও সুরক্ষা সমস্যা সম্পর্কে সচেতন হন তবে আপনার সুরক্ষা বাগ রিপোর্ট ফাইল করে অ্যান্ড্রয়েড সুরক্ষা দলের সাথে যোগাযোগ করা উচিত।

পণ্য বাস্তবায়ন

কোনও পণ্য বাস্তবায়নের সময় নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

মূল প্রক্রিয়াগুলি বিচ্ছিন্ন করুন

রুট প্রক্রিয়াগুলি হ'ল সুবিধা বাড়ানোর আক্রমণগুলির সর্বাধিক ঘন ঘন লক্ষ্য, সুতরাং মূল প্রক্রিয়াগুলির সংখ্যা হ্রাস করা সুবিধাগুলি বৃদ্ধির ঝুঁকি হ্রাস করে। সিটিএসে একটি তথ্য পরীক্ষা অন্তর্ভুক্ত রয়েছে যা মূল প্রক্রিয়াগুলি তালিকাভুক্ত করে। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলি রুট হিসাবে সর্বনিম্ন প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, মূল প্রক্রিয়াটির পরিবর্তে নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। আইসিএস গ্যালাক্সি নেক্সাসের কেবল ছয়টি মূল প্রক্রিয়া রয়েছে: ভলড, ইনটেড, জাইগোট, টিএফ_ডেমোন, ইউইভেন্টড এবং ইনিশ। যদি কোনও প্রক্রিয়া অবশ্যই কোনও ডিভাইসে রুট হিসাবে চলতে থাকে তবে এওএসপি বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি প্রকাশ্যে পর্যালোচনা করা যায়।
  • যেখানে সম্ভব, রুট কোডটি অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং আইপিসির মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে মূল কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক হ্যান্ডেল করার জন্য কম বা কোনও সুযোগ -সুবিধা সহ কোনও অ্যাপ্লিকেশনটিতে স্বাক্ষর অনুমতি সহ পরিষেবাটি প্রকাশ করুন।
  • রুট প্রক্রিয়াগুলি অবশ্যই কোনও নেটওয়ার্ক সকেটে শুনতে হবে না।
  • রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ-উদ্দেশ্যমূলক রানটাইম সরবরাহ করবে না (উদাহরণস্বরূপ, একটি জাভা ভিএম)।

সিস্টেম অ্যাপ্লিকেশনগুলি বিচ্ছিন্ন করুন

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

  • ডিভাইসগুলি সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, সিস্টেম ইউআইডি পুনরায় ব্যবহার করার পরিবর্তে নিজস্ব ইউআইডি দিয়ে একটি অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন।
  • যেখানে সম্ভব, সিস্টেম কোডটি অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং আইপিসিকে কেবল অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে প্রকাশ করা উচিত।
  • সিস্টেম প্রক্রিয়াগুলি অবশ্যই কোনও নেটওয়ার্ক সকেটে শুনতে হবে না।

প্রক্রিয়া বিচ্ছিন্ন

অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স অ্যাপ্লিকেশনগুলিকে মূল প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সরবরাহ করে। যদি ডিবাগিং নির্দিষ্টভাবে অ্যাপ্লিকেশন এবং ব্যবহারকারী দ্বারা সক্ষম না করা হয়, কোনও অ্যাপ্লিকেশনকে সেই প্রত্যাশা লঙ্ঘন করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • রুট প্রক্রিয়াগুলি অবশ্যই পৃথক অ্যাপ্লিকেশন ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করতে পারে না, যদি না একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করে।
  • ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করে রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপ্লিকেশনগুলির মেমরি অ্যাক্সেস করতে পারে না।
  • ডিভাইসগুলিতে অবশ্যই এমন কোনও অ্যাপ্লিকেশন অন্তর্ভুক্ত করা উচিত নয় যা অন্যান্য অ্যাপ্লিকেশন বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।

সুরক্ষিত স্যুইড ফাইলগুলি

নতুন সেটুয়েড প্রোগ্রামগুলি অবিশ্বস্ত প্রোগ্রামগুলির দ্বারা অ্যাক্সেসযোগ্য হওয়া উচিত নয়। সেটুয়েড প্রোগ্রামগুলি প্রায়শই দুর্বলতার অবস্থান হয়ে থাকে যা রুট অ্যাক্সেস অর্জনের জন্য ব্যবহার করা যেতে পারে, তাই অবিশ্বস্ত অ্যাপ্লিকেশনগুলিতে সেটুয়েড প্রোগ্রামের প্রাপ্যতা হ্রাস করার জন্য প্রচেষ্টা করুন। সর্বোত্তম অনুশীলন:

  • এসইআইডি প্রক্রিয়াগুলি অবশ্যই এমন একটি শেল বা ব্যাকডোর সরবরাহ করবে না যা অ্যান্ড্রয়েড সুরক্ষা মডেলটি রোধ করতে ব্যবহার করা যেতে পারে।
  • সুইড প্রোগ্রামগুলি অবশ্যই কোনও ব্যবহারকারীর দ্বারা লিখিত হওয়া উচিত নয়।
  • সুইড প্রোগ্রামগুলি বিশ্ব পাঠযোগ্য বা নির্বাহযোগ্য হওয়া উচিত নয়। একটি গোষ্ঠী তৈরি করুন, সেই গোষ্ঠীর সদস্যদের কাছে এসইউডি বাইনারি অ্যাক্সেস সীমাবদ্ধ করুন এবং এমন কোনও অ্যাপ্লিকেশন রাখুন যা এসইউআইডি প্রোগ্রামটি সেই গ্রুপে কার্যকর করতে সক্ষম হবে।
  • এসইউআইডি প্রোগ্রামগুলি ডিভাইসগুলির ব্যবহারকারীর মূলের একটি সাধারণ উত্স। এই ঝুঁকি হ্রাস করার জন্য, এসইউআইডি প্রোগ্রামগুলি শেল ব্যবহারকারীর দ্বারা কার্যকর করা উচিত নয়।

সিটিএস যাচাইকারী একটি তথ্য পরীক্ষার তালিকা স্যুইড ফাইল অন্তর্ভুক্ত করে; কিছু সেটুয়েড ফাইল সিটিএস পরীক্ষায় অনুমোদিত নয়।

সুরক্ষিত শ্রবণ সকেট

সিটিএস পরীক্ষাগুলি ব্যর্থ হয় যখন কোনও ডিভাইস কোনও পোর্টে, কোনও ইন্টারফেসে শুনছে। ব্যর্থতার ক্ষেত্রে, অ্যান্ড্রয়েড নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করা হয়েছে তা যাচাই করে:

  • ডিভাইসে কোনও শ্রবণ পোর্ট থাকা উচিত নয়।
  • শ্রবণ পোর্টগুলি অবশ্যই কোনও ওটিএ ছাড়াই অক্ষম হতে সক্ষম হতে হবে। এটি কোনও সার্ভার বা ব্যবহারকারী-ডিভাইস কনফিগারেশন পরিবর্তন হতে পারে।
  • রুট প্রক্রিয়াগুলি অবশ্যই কোনও বন্দরে শুনতে হবে না।
  • সিস্টেমের মালিকানাধীন প্রক্রিয়াগুলি ইউআইডি অবশ্যই কোনও বন্দরে শুনতে হবে না।
  • স্থানীয় আইপিসির জন্য সকেট ব্যবহার করে, অ্যাপ্লিকেশনগুলিকে অবশ্যই একটি গ্রুপের মধ্যে সীমাবদ্ধ অ্যাক্সেস সহ একটি ইউনিক্স ডোমেন সকেট ব্যবহার করতে হবে। আইপিসির জন্য একটি ফাইল বর্ণনাকারী তৈরি করুন এবং এটি একটি নির্দিষ্ট ইউনিক্স গ্রুপের জন্য +আরডাব্লু তৈরি করুন। যে কোনও ক্লায়েন্ট অ্যাপ্লিকেশন অবশ্যই সেই ইউনিক্স গ্রুপের মধ্যে থাকতে হবে।
  • একাধিক প্রসেসর সহ কিছু ডিভাইস (যেমন অ্যাপ প্রসেসর থেকে পৃথক একটি রেডিও/মডেম) প্রসেসরের মধ্যে যোগাযোগের জন্য নেটওয়ার্ক সকেট ব্যবহার করে। এই জাতীয় উদাহরণগুলিতে, আন্তঃ প্রক্রিয়াজাতকের যোগাযোগের জন্য ব্যবহৃত নেটওয়ার্ক সকেটটি অবশ্যই ডিভাইসে অননুমোদিত অ্যাপ্লিকেশনগুলির দ্বারা অ্যাক্সেস রোধ করতে একটি বিচ্ছিন্ন নেটওয়ার্ক ইন্টারফেস ব্যবহার করতে হবে (এটি ডিভাইসের অন্যান্য অ্যাপ্লিকেশনগুলির দ্বারা অ্যাক্সেস রোধ করতে iptables ব্যবহার করে)।
  • শোনার বন্দরগুলি পরিচালনা করে এমন ডেমোনগুলি অবশ্যই ত্রুটিযুক্ত ডেটার বিরুদ্ধে দৃ ust ় হতে হবে। গুগল একটি অননুমোদিত ক্লায়েন্ট ব্যবহার করে এবং যেখানে সম্ভব, অনুমোদিত ক্লায়েন্ট ব্যবহার করে বন্দরটির বিরুদ্ধে ফাজ-পরীক্ষার ব্যবস্থা করতে পারে। যে কোনও ক্র্যাশগুলি উপযুক্ত তীব্রতার সাথে বাগ হিসাবে দায়ের করা হয়।

লগ ডেটা

লগিং ডেটা সেই ডেটা এক্সপোজারের ঝুঁকি বাড়ায় এবং সিস্টেমের কার্যকারিতা হ্রাস করে। অ্যান্ড্রয়েড ডিভাইসে ডিফল্টরূপে ইনস্টল করা অ্যাপ্লিকেশন দ্বারা সংবেদনশীল ব্যবহারকারীর ডেটা লগিংয়ের ফলাফল হিসাবে একাধিক জনসাধারণের সুরক্ষা ঘটনা ঘটেছে। সর্বোত্তম অনুশীলন:

  • অ্যাপস বা সিস্টেম পরিষেবাদির সংবেদনশীল তথ্য অন্তর্ভুক্ত থাকতে পারে এমন তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি থেকে সরবরাহ করা ডেটা লগ করা উচিত নয়।
  • অ্যাপ্লিকেশনগুলিকে সাধারণ অপারেশনের অংশ হিসাবে কোনও ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (পিআইআই) লগ করা উচিত নয়।

সিটিএসের মধ্যে এমন পরীক্ষাগুলি অন্তর্ভুক্ত রয়েছে যা সিস্টেম লগগুলিতে সম্ভাব্য সংবেদনশীল তথ্যের উপস্থিতি পরীক্ষা করে।

সীমাবদ্ধ ডিরেক্টরি অ্যাক্সেস

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

সেরা অনুশীলন হিসাবে, সিস্টেম বা রুট ব্যবহারকারীদের দ্বারা নির্মিত ডিরেক্টরিগুলি বিশ্ব লিখনযোগ্য হওয়া উচিত নয়। সিটিএস পরীক্ষাগুলি পরিচিত ডিরেক্টরিগুলি পরীক্ষা করে এই সেরা অনুশীলনটি কার্যকর করতে সহায়তা করে।

কনফিগারেশন ফাইলগুলি সুরক্ষিত করুন

অনেক ড্রাইভার এবং পরিষেবাগুলি /system/etc এবং /data যেমন ডিরেক্টরিতে সঞ্চিত কনফিগারেশন এবং ডেটা ফাইলগুলির উপর নির্ভর করে। যদি এই ফাইলগুলি কোনও সুবিধাযুক্ত প্রক্রিয়া দ্বারা প্রক্রিয়াজাত করা হয় এবং বিশ্ব রচনাযোগ্য হয় তবে কোনও অ্যাপের পক্ষে বিশ্ব-লিখিত ফাইলের দূষিত বিষয়বস্তু তৈরি করে প্রক্রিয়াটিতে দুর্বলতা কাজে লাগানো সম্ভব। সর্বোত্তম অনুশীলন:

  • সুবিধাযুক্ত প্রক্রিয়া দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি বিশ্ব পঠনযোগ্য হওয়া উচিত নয়।
  • সুবিধাযুক্ত প্রক্রিয়াগুলি দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি অবশ্যই বিশ্ব লিখনযোগ্য নয়।

নেটিভ কোড লাইব্রেরি সংরক্ষণ করুন

সুবিধাযুক্ত ডিভাইস প্রস্তুতকারক প্রক্রিয়া দ্বারা ব্যবহৃত যে কোনও কোড অবশ্যই /vendor বা /system থাকতে হবে; এই ফাইল সিস্টেমগুলি কেবল বুটে পড়ার মাউন্ট করা হয়। সেরা অনুশীলন হিসাবে, সিস্টেম বা ডিভাইসে ইনস্টল করা অন্যান্য উচ্চ-সুবিধাবঞ্চিত অ্যাপ্লিকেশন দ্বারা ব্যবহৃত লাইব্রেরিগুলিও এই ফাইল সিস্টেমগুলিতে হওয়া উচিত। এটি এমন একটি সুরক্ষা দুর্বলতা রোধ করতে পারে যা কোনও আক্রমণকারীকে কোনও সুবিধাযুক্ত প্রক্রিয়া কার্যকর করে এমন কোডটি নিয়ন্ত্রণ করতে পারে।

ডিভাইস ড্রাইভার অ্যাক্সেস সীমাবদ্ধ করুন

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

এডিবি অক্ষম করুন

অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) একটি মূল্যবান বিকাশ এবং ডিবাগিং সরঞ্জাম, তবে এটি নিয়ন্ত্রিত, সুরক্ষিত পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে এবং সাধারণ ব্যবহারের জন্য সক্ষম করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • এডিবি অবশ্যই ডিফল্টরূপে অক্ষম করা উচিত।
  • সংযোগগুলি গ্রহণের আগে এডিবিকে অবশ্যই ব্যবহারকারীকে এটি চালু করতে হবে।

বুটলোডার আনলক করুন

অনেক অ্যান্ড্রয়েড ডিভাইসগুলি আনলকিংকে সমর্থন করে, ডিভাইস মালিককে সিস্টেম পার্টিশন পরিবর্তন করতে এবং/অথবা একটি কাস্টম অপারেটিং সিস্টেম ইনস্টল করতে সক্ষম করে। সাধারণ ব্যবহারের কেসগুলির মধ্যে রয়েছে তৃতীয় পক্ষের রম ইনস্টল করা এবং ডিভাইসে সিস্টেম-স্তরের বিকাশ সম্পাদন করা। উদাহরণস্বরূপ, একটি গুগল নেক্সাস ডিভাইসের মালিক আনলকিং প্রক্রিয়া শুরু করতে fastboot oem unlock চালাতে পারেন, যা ব্যবহারকারীকে নিম্নলিখিত বার্তাটি উপস্থাপন করে:

বুটলোডার আনলক করবেন?

আপনি যদি বুটলোডারটি আনলক করেন তবে আপনি এই ডিভাইসে কাস্টম অপারেটিং সিস্টেম সফ্টওয়্যার ইনস্টল করতে সক্ষম হবেন।

একটি কাস্টম ওএস মূল ওএসের মতো একই পরীক্ষার সাপেক্ষে নয় এবং আপনার ডিভাইস এবং ইনস্টল করা অ্যাপ্লিকেশনগুলিকে সঠিকভাবে কাজ করা বন্ধ করতে পারে।

আপনার ব্যক্তিগত ডেটাতে অননুমোদিত অ্যাক্সেস রোধ করতে, বুটলোডার আনলক করা আপনার ডিভাইস থেকে সমস্ত ব্যক্তিগত ডেটা মুছে ফেলবে (একটি "কারখানার ডেটা রিসেট")।

হ্যাঁ বা না নির্বাচন করতে ভলিউম আপ/ডাউন বোতাম টিপুন। তারপর চালিয়ে যেতে পাওয়ার বোতাম টিপুন।

হ্যাঁ : আনলক বুটলোডার (মে অকার্যকর ওয়ারেন্টি)

না : বুটলোডার আনলক করবেন না এবং ডিভাইস পুনরায় চালু করবেন না।


সর্বোত্তম অনুশীলন হিসাবে, আনলক করা যায় এমন Android ডিভাইসগুলিকে অবশ্যই আনলক হওয়ার আগে সমস্ত ব্যবহারকারীর ডেটা সুরক্ষিতভাবে মুছে ফেলতে হবে। আনলক করার সময় সমস্ত ডেটা সঠিকভাবে মুছে ফেলতে ব্যর্থ হলে একজন শারীরিকভাবে কাছাকাছি আক্রমণকারীকে গোপনীয় Android ব্যবহারকারী ডেটাতে অননুমোদিত অ্যাক্সেস পেতে অনুমতি দিতে পারে। ব্যবহারকারীর ডেটা প্রকাশ রোধ করতে, আনলকিংকে সমর্থন করে এমন একটি ডিভাইস অবশ্যই এটি সঠিকভাবে প্রয়োগ করতে হবে (আমরা এমন অসংখ্য উদাহরণ দেখেছি যেখানে ডিভাইস নির্মাতারা যথাযথভাবে আনলকিং প্রয়োগ করে)। একটি সঠিকভাবে প্রয়োগ করা আনলকিং প্রক্রিয়াটির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • যখন আনলকিং কমান্ডটি ব্যবহারকারীর দ্বারা নিশ্চিত করা হয়, তখন ডিভাইসটি অবশ্যই তাত্ক্ষণিক ডেটা মুছতে শুরু করতে হবে। unlocked পতাকাটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ না হওয়া পর্যন্ত সেট করা উচিত নয়।
  • যদি একটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ করা না যায়, তাহলে ডিভাইসটিকে একটি লক অবস্থায় থাকতে হবে।
  • অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত হলে, ioctl(BLKSECDISCARD) বা সমতুল্য ব্যবহার করা উচিত। ইএমএমসি ডিভাইসগুলির জন্য, এর অর্থ একটি সুরক্ষিত মুছুন বা সুরক্ষিত ট্রিম কমান্ড ব্যবহার করা। eMMC 4.5 এবং তার পরের জন্য, এর অর্থ হল একটি সাধারণ মুছে ফেলা বা ছাঁটাই ব্যবহার করার পরে একটি স্যানিটাইজ অপারেশন।
  • BLKSECDISCARD অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত না হলে, ioctl(BLKDISCARD) পরিবর্তে ব্যবহার করা আবশ্যক। eMMC ডিভাইসে, এটি একটি সাধারণ ট্রিম অপারেশন।
  • BLKDISCARD সমর্থিত না হলে, সমস্ত শূন্য সহ ব্লক ডিভাইসগুলি ওভাররাইট করা গ্রহণযোগ্য।
  • একটি পার্টিশন ফ্ল্যাশ করার আগে ব্যবহারকারীর ডেটা মুছে ফেলা উচিত এমন একটি শেষ ব্যবহারকারীর অবশ্যই বিকল্প থাকতে হবে। উদাহরণস্বরূপ, নেক্সাস ডিভাইসগুলিতে, এটি fastboot oem lock কমান্ডের মাধ্যমে করা হয়।
  • কোনও ডিভাইস ইফিউস বা অনুরূপ প্রক্রিয়াটির মাধ্যমে রেকর্ড করতে পারে, কোনও ডিভাইসটি আনলক করা এবং/অথবা পুনরায় চালু করা হয়েছিল কিনা।

এই প্রয়োজনীয়তাগুলি নিশ্চিত করে যে একটি আনলক অপারেশন সম্পূর্ণ হওয়ার পরে সমস্ত ডেটা ধ্বংস হয়ে গেছে। এই সুরক্ষাগুলি বাস্তবায়নে ব্যর্থতা একটি মাঝারি স্তরের সুরক্ষা দুর্বলতা হিসাবে বিবেচিত হয়।

আনলক করা একটি ডিভাইস পরবর্তীতে fastboot oem lock কমান্ড ব্যবহার করে পুনরায় লক করা হতে পারে। বুটলোডারকে লক করা নতুন কাস্টম ওএসের সাথে ব্যবহারকারীর ডেটার একই সুরক্ষা সরবরাহ করে যা মূল ডিভাইস প্রস্তুতকারক ওএসের সাথে উপলভ্য ছিল (যেমন ডিভাইসটি আবার আনলক করা থাকলে ব্যবহারকারীর ডেটা মুছে ফেলা হবে)।

,

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

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

এই সেরা অনুশীলনগুলি গ্রহণের সুবিধার্থে, যেখানে সম্ভব অ্যান্ড্রয়েড সুরক্ষা দলটি অ্যান্ড্রয়েড সামঞ্জস্যতা পরীক্ষা স্যুট (সিটিএস) এবং অ্যান্ড্রয়েড লিন্টে পরীক্ষাগুলি অন্তর্ভুক্ত করে। আমরা ডিভাইস প্রয়োগকারীদের এমন পরীক্ষাগুলিতে অবদান রাখতে উত্সাহিত করি যা অন্যান্য অ্যান্ড্রয়েড ব্যবহারকারীদের সহায়তা করতে পারে ( root/cts/tests/tests/security/src/android/security/cts সুরক্ষা সম্পর্কিত পরীক্ষাগুলি দেখুন)।

উন্নয়ন প্রক্রিয়া

আপনার বিকাশ প্রক্রিয়া এবং পরিবেশে নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

উত্স কোড পর্যালোচনা

উত্স কোড পর্যালোচনা এই নথিতে চিহ্নিত ব্যক্তিদের সহ সুরক্ষা সমস্যাগুলির বিস্তৃত পরিসীমা সনাক্ত করতে পারে। অ্যান্ড্রয়েড ম্যানুয়াল এবং স্বয়ংক্রিয় উত্স কোড পর্যালোচনা উভয়কে দৃ strongly ়ভাবে উত্সাহ দেয়। সর্বোত্তম অনুশীলন:

  • অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ্লিকেশন কোডে অ্যান্ড্রয়েড লিন্ট চালান এবং কোনও চিহ্নিত সমস্যা সংশোধন করুন।
  • নেটিভ কোডটি এমন একটি স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করে বিশ্লেষণ করা উচিত যা মেমরি পরিচালনার সমস্যাগুলি যেমন বাফার ওভারফ্লো এবং অফ-ওয়ান ত্রুটিগুলির মতো সনাক্ত করতে পারে।
  • অ্যান্ড্রয়েড বিল্ড সিস্টেমের অনেকগুলি এলএলভিএম স্যানিটাইজার যেমন অ্যাড্রেসসানিটাইজার এবং অপরিবর্তিতবিহাভিয়ারসানিটাইজারের পক্ষে সমর্থন রয়েছে যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে।

স্বয়ংক্রিয় পরীক্ষা ব্যবহার করুন

স্বয়ংক্রিয় পরীক্ষাটি নীচে আলোচিত বেশ কয়েকটি বিষয় সহ সুরক্ষা বিষয়গুলির বিস্তৃত পরিসীমা সনাক্ত করতে পারে। সর্বোত্তম অনুশীলন:

  • সিটিএস নিয়মিত সুরক্ষা পরীক্ষার সাথে আপডেট করা হয়; সামঞ্জস্যতা যাচাই করতে সিটিএসের সাম্প্রতিক সংস্করণটি চালান।
  • সমস্যাগুলি সনাক্ত করতে এবং সংশোধন করার সময় হ্রাস করতে বিকাশ প্রক্রিয়া জুড়ে নিয়মিত সিটিএস চালান। অ্যান্ড্রয়েড আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়াটিতে অবিচ্ছিন্ন সংহতকরণের অংশ হিসাবে সিটিএস ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
  • ডিভাইস নির্মাতাদের ইন্টারফেসগুলির সুরক্ষা পরীক্ষা স্বয়ংক্রিয় করতে হবে, যার মধ্যে ত্রুটিযুক্ত ইনপুটগুলি (ফুজ টেস্টিং) সহ পরীক্ষা করা উচিত।

সিস্টেম ইমেজ সাইন

ডিভাইসের অখণ্ডতা নির্ধারণের জন্য সিস্টেম চিত্রের স্বাক্ষর গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

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

সাইন অ্যাপস (এপিকেএস)

অ্যাপ্লিকেশন স্বাক্ষরগুলি ডিভাইস সুরক্ষায় গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি চেকের পাশাপাশি সফ্টওয়্যার আপডেটের জন্য ব্যবহৃত হয়। অ্যাপ্লিকেশনগুলিতে স্বাক্ষর করার জন্য কোনও কী নির্বাচন করার সময়, কোনও অ্যাপ্লিকেশন কেবলমাত্র একক ডিভাইসে বা একাধিক ডিভাইস জুড়ে সাধারণ পাওয়া যাবে কিনা তা বিবেচনা করা গুরুত্বপূর্ণ। সর্বোত্তম অনুশীলন:

  • অ্যাপ্লিকেশনগুলি প্রকাশ্যে পরিচিত এমন কোনও কী দিয়ে স্বাক্ষর করতে হবে না।
  • অ্যাপ্লিকেশনগুলিতে স্বাক্ষর করতে ব্যবহৃত কীগুলি সংবেদনশীল কীগুলি পরিচালনা করার জন্য শিল্প স্ট্যান্ডার্ড অনুশীলনের সাথে সামঞ্জস্য রেখে এমন একটি পদ্ধতিতে পরিচালনা করা উচিত, যার মধ্যে একটি এইচএসএম যা সীমিত, নিরীক্ষণযোগ্য অ্যাক্সেস সরবরাহ করে।
  • অ্যাপ্লিকেশনগুলি প্ল্যাটফর্ম কী দিয়ে স্বাক্ষর করা উচিত নয়।
  • একই প্যাকেজের নাম সহ অ্যাপ্লিকেশনগুলি বিভিন্ন কী দিয়ে স্বাক্ষর করা উচিত নয়। এটি প্রায়শই ঘটে যখন বিভিন্ন ডিভাইসের জন্য একটি অ্যাপ্লিকেশন তৈরি করা হয়, বিশেষত প্ল্যাটফর্ম কী ব্যবহার করার সময়। যদি অ্যাপটি ডিভাইস-স্বতন্ত্র হয় তবে ডিভাইসগুলিতে একই কী ব্যবহার করুন। যদি অ্যাপটি ডিভাইস-নির্দিষ্ট হয় তবে ডিভাইস এবং কী প্রতি অনন্য প্যাকেজ নাম তৈরি করুন।

অ্যাপ্লিকেশন প্রকাশ করুন

গুগল প্লে ডিভাইস নির্মাতাদের একটি সম্পূর্ণ সিস্টেম আপডেট না করে অ্যাপ্লিকেশন আপডেট করার ক্ষমতা সরবরাহ করে। এটি সুরক্ষা সমস্যা এবং নতুন বৈশিষ্ট্য সরবরাহের প্রতিক্রিয়া ত্বরান্বিত করতে পারে, পাশাপাশি আপনার অ্যাপ্লিকেশনটির একটি অনন্য প্যাকেজের নাম রয়েছে তা নিশ্চিত করার একটি উপায় সরবরাহ করতে পারে। সর্বোত্তম অনুশীলন:

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

ঘটনার প্রতিক্রিয়া

বাহ্যিক দলগুলির অবশ্যই ডিভাইস-নির্দিষ্ট সুরক্ষা সমস্যাগুলি সম্পর্কে ডিভাইস নির্মাতাদের সাথে যোগাযোগ করার ক্ষমতা থাকতে হবে। আমরা সুরক্ষা ঘটনাগুলি পরিচালনার জন্য সর্বজনীনভাবে অ্যাক্সেসযোগ্য ইমেল ঠিকানা তৈরি করার পরামর্শ দিই। সর্বোত্তম অনুশীলন:

  • একটি সুরক্ষা@your-company.com বা অনুরূপ ঠিকানা তৈরি করুন এবং এটি প্রচার করুন।
  • আপনি যদি একাধিক ডিভাইস নির্মাতাদের অ্যান্ড্রয়েড ওএস বা অ্যান্ড্রয়েড ডিভাইসগুলিকে প্রভাবিত করে এমন কোনও সুরক্ষা সমস্যা সম্পর্কে সচেতন হন তবে আপনার সুরক্ষা বাগ রিপোর্ট ফাইল করে অ্যান্ড্রয়েড সুরক্ষা দলের সাথে যোগাযোগ করা উচিত।

পণ্য বাস্তবায়ন

কোনও পণ্য বাস্তবায়নের সময় নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করুন।

মূল প্রক্রিয়াগুলি বিচ্ছিন্ন করুন

রুট প্রক্রিয়াগুলি হ'ল সুবিধা বাড়ানোর আক্রমণগুলির সর্বাধিক ঘন ঘন লক্ষ্য, সুতরাং মূল প্রক্রিয়াগুলির সংখ্যা হ্রাস করা সুবিধাগুলি বৃদ্ধির ঝুঁকি হ্রাস করে। সিটিএসে একটি তথ্য পরীক্ষা অন্তর্ভুক্ত রয়েছে যা মূল প্রক্রিয়াগুলি তালিকাভুক্ত করে। সর্বোত্তম অনুশীলন:

  • ডিভাইসগুলি রুট হিসাবে সর্বনিম্ন প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, মূল প্রক্রিয়াটির পরিবর্তে নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। আইসিএস গ্যালাক্সি নেক্সাসের কেবল ছয়টি মূল প্রক্রিয়া রয়েছে: ভলড, ইনটেড, জাইগোট, টিএফ_ডেমোন, ইউইভেন্টড এবং ইনিশ। যদি কোনও প্রক্রিয়া অবশ্যই কোনও ডিভাইসে রুট হিসাবে চলতে থাকে তবে এওএসপি বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি প্রকাশ্যে পর্যালোচনা করা যায়।
  • যেখানে সম্ভব, রুট কোডটি অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং আইপিসির মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে মূল কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক হ্যান্ডেল করার জন্য কম বা কোনও সুযোগ -সুবিধা সহ কোনও অ্যাপ্লিকেশনটিতে স্বাক্ষর অনুমতি সহ পরিষেবাটি প্রকাশ করুন।
  • রুট প্রক্রিয়াগুলি অবশ্যই কোনও নেটওয়ার্ক সকেটে শুনতে হবে না।
  • রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপ্লিকেশনগুলির জন্য একটি সাধারণ-উদ্দেশ্যমূলক রানটাইম সরবরাহ করবে না (উদাহরণস্বরূপ, একটি জাভা ভিএম)।

সিস্টেম অ্যাপ্লিকেশনগুলি বিচ্ছিন্ন করুন

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

  • ডিভাইসগুলি সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালানো উচিত। যেখানে সম্ভব, সিস্টেম ইউআইডি পুনরায় ব্যবহার করার পরিবর্তে নিজস্ব ইউআইডি দিয়ে একটি অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন।
  • যেখানে সম্ভব, সিস্টেম কোডটি অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং আইপিসিকে কেবল অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে প্রকাশ করা উচিত।
  • সিস্টেম প্রক্রিয়াগুলি অবশ্যই কোনও নেটওয়ার্ক সকেটে শুনতে হবে না।

প্রক্রিয়া বিচ্ছিন্ন

অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স অ্যাপ্লিকেশনগুলিকে মূল প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সরবরাহ করে। যদি ডিবাগিং নির্দিষ্টভাবে অ্যাপ্লিকেশন এবং ব্যবহারকারী দ্বারা সক্ষম না করা হয়, কোনও অ্যাপ্লিকেশনকে সেই প্রত্যাশা লঙ্ঘন করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • রুট প্রক্রিয়াগুলি অবশ্যই পৃথক অ্যাপ্লিকেশন ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করতে পারে না, যদি না একটি ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করে।
  • ডকুমেন্টেড অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার না করে রুট প্রক্রিয়াগুলি অবশ্যই অ্যাপ্লিকেশনগুলির মেমরি অ্যাক্সেস করতে পারে না।
  • ডিভাইসগুলিতে অবশ্যই এমন কোনও অ্যাপ্লিকেশন অন্তর্ভুক্ত করা উচিত নয় যা অন্যান্য অ্যাপ্লিকেশন বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।

সুরক্ষিত স্যুইড ফাইলগুলি

নতুন সেটুয়েড প্রোগ্রামগুলি অবিশ্বস্ত প্রোগ্রামগুলির দ্বারা অ্যাক্সেসযোগ্য হওয়া উচিত নয়। সেটুয়েড প্রোগ্রামগুলি প্রায়শই দুর্বলতার অবস্থান হয়ে থাকে যা রুট অ্যাক্সেস অর্জনের জন্য ব্যবহার করা যেতে পারে, তাই অবিশ্বস্ত অ্যাপ্লিকেশনগুলিতে সেটুয়েড প্রোগ্রামের প্রাপ্যতা হ্রাস করার জন্য প্রচেষ্টা করুন। সর্বোত্তম অনুশীলন:

  • এসইআইডি প্রক্রিয়াগুলি অবশ্যই এমন একটি শেল বা ব্যাকডোর সরবরাহ করবে না যা অ্যান্ড্রয়েড সুরক্ষা মডেলটি রোধ করতে ব্যবহার করা যেতে পারে।
  • সুইড প্রোগ্রামগুলি অবশ্যই কোনও ব্যবহারকারীর দ্বারা লিখিত হওয়া উচিত নয়।
  • সুইড প্রোগ্রামগুলি বিশ্ব পাঠযোগ্য বা নির্বাহযোগ্য হওয়া উচিত নয়। একটি গোষ্ঠী তৈরি করুন, সেই গোষ্ঠীর সদস্যদের কাছে এসইউডি বাইনারি অ্যাক্সেস সীমাবদ্ধ করুন এবং এমন কোনও অ্যাপ্লিকেশন রাখুন যা এসইউআইডি প্রোগ্রামটি সেই গ্রুপে কার্যকর করতে সক্ষম হবে।
  • এসইউআইডি প্রোগ্রামগুলি ডিভাইসগুলির ব্যবহারকারীর মূলের একটি সাধারণ উত্স। এই ঝুঁকি হ্রাস করার জন্য, এসইউআইডি প্রোগ্রামগুলি শেল ব্যবহারকারীর দ্বারা কার্যকর করা উচিত নয়।

সিটিএস যাচাইকারী একটি তথ্য পরীক্ষার তালিকা স্যুইড ফাইল অন্তর্ভুক্ত করে; কিছু সেটুয়েড ফাইল সিটিএস পরীক্ষায় অনুমোদিত নয়।

সুরক্ষিত শ্রবণ সকেট

সিটিএস পরীক্ষাগুলি ব্যর্থ হয় যখন কোনও ডিভাইস কোনও পোর্টে, কোনও ইন্টারফেসে শুনছে। ব্যর্থতার ক্ষেত্রে, অ্যান্ড্রয়েড নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করা হয়েছে তা যাচাই করে:

  • ডিভাইসে কোনও শ্রবণ পোর্ট থাকা উচিত নয়।
  • শ্রবণ পোর্টগুলি অবশ্যই কোনও ওটিএ ছাড়াই অক্ষম হতে সক্ষম হতে হবে। এটি কোনও সার্ভার বা ব্যবহারকারী-ডিভাইস কনফিগারেশন পরিবর্তন হতে পারে।
  • রুট প্রক্রিয়াগুলি অবশ্যই কোনও বন্দরে শুনতে হবে না।
  • সিস্টেমের মালিকানাধীন প্রক্রিয়াগুলি ইউআইডি অবশ্যই কোনও বন্দরে শুনতে হবে না।
  • স্থানীয় আইপিসির জন্য সকেট ব্যবহার করে, অ্যাপ্লিকেশনগুলিকে অবশ্যই একটি গ্রুপের মধ্যে সীমাবদ্ধ অ্যাক্সেস সহ একটি ইউনিক্স ডোমেন সকেট ব্যবহার করতে হবে। আইপিসির জন্য একটি ফাইল বর্ণনাকারী তৈরি করুন এবং এটি একটি নির্দিষ্ট ইউনিক্স গ্রুপের জন্য +আরডাব্লু তৈরি করুন। যে কোনও ক্লায়েন্ট অ্যাপ্লিকেশন অবশ্যই সেই ইউনিক্স গ্রুপের মধ্যে থাকতে হবে।
  • একাধিক প্রসেসর সহ কিছু ডিভাইস (যেমন অ্যাপ প্রসেসর থেকে পৃথক একটি রেডিও/মডেম) প্রসেসরের মধ্যে যোগাযোগের জন্য নেটওয়ার্ক সকেট ব্যবহার করে। এই জাতীয় উদাহরণগুলিতে, আন্তঃ প্রক্রিয়াজাতকের যোগাযোগের জন্য ব্যবহৃত নেটওয়ার্ক সকেটটি অবশ্যই ডিভাইসে অননুমোদিত অ্যাপ্লিকেশনগুলির দ্বারা অ্যাক্সেস রোধ করতে একটি বিচ্ছিন্ন নেটওয়ার্ক ইন্টারফেস ব্যবহার করতে হবে (এটি ডিভাইসের অন্যান্য অ্যাপ্লিকেশনগুলির দ্বারা অ্যাক্সেস রোধ করতে iptables ব্যবহার করে)।
  • শোনার বন্দরগুলি পরিচালনা করে এমন ডেমোনগুলি অবশ্যই ত্রুটিযুক্ত ডেটার বিরুদ্ধে দৃ ust ় হতে হবে। গুগল একটি অননুমোদিত ক্লায়েন্ট ব্যবহার করে এবং যেখানে সম্ভব, অনুমোদিত ক্লায়েন্ট ব্যবহার করে বন্দরটির বিরুদ্ধে ফাজ-পরীক্ষার ব্যবস্থা করতে পারে। যে কোনও ক্র্যাশগুলি উপযুক্ত তীব্রতার সাথে বাগ হিসাবে দায়ের করা হয়।

লগ ডেটা

লগিং ডেটা সেই ডেটা এক্সপোজারের ঝুঁকি বাড়ায় এবং সিস্টেমের কার্যকারিতা হ্রাস করে। অ্যান্ড্রয়েড ডিভাইসে ডিফল্টরূপে ইনস্টল করা অ্যাপ্লিকেশন দ্বারা সংবেদনশীল ব্যবহারকারীর ডেটা লগিংয়ের ফলাফল হিসাবে একাধিক জনসাধারণের সুরক্ষা ঘটনা ঘটেছে। সর্বোত্তম অনুশীলন:

  • অ্যাপস বা সিস্টেম পরিষেবাদির সংবেদনশীল তথ্য অন্তর্ভুক্ত থাকতে পারে এমন তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি থেকে সরবরাহ করা ডেটা লগ করা উচিত নয়।
  • অ্যাপ্লিকেশনগুলিকে সাধারণ অপারেশনের অংশ হিসাবে কোনও ব্যক্তিগতভাবে সনাক্তযোগ্য তথ্য (পিআইআই) লগ করা উচিত নয়।

সিটিএসের মধ্যে এমন পরীক্ষাগুলি অন্তর্ভুক্ত রয়েছে যা সিস্টেম লগগুলিতে সম্ভাব্য সংবেদনশীল তথ্যের উপস্থিতি পরীক্ষা করে।

সীমাবদ্ধ ডিরেক্টরি অ্যাক্সেস

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

সেরা অনুশীলন হিসাবে, সিস্টেম বা রুট ব্যবহারকারীদের দ্বারা নির্মিত ডিরেক্টরিগুলি বিশ্ব লিখনযোগ্য হওয়া উচিত নয়। সিটিএস পরীক্ষাগুলি পরিচিত ডিরেক্টরিগুলি পরীক্ষা করে এই সেরা অনুশীলনটি কার্যকর করতে সহায়তা করে।

কনফিগারেশন ফাইলগুলি সুরক্ষিত করুন

অনেক ড্রাইভার এবং পরিষেবাগুলি /system/etc এবং /data যেমন ডিরেক্টরিতে সঞ্চিত কনফিগারেশন এবং ডেটা ফাইলগুলির উপর নির্ভর করে। যদি এই ফাইলগুলি কোনও সুবিধাযুক্ত প্রক্রিয়া দ্বারা প্রক্রিয়াজাত করা হয় এবং বিশ্ব রচনাযোগ্য হয় তবে কোনও অ্যাপের পক্ষে বিশ্ব-লিখিত ফাইলের দূষিত বিষয়বস্তু তৈরি করে প্রক্রিয়াটিতে দুর্বলতা কাজে লাগানো সম্ভব। সর্বোত্তম অনুশীলন:

  • সুবিধাযুক্ত প্রক্রিয়া দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি বিশ্ব পঠনযোগ্য হওয়া উচিত নয়।
  • সুবিধাযুক্ত প্রক্রিয়াগুলি দ্বারা ব্যবহৃত কনফিগারেশন ফাইলগুলি অবশ্যই বিশ্ব লিখনযোগ্য নয়।

নেটিভ কোড লাইব্রেরি সংরক্ষণ করুন

সুবিধাযুক্ত ডিভাইস প্রস্তুতকারক প্রক্রিয়া দ্বারা ব্যবহৃত যে কোনও কোড অবশ্যই /vendor বা /system থাকতে হবে; এই ফাইল সিস্টেমগুলি কেবল বুটে পড়ার মাউন্ট করা হয়। সেরা অনুশীলন হিসাবে, সিস্টেম বা ডিভাইসে ইনস্টল করা অন্যান্য উচ্চ-সুবিধাবঞ্চিত অ্যাপ্লিকেশন দ্বারা ব্যবহৃত লাইব্রেরিগুলিও এই ফাইল সিস্টেমগুলিতে হওয়া উচিত। এটি এমন একটি সুরক্ষা দুর্বলতা রোধ করতে পারে যা কোনও আক্রমণকারীকে কোনও সুবিধাযুক্ত প্রক্রিয়া কার্যকর করে এমন কোডটি নিয়ন্ত্রণ করতে পারে।

ডিভাইস ড্রাইভার অ্যাক্সেস সীমাবদ্ধ করুন

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

এডিবি অক্ষম করুন

অ্যান্ড্রয়েড ডিবাগ ব্রিজ (এডিবি) একটি মূল্যবান বিকাশ এবং ডিবাগিং সরঞ্জাম, তবে এটি নিয়ন্ত্রিত, সুরক্ষিত পরিবেশে ব্যবহারের জন্য ডিজাইন করা হয়েছে এবং সাধারণ ব্যবহারের জন্য সক্ষম করা উচিত নয়। সর্বোত্তম অনুশীলন:

  • এডিবি অবশ্যই ডিফল্টরূপে অক্ষম করা উচিত।
  • সংযোগগুলি গ্রহণের আগে এডিবিকে অবশ্যই ব্যবহারকারীকে এটি চালু করতে হবে।

বুটলোডার আনলক করুন

অনেক অ্যান্ড্রয়েড ডিভাইসগুলি আনলকিংকে সমর্থন করে, ডিভাইস মালিককে সিস্টেম পার্টিশন পরিবর্তন করতে এবং/অথবা একটি কাস্টম অপারেটিং সিস্টেম ইনস্টল করতে সক্ষম করে। সাধারণ ব্যবহারের কেসগুলির মধ্যে রয়েছে তৃতীয় পক্ষের রম ইনস্টল করা এবং ডিভাইসে সিস্টেম-স্তরের বিকাশ সম্পাদন করা। উদাহরণস্বরূপ, একটি গুগল নেক্সাস ডিভাইসের মালিক আনলকিং প্রক্রিয়া শুরু করতে fastboot oem unlock চালাতে পারেন, যা ব্যবহারকারীকে নিম্নলিখিত বার্তাটি উপস্থাপন করে:

বুটলোডার আনলক করবেন?

আপনি যদি বুটলোডারটি আনলক করেন তবে আপনি এই ডিভাইসে কাস্টম অপারেটিং সিস্টেম সফ্টওয়্যার ইনস্টল করতে সক্ষম হবেন।

একটি কাস্টম ওএস মূল ওএসের মতো একই পরীক্ষার সাপেক্ষে নয় এবং আপনার ডিভাইস এবং ইনস্টল করা অ্যাপ্লিকেশনগুলিকে সঠিকভাবে কাজ করা বন্ধ করতে পারে।

আপনার ব্যক্তিগত ডেটাতে অননুমোদিত অ্যাক্সেস রোধ করতে, বুটলোডার আনলক করা আপনার ডিভাইস থেকে সমস্ত ব্যক্তিগত ডেটা মুছে ফেলবে (একটি "কারখানার ডেটা রিসেট")।

হ্যাঁ বা না নির্বাচন করতে ভলিউম আপ/ডাউন বোতাম টিপুন। তারপর চালিয়ে যেতে পাওয়ার বোতাম টিপুন।

হ্যাঁ : আনলক বুটলোডার (মে অকার্যকর ওয়ারেন্টি)

না : বুটলোডার আনলক করবেন না এবং ডিভাইস পুনরায় চালু করবেন না।


সর্বোত্তম অনুশীলন হিসাবে, আনলক করা যায় এমন Android ডিভাইসগুলিকে অবশ্যই আনলক হওয়ার আগে সমস্ত ব্যবহারকারীর ডেটা সুরক্ষিতভাবে মুছে ফেলতে হবে। আনলক করার সময় সমস্ত ডেটা সঠিকভাবে মুছে ফেলতে ব্যর্থ হলে একজন শারীরিকভাবে কাছাকাছি আক্রমণকারীকে গোপনীয় Android ব্যবহারকারী ডেটাতে অননুমোদিত অ্যাক্সেস পেতে অনুমতি দিতে পারে। ব্যবহারকারীর ডেটা প্রকাশ রোধ করতে, আনলকিংকে সমর্থন করে এমন একটি ডিভাইস অবশ্যই এটি সঠিকভাবে প্রয়োগ করতে হবে (আমরা এমন অসংখ্য উদাহরণ দেখেছি যেখানে ডিভাইস নির্মাতারা যথাযথভাবে আনলকিং প্রয়োগ করে)। একটি সঠিকভাবে প্রয়োগ করা আনলকিং প্রক্রিয়াটির নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • যখন আনলকিং কমান্ডটি ব্যবহারকারীর দ্বারা নিশ্চিত করা হয়, তখন ডিভাইসটি অবশ্যই তাত্ক্ষণিক ডেটা মুছতে শুরু করতে হবে। unlocked পতাকাটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ না হওয়া পর্যন্ত সেট করা উচিত নয়।
  • যদি একটি সুরক্ষিত মুছে ফেলা সম্পূর্ণ করা না যায়, তাহলে ডিভাইসটিকে একটি লক অবস্থায় থাকতে হবে।
  • অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত হলে, ioctl(BLKSECDISCARD) বা সমতুল্য ব্যবহার করা উচিত। ইএমএমসি ডিভাইসগুলির জন্য, এর অর্থ একটি সুরক্ষিত মুছুন বা সুরক্ষিত ট্রিম কমান্ড ব্যবহার করা। eMMC 4.5 এবং তার পরের জন্য, এর অর্থ হল একটি সাধারণ মুছে ফেলা বা ছাঁটাই ব্যবহার করার পরে একটি স্যানিটাইজ অপারেশন।
  • BLKSECDISCARD অন্তর্নিহিত ব্লক ডিভাইস দ্বারা সমর্থিত না হলে, ioctl(BLKDISCARD) পরিবর্তে ব্যবহার করা আবশ্যক। eMMC ডিভাইসে, এটি একটি সাধারণ ট্রিম অপারেশন।
  • BLKDISCARD সমর্থিত না হলে, সমস্ত শূন্য সহ ব্লক ডিভাইসগুলি ওভাররাইট করা গ্রহণযোগ্য।
  • একটি পার্টিশন ফ্ল্যাশ করার আগে ব্যবহারকারীর ডেটা মুছে ফেলা উচিত এমন একটি শেষ ব্যবহারকারীর অবশ্যই বিকল্প থাকতে হবে। উদাহরণস্বরূপ, নেক্সাস ডিভাইসগুলিতে, এটি fastboot oem lock কমান্ডের মাধ্যমে করা হয়।
  • কোনও ডিভাইস ইফিউস বা অনুরূপ প্রক্রিয়াটির মাধ্যমে রেকর্ড করতে পারে, কোনও ডিভাইসটি আনলক করা এবং/অথবা পুনরায় চালু করা হয়েছিল কিনা।

এই প্রয়োজনীয়তাগুলি নিশ্চিত করে যে একটি আনলক অপারেশন সম্পূর্ণ হওয়ার পরে সমস্ত ডেটা ধ্বংস হয়ে গেছে। এই সুরক্ষাগুলি বাস্তবায়নে ব্যর্থতা একটি মাঝারি স্তরের সুরক্ষা দুর্বলতা হিসাবে বিবেচিত হয়।

আনলক করা একটি ডিভাইস পরবর্তীতে fastboot oem lock কমান্ড ব্যবহার করে পুনরায় লক করা হতে পারে। বুটলোডারকে লক করা নতুন কাস্টম ওএসের সাথে ব্যবহারকারীর ডেটার একই সুরক্ষা সরবরাহ করে যা মূল ডিভাইস প্রস্তুতকারক ওএসের সাথে উপলভ্য ছিল (যেমন ডিভাইসটি আবার আনলক করা থাকলে ব্যবহারকারীর ডেটা মুছে ফেলা হবে)।