آپدیت بزرگ لینوکس فقط بخاطر یک باگ

آپدیت بزرگ لینوکس فقط بخاطر یک باگ

هسته لینوکس چیست؟

هسته لینوکس (Linux Kernel)، جزء اصلی سیستم عامل لینوکس و رابط هسته‌ای بین سخت‌افزارهای کامپیوتر و پردازش‌های آن است. هسته لینوکس، ارتباط بین سخت‌افزارها با پردازش‌های کامپیوتر را برقرار می‌کند و مدیریت بهینه منابع را انجام می‌دهد.

از آن‌جایی که این بخش از سیستم عامل لینوکس، همانند هسته‌ای درون پوسته‌ای سخت است و تمامی فعالیت‌های سخت‌افزاری را کنترل می‌کند، هسته لینوکس نامگذاری شده است.

 

هسته لینوکس چه کار می‌کند؟

  • مدیریت حافظه: مدیریت اینکه برای هر کاری، چه مقدار حافظه اختصاص یابد.
  • مدیریت پردازش: مدیریت پردازش‌ها و اولویت‌بندی آن‌ها در CPU.
  • درایورهای دستگاه: رابط بین سخت‌افزار و پردازش.
  • امنیت سیستم: دریافت درخواست‌های سرویس از پردازش‌ها.

 

معرفی هسته لینوکس نسخه ۵.۱۵

نسخه ۵.۱۵ جدیدترین نسخه رسمی هسته لینوکس است. این نسخه که مدت زیادی از معرفی آن نمی‌گذرد، قابلیت‌ها و برتری‌های متعددی در مقایسه با نسخه‌های پیشین دارد. هسته لینوکس ۵.۱۵ به ویژه برای کسانی که از لینوکس به عنوان سرور برای اشتراک‌گذاری فایل استفاده می‌کنند، کاربرد دارد و یک درایور NTFS جدید معرفی کرده است که برای تبادل داده بین پلتفرمی با سیستم‌های دیگر، مناسب است. در زیر، مهم‌ترین ویژگی‌های هسته لینوکس ۵.۱۵ را توضیح می‌دهیم.

 

۱- بهبود پشتیبانی فایل سیستم NTFS

بدون شک، مهم‌ترین به روز رسانی در نسخه ۵.۱۵ هسته لینوکس، اضافه شدن درایور جدید فایل سیستم NTFS به نام NTFS3 است.

درایور قبلی که NTFS نام داشت، در سال ۲۰۰۱ رونمایی شده بود و قابلیت‌های زیادی نداشت. NTFS-3G نیز نسخه دیگری از مایکروسافت NTFS متن‌باز است که از خواندن و نوشتن پشتیبانی می‌کند اما نوعی فایل سیستم در فضای کاربری (FUSE) است که البته سرعت بالایی ندارد.

درایور NTFS3 پاراگون در هسته لینوکس ۵.۱۵، در مقایسه با درایورهای NTFS متن‌باز و FUSE قبلی، هم از نظر عملکرد و هم از نظر کاربرد، برتری دارد. این درایور به طور کامل از خواندن و نوشتن پشتیبانی می‌کند و قابلیت‌های متعدد دیگری دارد که در نسخه‌های قبلی درایور NTFS لینوکس دیده نمی‌شوند.

 

۲- فایل سرور SMB درون هسته‌ای جدید

درایور SMB درون هسته‌ای (in-Kernel SMB Driver) یا KSMBD برای به اشتراک‌گذاری فایل، در نسخه ۵.۱۵ به هسته لینوکس اضافه شده است. این درایور توسط شرکت سامسونگ توسعه یافته و قابلیت SMB3 برای به اشتراک‌گذاری سریع فایل را به هسته لینوکس اضافه کرده است.

KSMBD نوعی ماژول هسته‌ای جدید است که از سمت سرور پروتکل SMB3 استفاده می‌کند و برای استفاده از آن باید حتما SMB  نسخه ۳ را نصب داشته باشید.

 

۳- پشتیبانی سخت‌افزاری

