শুধু একই ভাবে যে modprobe
কার্নেল মধ্যে নতুন কোড লোড করে "নষ্ট" নিরাপত্তা।
বিভিন্ন কারণে, কখনও কখনও এটি আধা-সুবিধাভুক্ত কোড (এক্স সার্ভারের অভ্যন্তরে গ্রাফিক্স ড্রাইভার) কার্নেল থ্রেডের পরিবর্তে ব্যবহারকারী-স্থানে চালিত হওয়া আরও বোধগম্য হয়।
kill
এটি আরও সহজেই সক্ষম হওয়া , যদি না এটি এইচডাব্লুড লক করে।
- ফাইল সিস্টেমে ফাইলগুলি থেকে এটির কোড / ডেটা দাবি করার পৃষ্ঠা রয়েছে। (কার্নেলের মেমরিটি পৃষ্ঠাতে সক্ষম নয়)
- এটির নিজস্ব ভার্চুয়াল ঠিকানা স্থান দেওয়া যেখানে এক্স সার্ভারের বাগগুলি কেবল কার্নেলটি না নিলে X সার্ভারটি ক্র্যাশ করতে পারে ।
এটি সুরক্ষার জন্য খুব বেশি কিছু করে না তবে বড় নির্ভরযোগ্যতা এবং সফ্টওয়্যার আর্কিটেকচার সুবিধা রয়েছে।
কার্নেলের মধ্যে গ্রাফিক্স ড্রাইভারগুলি বেকিং করা হলে এক্স ক্লায়েন্ট এবং এক্স সার্ভারের মধ্যে প্রসঙ্গের সুইচগুলি হ্রাস করতে পারে, যেমন একটি ব্যবহারকারী-> কার্নেল-> ব্যবহারকারীর অন্য ব্যবহার-স্থান প্রক্রিয়াতে ডেটা পাওয়ার পরিবর্তে, তবে এক্স সার্ভারগুলি historতিহাসিকভাবে খুব বড় এবং খুব বগিযুক্ত তাদের পুরো কার্নেল করতে চাই
হ্যাঁ, এগুলিকে privs সঙ্গে ক্ষতিকারক কোড পারে উপর কার্নেল যদি এটা করতে চেয়েছিলেন, ব্যবহার নিতে /dev/mem
কার্নেল কোড পরিবর্তন করা।
বা x86-তে উদাহরণস্বরূপ, আইও এর সুবিধাপ্রাপ্তির স্তরটি 0 এ রিং করার জন্য cli
একটি iopl
সিস্টেম কল করার পরে সেই কোরটিতে বিঘ্ন অক্ষম করার জন্য একটি নির্দেশিকা চালান ।
তবে এমনকি x86 iopl
"কেবল" কিছু নির্দেশকে অ্যাক্সেস দেয় : ইন / আউট (এবং স্ট্রিং সংস্করণগুলি ইন / আউটস) এবং ক্লিপ / স্টি। এটি আপনাকে "মডেল নির্দিষ্ট রেজিস্টারগুলি" ব্যবহার rdmsr
বা wrmsr
পড়তে বা লিখতে দেয় না (উদাহরণস্বরূপ IA32_LSTAR
যা x86-64 syscall
নির্দেশের জন্য কার্নেল এন্ট্রি পয়েন্ট ঠিকানা নির্ধারণ করে ), বা lidt
বিঘ্নিত-বর্ণনাকারী টেবিলটি প্রতিস্থাপন করতে ব্যবহার করবে (যা আপনাকে পুরোপুরি গ্রহণ করতে দেয়) বিদ্যমান কার্নেল থেকে মেশিনের ওপরে, কমপক্ষে সেই কোরটিতে)
আপনি নিয়ন্ত্রণ রেজিস্টারগুলিও পড়তে পারবেন না (সিআর 3 এর মতো যা শীর্ষ স্তরের পৃষ্ঠা-ডিরেক্টরিটির দৈহিক ঠিকানা ধারণ করে, যা আক্রমণাত্মক প্রক্রিয়াটি আরও বেশি আইংয়ের /dev/mem
বিকল্প হিসাবে নিজের পৃষ্ঠা সারণিগুলিকে সংশোধন করার জন্য অফসেট হিসাবে দরকারী বলে মনে করতে পারে । )mmap
/dev/mem
invd
(সমস্ত ক্যাশে বাতিল ছাড়া লেখা-ব্যাক !! ( ব্যবহারের ক্ষেত্রে আগে র্যাম কনফিগার করা গোড়ার দিকে বায়োস =)) অন্য মজার এক যে সবসময় পূর্ণ সিপিএল 0 (বর্তমান বিশেষাধিকার স্তর) প্রয়োজন, না শুধু IOPL হয়। এমনকি wbinvd
তৈরী কারণ এটি এত ধীর (এবং interruptible নয়), এবং ফ্লাশ হয়েছে সব সব কোর জুড়ে ক্যাশে। (দেখুন কোনও প্রোগ্রামের সাথে সম্পর্কিত সিপিইউর পুরো ক্যাশেটি ফ্লাশ করার কোনও উপায় আছে? এবং ডাব্লুবিআইএনভিডি নির্দেশাবলীর ব্যবহার )
কোড হিসাবে একটি খারাপ ঠিকানার চলমান ডেটাতে লাফিয়ে ফেলার ফলসগুলি এইভাবে কোনও ইউজার-স্পেস এক্স সার্ভারে দুর্ঘটনাক্রমে এই নির্দেশাবলীর কোনওটি কার্যকর করতে পারে না।
বর্তমান সুবিধা স্তর (সুরক্ষিত এবং দীর্ঘ মোডে) হ'ল cs
(কোড বিভাগের নির্বাচক) এর কম 2 বিট । mov eax, cs
/ and eax, 3
সুবিধার স্তরটি পড়তে যে কোনও মোডে কাজ করে।
সুবিধার স্তরটি লিখতে, আপনি একটি করুন jmp far
বা call far
সেট করুন CS:RIP
(তবে লক্ষ্য বিভাগের জন্য জিডিটি / এলডিটি এন্ট্রি পুরানো সুবিধাগুলির স্তরের উপর ভিত্তি করে এটিকে সীমাবদ্ধ করতে পারে, যার কারণে ব্যবহারকারী-স্থান নিজেকে উন্নত করতে এটি করতে পারে না)। অথবা আপনি কার্নেল এন্ট্রি পয়েন্টে 0 বাজে রিং ব্যবহার করতে int
বা ব্যবহার করতে পারেন syscall
।
iopl
অনুমতি দেয় না , সুতরাং এটি নিশ্চিত করার জন্য এটি কার্যকর যে কোনও বগি ব্যবহারকারী-স্পেস প্রোগ্রামটি দুর্ঘটনাক্রমে কোনও দূষিত ফাংশন পয়েন্টারের মাধ্যমে ঝাঁপিয়ে পড়ে না যা এক্সিকিউটেবল মেমোরিতে বাইট দিয়ে শুরু করে । আমি সুরক্ষার কিছু কারণের সাথে একটি উত্তর যুক্ত করেছি কারণ ব্যবহারকারী-স্থান প্রক্রিয়াগুলি তাদের সুবিধাগুলি উন্নত করতে কেন কার্যকর।invd
0F 08