HeadlinesBriefing HeadlinesBriefing.com

OpenBSD ৩৭ বছরের কার্নেল বাগে রুট প্রিভিলেজ

Hacker News •
×

নিরাপত্তা গবেষণা প্রতিষ্ঠান Calif মূল BSD সোর্স পর্যন্ত প্রায় ৩৭ বছর আগের একটি OpenBSD দুর্বলতার বিস্তারিত প্রকাশ করেছে। একটি শেয়ার্ড মেমোরি অ্যাটাচমেন্ট কাউন্টারকে সাইনড ১৬-বিট short হিসেবে সংজ্ঞায়িত করা হয়েছিল। শেয়ার্ড মেমোরি অ্যাটাচমেন্ট রেকর্ড থাকা একটি প্রক্রিয়াকে বারবার fork করলে কাউন্টারটি তার সর্বোচ্চ মান ৩২,৭৬৭ ছাড়িয়ে যেতে পারত এবং ঋণাত্মক মানে ঘুরে যেত। এই ইন্টিজার ওভারফ্লো একটি রেস কন্ডিশনের মাধ্যমে use-after-free-এর দিকে নিয়ে যেতে পারত। কার্নেলে আলাদা একটি out-of-bounds write-এর সঙ্গে মিলিত হয়ে এটি স্থানীয়ভাবে রুট পর্যন্ত সুবিধা বৃদ্ধির সুযোগ দিত। সমস্যাগুলো errata 026 ও 018-এ সমাধান করা হয়েছে।

গবেষকরা এমন একটি এক্সপ্লয়েট পথের বর্ণনা দিয়েছেন যা KARL, SMAP ও SMEP সক্রিয় থাকা অবস্থায় OpenBSD-তে স্থানীয় রুট অর্জন করেছে, কোনো information disclosure দুর্বলতা ব্যবহার না করেই। পদ্ধতিতে ১২৭টি System V শেয়ার্ড মেমোরি সেগমেন্ট ম্যাপ ও আনম্যাপ করা এবং অ্যাটাচ কাউন্ট ঘোরাতে ২৫৯টি প্রক্রিয়া fork করা হয়েছিল। এরপর heap grooming ও রেস কন্ডিশন ব্যবহার করে বরাদ্দগুলো সারিবদ্ধ করা হয়, একটি multicast কাঠামো নষ্ট করা হয় এবং শেষ পর্যন্ত একটি পূর্বানুমেয় কার্নেল পয়েন্টার ওভাররাইট করে কার্নেল কোড এক্সিকিউশন অর্জন করা হয়।

এই এক্সপ্লয়েট একটি write-what-where প্রিমিটিভের উপর নির্ভর করেছিল: লেখাটি এসেছিল TAILQ_REMOVE অপারেশন থেকে, লক্ষ্য ছিল supervisor-accessible করা userland মেমোরি, আর অবস্থান ছিল একটি পূর্বানুমেয় কার্নেল পয়েন্টার। OpenBSD-এর KARL ফাংশন ও ডেটার ঠিকানা র্যান্ডমাইজ করে, তবে কার্নেলের মেমোরি অ্যালোকেটর এখনো নির্ধারিত, তাই বুটের প্রাথমিক কিছু বরাদ্দ নির্ভরযোগ্য লক্ষ্যে পরিণত হয়েছিল।

এ ধরনের আক্রমণের ঝুঁকি কমাতে লেখকেরা safe-unlinking-এর মতো ব্যবস্থার পরামর্শ দিয়েছেন, যা unlink লেখার আগে doubly linked list-এর invariant যাচাই করে এবং লঙ্ঘিত হলে abort বা panic করে। Calif জানিয়েছে, তারা নিয়মিত ওপেন সোর্স প্রকল্পগুলোতে দুর্বলতা রিপোর্ট করে, প্রায়ই প্রস্তাবিত প্যাচসহ।

উৎস: Hacker News · সারাংশ: HeadlinesBriefing