هر نسخه جدیدی که از هسته لینوکس منتشر می‌شود، پشتیبانی‌های سخت‌افزاری آن افزایش پیدا می‌کند. در مورد هسته لینوکس ۵.۱۵ نیز از این نظر فرقی با نسخه‌های قبلی ندارد و مجموعه‌ای از پشتیبانی‌های سخت‌افزاری جدید به آن اضافه شده است. فهرست پشتیبانی‌های اضافه شده یا بهبود یافته در جدیدترین نسخه رسمی هسته لینوکس به شرح زیر است:

  • بهبودهایی برای CPUها و GPUهای AMD شامل اضافه شدن قابلیت پشتیبانی از نمایش دما برای AMD Zen 3 APU
  • درایور صوتی برای APU ون گوگ
  • پشتیبانی از تعداد بیشتری از کار گرافیک‌های RDNA2
  • پشتیبانی از Intel Alder Lake (نسل دوازدهم CPUهای اینتل)
  • پشتیبانی اولیه از Intel DG2/Alchemist Discrete
  • بهبود پشتیبانی از مک بوک‌های دارای تراشه M1
  • پشتیبانی پایه‌ای از کارت گرافیک AMD Cyan Skillfish
  • پشتیبانی مدیریت کش C3 در CPUهای AMD
  • اضافه شدن درایور AMD PTDMA برای پشتیبانی از عملیات کپی I/O و عملیات حافظه به حافظه با پهنای باند گسترده.
  • پشتیبانی از درایور Realtek RTL8118EU WiFi
  • پشتیبانی از سرویس‌های صوتی Cirrus Logic Dolphin
  • پشتیبانی از کیت توسعه NVIDIA Jetson TX2 NX

 

۴- دیگر قابلیت‌ها

از دیگر قابلیت‌هایی که با به روز رسانی ۵.۱۵ به هسته لینوکس اضافه شده است می‌توان به DAMON (نمایشگر دسترسی به داده) آمازون برای بهبود عملکرد و در عین حال کاهش استفاده از حافظه، پشتیبانی و بهینه‌سازی فایل سیستم‌های XFS، EXT4، F2FS و Btrfs، پشتیبانی از اسکرول کردن رزولوشن بالا با ماوس جادویی اپل و پشتیبانی از پاور پروفایل‌ها در بعضی از لپ تاپ‌های Acer اشاره کرد.

 

کشف و پچ شدن باگ خطرناک در هسته لینوکس

باگ لینوکس

 

اخیرا، نوعی باگ Heap Overflow در هسته لینوکس کشف و پچ شده است. این پچ برای اکثر نسخه‌های اصلی لینوکس در دسترس قرار دارد.

اکثر باگ‌های امنیتی که تحت عنوان «باگ لینوکس» منتشر می‌شوند، در واقع باگ خود لینوکس نیستند. با این حال، اینطور نیست که سیستم عامل لینوکس هیچ باگ امنیتی نداشته باشد. برای مثال، اخیرا نوعی باگ خطرناک در هسته لینوکس پیدا شده است.

در این مورد، نوعی باگ heap overflow در legacy_parse_param در برنامه fs/fs_context.c وجود دارد. از این پارامتر در هنگام ایجاد سوپربلاک برای mount و بازتنظیم سوپربلاک برای remount استفاده می‌شود. سوپربلاک تمامی مشخصات فایل سیستم مثل اندازه، اندازه بلاک و بلاک‌ها حافظه پر و خالی را ثبت می‌کند و بنابراین، بسیار اهمیت دارد.

محاسبه legacy_parse_param() "PAGE_SIZE - 2 - size" به طور اشتباهی سبب ایجاد یک تایپ امضاء نشده (unsigned type) شده است. بنابراین، مقدار زیادی از نتایج “size”، به جای به دست آمدن مقداری منفی، سبب به دست آمدن مقدار مثبت بالایی می‌شود.

گفته بالا به این معنی است کاربر داده‌ها را بیش از مقدار حافظه اختصاص داده شده به آن، کپی می‌کند. همانطور که همه برنامه‌نویسان می‌دانند، نوشتن روی حافظه، بیش از مقدار حافظه‌ای که در دسترس برنامه قرار دارد، مشکل بزرگی است.

