নিরাপত্তা বাস্তবায়ন

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

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

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

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

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

সোর্স কোড পর্যালোচনা করা হচ্ছে

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

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

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

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

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

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

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

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

সাইনিং অ্যাপ্লিকেশন (APKs)

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

  • অ্যাপ্লিকেশনগুলিকে সর্বজনীনভাবে পরিচিত এমন একটি কী দিয়ে স্বাক্ষর করা উচিত নয়৷
  • অ্যাপ্লিকেশানগুলিতে স্বাক্ষর করার জন্য ব্যবহৃত কীগুলি সীমিত, নিরীক্ষণযোগ্য অ্যাক্সেস প্রদান করে এমন একটি 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 কমান্ড ব্যবহার করে পুনরায় লক করা হতে পারে। বুটলোডার লক করা নতুন কাস্টম ওএসের সাথে ব্যবহারকারীর ডেটার একই সুরক্ষা প্রদান করে যেমনটি আসল ডিভাইস প্রস্তুতকারক ওএসের সাথে উপলব্ধ ছিল (যেমন ডিভাইসটি আবার আনলক করা হলে ব্যবহারকারীর ডেটা মুছে ফেলা হবে)।