
در آستانه باز شدن پنجره ادغام (merge window) کرنل لینوکس ۷.۴، درخواستهای اولیه ادغام (pull requests) از جمله بهروزرسانیهای هسته درایور (driver core) ارسال شده است. یکی از تغییرات قابل توجه، افزودن نشانه آلودگی (taint) جدیدی با نام TAINT_FORCED_BIND است که برای مقابله با موج گسترده فازینگ (fuzzing) خودکار و گزارشهای نادرست طراحی شده است.
رابط bind/unbind در sysfs چه مشکلی ایجاد کرده است؟
رابط bind/unbind از طریق sysfs به کاربران امکان میدهد دستگاههای دلخواه را بر اساس شناسه گذرگاه (bus ID) به درایورهای کرنل لینوکس متصل یا از آنها جدا کنند. این رابط کاربردهای مشروع دارد، اما ابزارها و رباتهای فازینگ شروع به ارسال گزارشهای باگ غیرعملی کردهاند؛ گزارشهایی که در آنها دستگاههای تصادفی به درایورهای تصادفی و ناسازگار متصل میشوند.
نشانه TAINT_FORCED_BIND چگونه عمل میکند؟
در لینوکس ۷.۴، اگر از رابط bind/unbind در sysfs استفاده شود، کرنل در حال اجرا با نشانه TAINT_FORCED_BIND علامتگذاری میشود. هدف این است که به بررسیکنندگان گزارشهای باگ نشان داده شود ممکن است گزارش مورد نظر ارتباطی با عملکرد واقعی کرنل نداشته باشد و ناشی از اتصال اجباری و غیرمعمول دستگاه به درایور باشد.
انگیزه اصلی: حملات فازینگ و گزارشهای بیفایده
گرگ کیاچ (Greg KH) در توضیح افزودن این نشانه جدید گفته است انگیزه اصلی، «حمله» گسترده فازینگ از طریق ابزارهایی مانند syzbot بوده است. به گفته او، این ابزارها تصمیم گرفتهاند بهصورت تصادفی هر درایوری را به هر نوع دستگاهی متصل کنند و همین موضوع باعث تولید حجم زیادی از خطاهای غیرضروری و وصلههای بیفایده کرنل (pointless kernel patches) توسط توسعهدهندگان تازهکار و ناآگاه شده است.
افزودن قابلیتهای Rust به درایورهای کرنل
درخواست ادغام هسته درایور برای لینوکس ۷.۴ علاوه بر TAINT_FORCED_BIND، مجموعهای از افزودههای جدید مربوط به زبان Rust را نیز برای درایورهای کرنل لینوکس شامل میشود. این تغییرات در ادامه روند گسترش استفاده از Rust در اجزای مختلف کرنل ارسال شده است.