خداحافظی لینوس توروالدز با توابع ناامن در لینوکس؛ پاکسازی بزرگ Kernel

حرکت انتحاری یا پاکسازی ضروری؟ لینوس توروالدز دست به کار شد!
لینوس توروالدز، خالق افسانهای لینوکس، این روزها دوباره دست به آچار شده و مستقیم خودش دارد پچهای سنگین را روی Kernel اعمال میکند. البته جالب است بدانید که این بار در بخشی از این مسیر، هوش مصنوعی (ابزار Claude Code) هم به کمکش آمده است! تازه ترین خبر دنیای متنباز این است که توابع قدیمی، تاریخی و البته به شدت ناامن __get_user() و __put_user() بالاخره از لینوکس برای همیشه حذف شدند.
اگر برایتان سوال شده که این توابع اصلاً چکار میکردند و چرا حذفشان اینقدر مهم است، خیلی ساده باید بگوییم که این دو تابع مسئولیت جابجایی دادهها بین فضای کاربر (user-space) و فضای سیستمعامل (kernel-space) را بر عهده داشتند. نسخه دوتایی اصلی یعنی get_user() و set_user() کارشان را درست انجام میدادند، اما این نسخههای زیرخطدار (__get_user و __put_user) سریعتر بودند چون خیلی از چکهای ایمنی را دور میزدند؛ همین سرعت بیشتر و نداشتن بررسیهای امنیتی، آنها را تبدیل به یک بمب ساعتی کرده بود!
چرا توروالدز عصبانی است؟ نگاهی به دلایل فنی پشت صحنه
لینوس توروالدز در جریان این Merge، حرفهای تندی درباره این توابع زده و آنها را بازماندههای دوران باستان میداند که دیگر هیچ بهانهای برای استفاده ازشان وجود ندارد. او در توضیحاتش گفته است:
“این کار خیلی وقت پیش باید انجام میشد: توابع __get_user() و __put_user() کاملاً تاریخی هستند و دیگر به هیچ وجه نباید از آنها استفاده کرد. وقتی از آنها به ناچار یا به اشتباه استفاده میشود (که تقریباً در تمام موارد همینطور است)، نه تنها کندتر از روشهای درست عمل میکنند، بلکه به دلیل عدم بررسی محدوده آدرس کاربر، کاملاً ناامن و آسیبپذیر هستند.”
بیشتر بخشهای Kernel خیلی وقت پیش کدهایشان را مدرن کرده بودند، اما هنوز هم تکههایی از این کدهای قدیمی باقی مانده بود. این پاکسازی بزرگ بالاخره پرونده این توابع ناامن را در کدهای عمومی لینوکس و معماری x86/x86_64 بست. البته هنوز آثار کوچکی از آنها در برخی پلتفرمهای پردازندهای خاص یا ARM64 دیده میشود که ساختار متفاوتی دارند یا از قبل به توابع امنتر مپ شدهاند.
پای هوش مصنوعی هم درمیان است!
شاید جالب باشد بدانید توروالدز که هفته گذشته هم از هوش مصنوعی برای پیدا کردن باگها و بهبود پرفورمنس استفاده کرده بود، این بار هم از Claude کمک گرفت. او در لیست ایمیلی توسعهدهندگان شوخی کرده و گفته است که از Claude مثل یک اسکریپت پیشرفته Coccinelle استفاده کرده تا کدهای قدیمی را به کدهای مدرن و امن تبدیل کند!


