systemd-তে একটি দুর্বলতা পাওয়া গেছে যা ইতিমধ্যে বর্ণনা করা হয়েছে (জন্য CVE-2019-6454), কি এটি কন্ট্রোল প্রারম্ভিককরণ প্রক্রিয়া (PID1) ব্লক করার সুযোগ দেয়। ডি-বাসের মাধ্যমে বিশেষাধিকারবিহীন কোনো ব্যবহারকারীর কাছে একটি বিশেষভাবে ডিজাইন করা বার্তা পাঠিয়ে।
The রেড হ্যাট ডেভেলপাররা এই দুর্বলতা ব্যবহার করে রুট প্রিভিলেজ সহ কোড এক্সিকিউশন পরিচালনা করার সম্ভাবনাও উড়িয়ে দিচ্ছেন না।কিন্তু এ ধরনের হামলার চূড়ান্ত সম্ভাবনা এখনো নির্ধারণ করা হয়নি।
সিস্টেমডি সম্পর্কে
যারা সিস্টেমডি সম্পর্কে অপরিচিত তাদের জন্য আমি আপনাকে বলতে পারি এটি একটি লিনাক্স বুট সিস্টেম এবং পরিষেবা ব্যবস্থাপক যার মধ্যে রয়েছে অন-ডিমান্ড ডেমন স্টার্টআপ, মাউন্ট পয়েন্ট রক্ষণাবেক্ষণ ও স্বয়ংক্রিয় মাউন্টিং, স্ন্যাপশট সাপোর্ট এবং লিনাক্স কন্ট্রোল গ্রুপ ব্যবহার করে প্রসেস ট্র্যাকিং-এর মতো ফিচার।
systemd এটি একটি লগিং ডেমন এবং অন্যান্য টুল ও ইউটিলিটি প্রদান করে, যা সাধারণ সিস্টেম অ্যাডমিনিস্ট্রেশনের কাজগুলোতে সাহায্য করে। লেনার্ট পোয়েটারিং এবং কে সিভার্স একটি আধুনিক ও গতিশীল সিস্টেম তৈরির লক্ষ্যে, ম্যাকওএস-এর লঞ্চডি এবং আপস্টার্ট দ্বারা অনুপ্রাণিত হয়ে সিস্টেমডি রচনা করেন।
বিশেষত, systemd শক্তিশালী প্যারালেলাইজেশন ক্ষমতা এবং নির্ভরতা-ভিত্তিক সার্ভিস নিয়ন্ত্রণ লজিক প্রদান করে, যা সার্ভিসগুলোকে সমান্তরালভাবে চালু হতে দেয় এবং এর ফলে বুট টাইম দ্রুততর হয়। এই দুটি বৈশিষ্ট্য Upstart-এও বিদ্যমান ছিল, কিন্তু systemd সেগুলোকে আরও উন্নত করেছে।
সিস্টেমডি হলো বেশিরভাগ প্রধান লিনাক্স ডিস্ট্রিবিউশনের ডিফল্ট ইনিট সিস্টেম।তবে, এটি SysV স্টার্টআপ স্ক্রিপ্টের পূর্ববর্তী সংস্করণগুলোর সাথে সামঞ্জস্যপূর্ণ।
SysVinit হলো systemd-এর পূর্ববর্তী একটি ইনিশিয়ালাইজেশন সিস্টেম যা সার্ভিসটি চালু করার জন্য একটি সরলীকৃত পদ্ধতি ব্যবহার করে। Systemd শুধু সিস্টেম ইনিশিয়ালাইজেশনই পরিচালনা করে না, বরং cron এবং syslog-এর মতো অন্যান্য সুপরিচিত ইউটিলিটিগুলোর বিকল্পও প্রদান করে।
systemd-তে নতুন দুর্বলতা সম্পর্কে
ডি-বাসের মাধ্যমে প্রেরিত বার্তার আকার পরিবর্তন করে, একজন আক্রমণকারী স্ট্যাকের জন্য বরাদ্দকৃত মেমরির সীমার বাইরে পয়েন্টারটি সরিয়ে নিতে পারে।"স্ট্যাক গার্ড-পেজ" সুরক্ষা বাদ দেওয়া, যা প্রান্তের একটি মেমরি পেজ প্রতিস্থাপনের উপর ভিত্তি করে তৈরি এবং যা একটি এক্সেপশন (পেজ ফল্ট) ঘটায়।
সিস্টেমডি ২৩৯ সহ উবুন্টু ১৮.১০ এবং সিস্টেমডি ২১৯ সহ সেন্টওএস ৭.৬-এ সফল আক্রমণটি প্রদর্শন করা হয়েছে।
বিকল্প সমাধান হিসেবে, GCC-তে "-fstack-clash-protection" অপশনটির সাথে কম্পাইলেশনটি ব্যবহার করা যেতে পারে, যা ফেডোরা ২৮ এবং ২৯-এ ডিফল্টভাবে ব্যবহৃত হয়।
উল্লেখ্য যে, ২০১৪ সালে MUSL সিস্টেম লাইব্রেরির লেখক উল্লেখ করেছিলেন যে systemd PID1 হ্যান্ডলারের অত্যধিক স্ফীতি ছিল অন্যতম প্রধান স্থাপত্যগত সমস্যা এবং তিনি লিঙ্কিং টু দ্য বাস (Linking to the Bus)-এর জন্য একটি PID1-স্তরের এপিআই কন্ট্রোলার বাস্তবায়নের সম্ভাব্যতা নিয়ে প্রশ্ন তুলেছিলেন, কারণ এটি আক্রমণের একটি গুরুতর মাধ্যম এবং পুরো সিস্টেমের নির্ভরযোগ্যতাকে নেতিবাচকভাবে প্রভাবিত করতে পারে।
একজন নিরাপত্তা গবেষকের মতে যিনি এতে একটি দুর্বলতা প্রকাশ পেয়েছে: স্ট্যাক পয়েন্টার পরিবর্তন শুধুমাত্র অব্যবহৃত মেমরি পেজগুলোর ক্ষেত্রেই সম্ভব। (অনির্ধারিত), যা PID1 প্রসেসের প্রেক্ষাপটে কোড এক্সিকিউশন সংগঠিত করার অনুমতি দেয় না, কিন্তু একজন আক্রমণকারীকে PID1-কে ব্লক করা শুরু করার সুযোগ দেয়, যার ফলস্বরূপ লিনাক্স কার্নেল "প্যানিক" অবস্থায় চলে যায় (PID 1 ড্রাইভার ব্যর্থ হলে পুরো সিস্টেমটি ব্লক হয়ে যায়)।
systemd-তে একটি সিগন্যাল হ্যান্ডলার ইনস্টল করা থাকে, যা প্রসেস ফেইলর PID1 (সেগমেন্টেশন ফল্ট) শনাক্ত করার চেষ্টা করে এবং পুনরুদ্ধারের জন্য শেল চালু করে।
কিন্তু যেহেতু আক্রমণের সময় নন-ডুপ্লিকেটেড (অনাবন্টিত) মেমরি পেজগুলোতে কল করা হয়, তাই কার্নেল এই সিগন্যাল হ্যান্ডলারটিকে কল করতে পারে না এবং সরাসরি PID 1 সহ প্রসেসটিকে টার্মিনেট করে দেয়, যার ফলে কাজ চালিয়ে যাওয়া অসম্ভব হয়ে পড়ে এবং এটি "প্যানিক" স্টেটে চলে যায়, যার জন্য সিস্টেম রিবুট করার প্রয়োজন হয়।
সমস্যাটির একটি সমাধান ইতিমধ্যেই বিদ্যমান।
ইতিমধ্যে বর্ণিত ও প্রতিবেদিত যেকোনো নিরাপত্তা সমস্যার মতোই, সমস্যাটির সমাধান না হওয়া পর্যন্ত এটি প্রকাশ করা সম্ভব নয়। SUSE/openSUSE, Fedora-এর পাশাপাশি Ubuntu এবং আংশিকভাবে Debian-এর জন্য দুর্বলতা প্যাচ আপডেট ইতিমধ্যেই প্রকাশ করা হয়েছে। (শুধুমাত্র ডেবিয়ান স্ট্রেচ-এর জন্য)।
তবে, RHEL-এ সমস্যাটির সমাধান করা হয়নি।