یکی از مهم‌ترین دلایل استفاده از زبان برنامه‌نویسی Rust در لینوکس، سخت‌تر شدن رخ دادن چنین اشتباهاتی است. همانطور که هر برنامه‌نویس C می‌داند، دور زدن مقدار حافظه اختصاص داده شده در برنامه‌های نوشته شده به زبان C، بسیار راحت است.

اما این باگ چقدر خطرناک است؟ سیستم نمره‌دهی آسیب‌پذیری عمومی یا CVSS به این آسیب‌پذیری، امتیاز ۷.۷ را داده است بنابراین می‌توان این آسیب‌پذیری را در گروه آسیب‌پذیری‌های بسیار پرخطر قرار داد.

مهاجمان دارای دسترسی محلی می‌توانند با استفاده از مجوزهای کاربری خود از این آسیب‌پذیری برای کرش کردن سیستم استفاده کنند. بدیهی است که مهاجمان باید برای این منظور، کد مخصوصی بنویسند و آن را در سیستم اجرا کنند تا به مجوزهای پایه‌ای‌تر دسترسی داشته باشند.

اکسپلویت کردن این آسیب‌پذیری نیازمند فعال شدن مجوز CAP_SYS_ADMIN است. اگر این کار عملی شود، کاربری محلی که مجوزهای لازم را نداشته باشد، می‌تواند فایل سیستمی را که از رابط کاربری برنامه اپلیکیشن فایل سیستم پشتیبانی نمی‌کند، باز کند.

اکسپلویت کردن آسیب‌پذیری گفته شده، آنقدرها هم که به نظر می‌رسد، کار سختی نیست. این حفره امنیتی در ۲۸ فوریه ۲۰۱۹ و با آپدیت 5.1-RC1 در هسته لینوکس ایجاد شد و اکنون در تمامی نسخه‌های هسته لینوکس قرار دارد. خوشبختانه پچ امنیتی برای بستن این حفره، ارائه شده است.

 

تغییر زبان برنامه‌نویسی لینوکس از 89C به زبان C مدرن برای رفع آسیب‌پذیری

همه می‌دانیم که سیستم عامل لینوکس به زبان برنامه‌نویسی C نوشته شده اما شاید ندانید که این سیستم عامل، با استفاده از نسخه قدیمی و متعلق به سال ۱۹۸۹ نوشته شده است که آن را C89 می‌نامد. به دلیل آسیب‌پذیری‌های کشف شده در هسته لینوکس، لینوس ترووالدز (Linus Trovalds) تصمیم گرفته است تا زبان برنامه‌نویسی لینوکس را به استاندارد C11 یا همان C مدرن تغییر دهد.

البته این به روز رسانی، آنطور که به نظر می‌رسد، چیز مهمی نیست. از آن‌جایی که کامپایلر زبان C با نسخه‌های قبلی سازگار است، شما هیچ مشکلی در اجرای برنامه‌هایی که به زبان C89 نوشته شده‌اند، ندارید. بنابراین، کامپایلرهای سازگار با زبان C11، هیچ مشکلی با کد منبع C89 ندارند.

به نظر می‌رسد که این تغییر قرار است در نسخه ۵.۱۸ هسته لینکوس اعمال شود و به نظر می‌رسد که آپدیت ۵.۱۸ در ماه مارس سال جاری، در دسترس قرار بگیرد.

تاریخ انتشار: 1400/12/18
تاریخ بروزرسانی: 1401/12/10
این مطلب را با دوستان خود به اشتراک بگذارید
نظرات کاربران
user avatar
ساسان
1400/12/23
سلام چرا cve اش رو ننوشتید؟

برای دریافت خبرنامه و اخبار

آدرس پست الکترونیکی خود را وارد کنید

تمامی حقوق مادی و معنوی این سایت متعلق به شرکت مهندسی دنیای فناوری امن ویرا (سایبرنو) می‌باشد.