چطور ویندوز*د توانست خود و استفاده کنندگانش را به فنا دهد؟

عرررررررررررررررررررر!
عرررررررررررررررررررر!


احتمالا خبرو شنیدید، ویندوز ترکیده. خب من واقعا تعجب نکردم. اصلا تعجبی داره؟

قضیه از این قراره که یکی از پچ های شرکت امنیتی CrowdStrike که با بروزرسانی به کرنل ویندوز اضافه شده باعث شده هزاران رایانه‌ی ویندوزی در جهان به صفحه‌ی آبی مرگ برخورد بکنن و دیگه قابل استفاده نباشن.

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


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

درحقیقت میخوایم مسیر نصب و انتشار بسته ها و نرم افزار های مختلفو در این دو سیستم عامل(ویندوز و اکثر توزیع های گنو مقایسه کنیم) پس ما اینجا یک دبیان پایدار و یک نرم افزار آزاد داریم، حالا فکر میکنیم در نگارش جدید اون نرم افزار آزاد یک مشکل وجود داره و اگه ما دبیانمونو بروز کنیم اون مشکل به باعث از کار افتادن کارسازمون میشه.

ولی صبر کنید! به همین راحتی؟! اصلا میدونید که نگارش جدید یک بسته قبل از اینکه وارد مخزن دبیان پایدار بشه باید چه راه پر پیچ و خمی رو طی کنه؟

اول باید بدونید که توزیع دبیان بر اساس قوانین بروزرسانی بسته ها دارای انتشار های مختلفیه که سلسله مراتبش به این صورته.(البته experimental یک انتشار نیست و فقط یک مخزنه)

experimental

unstable

testing

stable

اگه یک نگهدارنده‌ی بسته بروزرسانیی رو منتشر کنه ابتدا باید وارد مخزن experimental بشه، بسته هایی از سد مخازن experimental رد میشن که بلافاصله باعث از کار افتادن سامانه نشن و خطر بزرگی نداشته باشن، یعنی این مشکل اگه برای دبیان بود در همین وهله‌ی اول جلوش گرفته میشد. چون دبیان در دادن بروزرسانی مثل ویندوز بین کاربران فرقی نمیزاره این بسته توسط طیف وسیعی از کاربران با شرایط و استفاده های مختلف آزمایش میشه و اگه مشکلی بود کاربران میتونن به راحتی این مشکل و باگو هم به توسعه دهنده‌ی اون نرم افزار و هم به خود توزیع گذارش کنن.

بعد از اون بسته ها وارد مخزن unstable میشن و اگه باگ مهمی نداشتن که باعث بشه تمام نرم افزار غیرقابل استفاده بشه یا باگ مهمی باشه وارد مخازن testing میشن، یعنی مثلا این باگ در حین استفاده‌ی اندکی از ابزار های اون نرم افزار خودشو نشون بده و باعث نشه کل اون غیر قابل استفاده بشه.

این روند همینجوری ادامه پیدا میکنه تا موعد انتشار یکی دیگر از نگارش های دبیان پایدار فرا برسه(معمولا بین هر دو تا سه سال یک نگارش دبیان پایدار جدید منتشر میشه) بعد در این زمانه که توسعه دهندگان دبیان از بین نگارش هایی مختلفی که وارد مخزن testing شدن(معمولا) نگارشی رو انتخاب میکنه که گزارش باگ های کمتری داشته، برای همینه که توزیع هایی مثل دبیان به کرگدنی معروفن و اگه قرار باشه یک چنین مشکلی وارد مخازن دبیان پایدار بشه باید خیلی خوش شانس باشه.

البته این رو هم اضافه کنم به صورت خودکار قبل از اینکه یک بسته وارد مخازن دبیان بشه باید از چندین سد دفاعی عبور کنه.

خب حالا اگه یک چنین مشکل وخیمی وجود داشت و وارد مخازن دبیان پایدار شد چی؟ امکان نداره یعنی؟ خب قطعا امکان چنین مشکلی هست ولی اون مشکل حتی اگه وخیم هم باشه باید زمانی بروز کنه که کاربر داره کار خاصی با اون نرم افزار میکنه و یا داره از یک قابلیت کم استفاده‌ی اون نرم افزار استفاده میکنه که بعد از ۳ سال هنوز کسی اونو گزارش نکرده، و البته از مهمترین مورد نگذریم که چون بسته‌ی مورد نظر ما یک نرم افزار آزاده هر کسی میتونه در پیدا کردن و رفع باگ های اون کمک و مشارکت کنه. از زمان ایجاد یک نگارش جدید توسط توسعه دهندگان اون بسته تا زمان انتشار این بسته در مخزن دبیان پایدار افراد میتونن روی تمام کد های اون نظارت داشته باشن. به طور کلی توزیع های گنو از ابزار و روش هایی استفاده میکنن که میشه بر روی روند اجرا و کارکرد برنامه های ‌سامانه نظارتی تقربلا ۱۰۰٪ داشت.

