অ্যান্ড্রয়েডে নিরাপত্তা-বর্ধিত লিনাক্স

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

SELinux ডিফল্ট অস্বীকারের নীতিতে কাজ করে: স্পষ্টভাবে অনুমোদিত নয় এমন কিছু অস্বীকার করা হয়। SELinux দুটি গ্লোবাল মোডে কাজ করতে পারে:

  • অনুমতিমূলক মোড, যেখানে অনুমতি অস্বীকার লগ করা হয় কিন্তু প্রয়োগ করা হয় না।
  • এনফোর্সিং মোড, যেখানে অনুমতি অস্বীকার উভয়ই লগ করা এবং প্রয়োগ করা হয়৷

Android-এ SELinux এনফোর্সিং মোডে রয়েছে এবং একটি সংশ্লিষ্ট নিরাপত্তা নীতি যা ডিফল্টরূপে AOSP জুড়ে কাজ করে। এনফোর্সিং মোডে, অননুমোদিত ক্রিয়াগুলি প্রতিরোধ করা হয় এবং সমস্ত চেষ্টা লঙ্ঘনগুলি কার্নেল দ্বারা dmesg এবং logcat এ লগ করা হয়। বিকাশ করার সময়, আপনার সফ্টওয়্যার এবং SELinux নীতিগুলি প্রয়োগ করার আগে সংশোধন করার জন্য এই ত্রুটিগুলি ব্যবহার করা উচিত। আরো বিস্তারিত জানার জন্য, SELinux বাস্তবায়ন দেখুন।

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

পটভূমি

অ্যান্ড্রয়েড সুরক্ষা মডেলটি আংশিকভাবে অ্যাপ্লিকেশন স্যান্ডবক্সের ধারণার উপর ভিত্তি করে। প্রতিটি অ্যাপ্লিকেশন তার নিজস্ব স্যান্ডবক্সে চলে। অ্যান্ড্রয়েড 4.3-এর আগে, এই স্যান্ডবক্সগুলি ইনস্টলেশনের সময় প্রতিটি অ্যাপ্লিকেশনের জন্য একটি অনন্য লিনাক্স ইউআইডি তৈরির মাধ্যমে সংজ্ঞায়িত করা হয়েছিল। Android 4.3 এবং পরবর্তীতে Android অ্যাপ্লিকেশন স্যান্ডবক্সের সীমানা আরও সংজ্ঞায়িত করতে SELinux ব্যবহার করে।

Android 5.0 এবং পরবর্তীতে, SELinux সম্পূর্ণরূপে প্রয়োগ করা হয়েছে, Android 4.3 এর অনুমতিমূলক প্রকাশ এবং Android 4.4 এর আংশিক প্রয়োগের উপর ভিত্তি করে তৈরি। এই পরিবর্তনের সাথে, অ্যান্ড্রয়েড গুরুত্বপূর্ণ ডোমেনগুলির একটি সীমিত সেট ( installd , netd , vold এবং zygote ) সবকিছুতে (60টিরও বেশি ডোমেন) এনফোর্সমেন্ট থেকে সরে গেছে। বিশেষভাবে:

  • অ্যান্ড্রয়েড 5.x এবং উচ্চতর সংস্করণে সবকিছুই এনফোর্সিং মোডে রয়েছে৷
  • init ছাড়া অন্য কোনো প্রক্রিয়া init ডোমেনে চালানো উচিত নয়।
  • যেকোনো জেনেরিক অস্বীকার (একটি block_device , socket_device , default_service জন্য) নির্দেশ করে যে ডিভাইসটির একটি বিশেষ ডোমেন প্রয়োজন।

অ্যান্ড্রয়েড 6.0 ব্যবহারকারীদের মধ্যে আরও ভাল বিচ্ছিন্নতা, IOCTL ফিল্টারিং, উন্মুক্ত পরিষেবাগুলির হুমকি হ্রাস, SELinux ডোমেনগুলিকে আরও কঠোর করা এবং অত্যন্ত সীমিত /proc অ্যাক্সেস অন্তর্ভুক্ত করার জন্য আমাদের নীতির অনুমতি কমিয়ে সিস্টেমটিকে শক্ত করেছে৷

অ্যাপ্লিকেশান স্যান্ডবক্সকে আরও লক ডাউন করতে এবং আক্রমণের পৃষ্ঠকে কমাতে Android 7.0 SELinux কনফিগারেশন আপডেট করেছে। এই রিলিজটি তাদের অনুমতির সুযোগ কমাতে একচেটিয়া মিডিয়াসার্ভার স্ট্যাককে ছোট প্রক্রিয়ায় বিভক্ত করেছে। আরও বিশদ বিবরণের জন্য, আরও লিনাক্স কার্নেল প্রতিরক্ষা সহ অ্যান্ড্রয়েড রক্ষা করা এবং মিডিয়া স্ট্যাককে শক্ত করা দেখুন।

Android 8.0 Treble এর সাথে কাজ করার জন্য SELinux আপডেট করেছে, যা Android সিস্টেম ফ্রেমওয়ার্ক থেকে নিম্ন-স্তরের বিক্রেতা কোডকে আলাদা করে। এই রিলিজটি SELinux নীতি আপডেট করেছে যাতে ডিভাইস নির্মাতারা এবং SOC বিক্রেতাদের তাদের নীতির অংশগুলি আপডেট করতে, তাদের ছবিগুলি ( vendor.img , boot.img , ইত্যাদি) তৈরি করার অনুমতি দেয়, তারপর সেই ছবিগুলিকে প্ল্যাটফর্ম থেকে স্বতন্ত্রভাবে আপডেট করে বা এর বিপরীতে।

ডিভাইসে চলমান উচ্চ/নতুন প্ল্যাটফর্ম (ফ্রেমওয়ার্ক) সংস্করণ থাকা সম্ভব, বিপরীত ক্ষেত্রে সমর্থিত নয়; বিক্রেতার ছবি ( vendor.img/odm.img ) প্ল্যাটফর্ম ( system.img ) এর চেয়ে নতুন সংস্করণ থাকতে পারে না। সুতরাং, একটি নতুন প্ল্যাটফর্ম সংস্করণ SELinux সামঞ্জস্যের সমস্যাগুলি উপস্থাপন করতে পারে কারণ প্ল্যাটফর্ম SELinux নীতি বিক্রেতার SELinux অংশগুলির তুলনায় একটি নতুন সংস্করণে রয়েছে৷ অ্যান্ড্রয়েড 8.0 মডেল অপ্রয়োজনীয় যুগপত OTA রোধ করতে সামঞ্জস্য বজায় রাখার একটি পদ্ধতি প্রদান করে।

অতিরিক্ত সম্পদ

দরকারী SELinux নীতিগুলি তৈরি করতে সাহায্যের জন্য, নিম্নলিখিত সংস্থানগুলি পড়ুন।