مثالی از اتفاقات بالا رو میتونیم دربار‌ه‌ی قظیه‌ی xz و مشکل کرنل لینوکس با ext4 داشته بایشم که اولی توسط افراد گذارش شد و دومی هم چون اتفاق نادری بود گذارش نشد ولی یک روز بعد از گذارشش رفع شد.



حالا ویندوز، در ویندوز هر نرم افزار بجز خود کرنل و بسته های اجباری اون توسط خود فرد باید بروزرسانی و نصب بشن و این باعث میشه که نصب و استفاده از بروزترین نگارش نرم افزار ها فوق‌العاده سخت و بغرنج بشه در حالی که در اکثر توزیع های گنو این اتفاق تنها در زدن دوتا دکمه یا دوتا دستور انجام میشه. البته اینجور ابزار هایی هم برای ویندوز موجوده ولی خب اکثر اونها بسیار ناقصن و بسیاری شون اصلا قابل استفاده نیستن و حتی اگه باشن چون ویندوز از کتابخانه های static استفاده میکنه شما برای هر بروزرسانی باید چندین گیگ اینترنت مصرف کنید و در آخر هم با کندی شدید و صفحه‌ی مبارک برخورد کنید. دی:



شاید در جایی شنیده باشید که نرم افزار های آزاد هم شاید بدافزار باشن یا تیکه کد مخربی(عمدی) در اون ها موجود باشه(که البته شناسایی و رفع اون خیلی راحت تر از نرم افزار های انحصاری هست)، درسته آزاد بودن نرم افزار برای استفاده از اون لازم و واجبه ولی کافی نیست، یا شاید شنیده باشید که یک توسعه دهنده‌ی نرم افزار آزاد موقع دادن پرونده‌ی باینری نرم افزارش به منبع اون کد های مخربی رو اضافه کرده و بعد از ساخت نگارش قابل اجراء اون، کد های مخربو از مخرنش که قابل دیدن برای دیگرانه هستو حذف کرده و افراد برای اینکه اینو بفهمن باید حتما اون کد بی خطرو خروجی بگیرین و باینری کد مرخب و باینری کد سالم را مقایسه کنن که بفهمن یک تفاوتی هست،‌حالا چه تفاوتی خدا میدونه، و بدین گونه ویندوز در این جا هم بدرد نمیخوره ولی بسته های قرار گرفته در مخازن توزیع های گنو توسط خود توزیع از کد اون نرم افزار ساخته میشه و از باینری های ارائه شده توسط توسعه دهنده استفاده نمیکنه.


حالا مقصر کیه؟

بعضی ها میگن این اتفاق تقصیر مایکروسافت نیست و تنها شرکت CrowdStrike مقصر این افتضاحه، ولی باید بدونید این مشکل با بروزرسانی کرنل ویندوز به وجود اومده و مقصر ویندوزه‌ که اجازه داده چنین بروزرسانی وارد کرنل اون بشه و البته از حق نگذریم مقصر اصلی کاربران ویندوزن که با استفاده از اون اینجوری خودشونو به خطر میندازن.

دیدید که توزیع هایی مثل دبیان و خیلی از توزیع های دیگه‌ی سیستم عامل گنو چجور راهکار هایی برای جلوگیری از مشکل و خطر امنیتی دارن در صورتی که به صورت پیشفرض ویندوز دارای در های پشتی‌ای برای NSA و موساده.


ولی خیلی جالبه، در رسانه ها عجب تاکیدی روی نرم افزار یک شرکت ثالث میشه، انگار نه انگار که این بروزرسانی، یک بروزرسانی رسمیه ویندوزه! حداقل کاری کن دو روز بعد از نصب خودت ۱۰۰۰ برابر کندتر نشی، بقیش پیشکش.


ویرایش: توزیع هایی مثل دبیان و خیلی از توزیع های دیگه دو نگارش آخر کرنل رو نگه میدارن که اگه کرنل جدید باعث اشکال بشه به راحتی در boot loader شما انتخاب کنید توزیع با نگارش قبلی کرنل بالا بیاد. ویندوز دی:


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

https://vrgl.ir/rTaSt