عصر روز ششم آوریل ۲۰۲۱، یکی از دانشجویان دانشگاه مینهسوتا پَچی مربوط به پروژهی کرنل لینوکس را به چند توسعهدهنده ایمیل کرد. پانزده روز بعد، این دانشگاه که همواره جزو ۲۰ مؤسسهی تحقیقاتی برتر دنیا بوده است، از شرکت در این پروژهی مهم و بزرگ بهطور کامل کنار گذاشته شد.
گرِگ کروآ هارتمن، یکی از توسعهدهندگان ارشد و نگهدارندهی کرنل لینوکس، در جواب این ایمیل با عصبانیت نوشت: «من به شما پیشنهاد میکنم برای انجام آزمایشهایتان سراغ انجمن دیگری بروید. اینجا دیگر جای شما نیست.»
اما چه شد که تنها یک ایمیل باعث ممنوعیت کل یک دانشگاه از شرکت در پروژهی کرنل لینوکس شد؟ پروژهی متن بازی که با داشتن بیش از ۲۱ میلیون خط کد از هزاران توسعهدهنده، بزرگترین پروژهی حوزهی نرمافزار در دنیا محسوب میشود و توسعهدهندگان بسیاری این همکاری داوطلبانه را افتخار بزرگی برای خود میدانند.
برای خواندن داستان پرفرازونشیب مشارکت این دانشگاه در پروژهی کرنل لینوکس و دلیل کنار گذاشته شدن آن از این پروژه، با ما همراه باشید.
داستان از سال ۲۰۱۷ شروع شد؛ یعنی زمانیکه یک محقق امنیت سیستم به نام کنگجی لو استادیار دانشگاه مینهسوتا شد.
تحقیقات لو، طبق چیزی که در وبسایت او نوشته شده، در مورد «تقاطع امنیت، سیستم عاملها، تجزیه و تحلیل برنامه و کامپایلرها» است؛ اما لو توجهش معطوف به لینوکس بود و بیشتر مقالههای او بهنوعی مربوط به کرنل لینوکس است.
مقالهی مرتبط:
هسته یا کرنل لینوکس (Linux kernel)، هستهی اصلی هر سیستم عامل لینوکس است و در واقع رابطی بین سیستم عامل و دستگاهی است که سیستم عامل روی آن اجرا میشود. یک کاربر لینوکس هیچ تعاملی با هسته ندارد؛ اما وجود آن برای انجام کارهای مختلف، از جمله مدیریت حافظه، مدیریت دیسک و پردازنده، ضروری است.
کرنل لینوکس پروژهای متن باز است، به این معنی که میلیونها خط کد آن در دسترس عموم است و همه میتوانند آنها را ببینند و کدهای خود را به آن اضافه کنند.
البته نه «همه» چون قرار نیست هر پچی که به توسعهدهندگان پروژه ارسال میشود، مورد تأیید قرار بگیرد و به کامپیوتر میلیونها کاربر در دنیا راه پیدا کند. هر پچ ارسالشده ابتدا باید از نظارت شبکهی گستردهای از توسعهدهندگان و «نگهدارندگان» (هزاران داوطلب که هر یک مسئول نگهداری از اجزای مختلف هسته است) بگذرد تا بتواند در مخزن اصلی قرار گیرد.
داستان از سال ۲۰۱۷ شروع شد: زمانی که کنگجی لو بهعنوان استادیار دانشگاه مینهسوتا شروع به کار کرد.
وقتی پچ به این مرحله رسید، تازه باید يک دوره آزمایش طولانیمدت را پشت سر بگذارد تا برای گنجانده شدن در «عرضهی پایدار» و سیستمهای عامل کاربران مورد تأیید قرار بگیرد. این فرایند به این دلیل اینچنین سختگیرانه طراحی شده است تا از ورود کدهای مخرب یا بیکیفیت جلوگیری کند؛ اما ماهیت متن باز بودن این پروژه همیشه جایی برای خطای انسانی باز میگذارد.
برخی از پروژههای اخیر لو مرتبط با خطای انسانی و کاهش اثرات آن بوده است. او با آزمایش کرنل لینوکس، سیستمهایی را برای تشخیص خودکار انواع مختلف باگها در پروژههای متن باز معرفی کرده است. این آزمایشها شامل گزارش باگ، ارسال پچ به نگهدارندگان کرنل لینوکس و گزارش نرخ پذیرفته شدن پچهای او توسط نگهدارندگان است.
برای مثال، لو و دو نفر از دانشجویان دکترای او به نامهای آدیتیا پکی و چیوشی وو در مقالهای در سال ۲۰۱۹ سیستمی به نام کریکس (Crix) را برای تشخیص دستهی خاصی از باگها در هستههای سیستم عامل ارائه دادند. این سه نفر، ۲۷۸ مورد از این باگها را به کمک کریکس پیدا کردند و برای رفع همهی آنها پچهایی ارسال کردند. اینکه نگهدارندگان وجود ۱۵۱ مورد از این باگها را تأیید کردند، گواه بر عملکرد قابل قبول این ابزار بود.
پژوهشهای لو مفید بود؛ تا اینکه اواخر سال گذشته، لو تمرکز پژوهشهای خود را از روی هسته برداشت و به انجمن توسعهدهندگان آن منعطف کرد و دردسرها از همینجا شروع شد.
لو و وو در مقالهای با عنوان «امکان وارد کردن مخفیانهی آسیبپذیریها در نرمافزار متن باز از طریق کامیتهای فریبنده» توضیح دادند که با ارسال پچهایی که در ظاهر به نظر میرسید قرار است باگهای واقعی را برطرف کنند، توانستند باگهای جدید و خطرناکی را به کرنل لینوکس وارد کنند. این گروه، نام این پچها را به خاطر ظاهر مفید اما ماهیت مخرب آنها، «کامیتهای فریبنده» (hypocrite commits) گذاشت.
هدف از این آزمایش، به گفتهی خود این محققان، بهبود امنیت کرنل لینوکس از طریق نشان دادن راههای نفوذ یک کدنویس مخرب به این پروژه بود. شاید بتوان گفت روش کار آنها شبیه هکرهای اخلاقی یا همان هکرهای کلاه سفید است که برای کشف نقاط ضعف سیستم با شرکتی قرارداد میبندند و به محض پیدا کردن باگهای نرمافزار، توسعهدهندگان را در جریان آنها قرار میدهند.
اما پرسروصداترین واکنشی که این مقاله در توییتر و انجمن توسعهدهندگان لینوکس دریافت کرد، نه از روی قدردانی که اعتراضی کوبنده بود. برخی، از جمله گرِگ اسکات، متخصص فناوری اطلاعات با بیش از ۲۰ سال تجربهی کار با نرمافزار متن باز، این مقاله را «سراسر جفنگ» نامیدند و عدهای دیگر، از جمله کنث وایت، محقق امنیتی، کار این گروه را «کاملا غیر اخلاقی» دانستند.
البته این عصبانیتها به خاطر وجود خود این کامیتها نبود؛ چون طبق ادعای لو، هیچ کدام از باگهای آنها به کرنل لینوکس راه پیدا نکرده بود و آنها خودشان این باگها را پیش از این مرحله حذف کرده و پچهای واقعی را بهجای آنها ارسال کردند (اگرچه به گفتهی کروآ هارتمن، یکی از این پچهای مشکلدار وارد مخزن اصلی شد؛ اما آسیبی وارد نکرد).
دلیل اصلی این واکنشهای تند و انتقادی به آزمایش لو، وقت ارزشمند نگهدارندگانی بود که این دانشگاه بهطور عامدانه تلف کرده بود. هکرهای کلاه سفید با آگاهی کامل توسعهدهندگان دست به آزمایش و دستکاری سیستم میزنند؛ اما پژوهش لو کاملا مخفیانه صورت گرفته است.
اسکات در این رابطه به Verge گفت: «این پژوهشگران از خطی که نباید عبور کردند. هیچ کس این گروه را برای این کار استخدام نکرده بود. آنها خودشان تصمیم به انجام این آزمایش گرفتند و افراد زیادی برای ارزیابی پچهای آنها وقت گذاشتند.»
به گفتهی اسکات، هیچ داوطلبی از اینکه بفهمد وقت خود را برای ارزیابی پچی هدر داده که بخشی از انجام آزمایش بوده، خوشحال نخواهد بود.
دانشگاه مینهسوتا برای جلب اعتماد تیم کرنل لینوکس راه درازی در پیش دارد
از طرف دیگر، پژوهش لو پای بحث جنجالی آزمایش انسانی را نیز به میان کشیده است. دانشگاه مینهسوتا معتقد است این مسئله در مورد لو و دستیارانش وارد نیست؛ چون آنها در پاسخ به این اعتراض، تأییدیه درخواست کرده بودند و نامهی رسمی معافیت آنها اعطا شده بود؛ اما اعضای انجمن توسعهی کرنل لینوکس چنین اعتقادی ندارند.
مقالهی مرتبط:
به گفتهی هارتمن، «پژوهش روی افرادی که روحشان از این آزمایش باخبر نیست، کار پسندیدهای نیست. هیچ کس از ما نپرسید آیا انجام این آزمایش قابل قبول است یا خیر.»
توسعهدهندگان دیگر نیز معتقد بودند صرفنظر از آسیبها یا فواید حاصل از این پژوهش، دانشگاه مینهسوتا نهتنها اعضای انجمن کرنل لینوکس را به دردسر انداخت، بلکه فلسفهی اصلی این پروژه را نیز زیر سؤال برد. هر کاربری که از سیستم عامل استفاده میکند تا حدی به توسعهدهندگان آن سیستم اعتماد میکند. این امر خصوصاً در مورد افرادی که از نرمافزارهای متن باز استفاده میکنند، صادق است و برخی از کاربران لینوکس این اصل اعتماد را بسیار جدی تلقی میکنند.
اسکات در این زمینه به Verge گفت:
پروژههای متن باز به جامعهی کاربری پرجنبوجوشی نیاز دارند. در این جامعه باید افرادی برای ارسال فایلها، افرادی برای مستند کردن فایلها و افرادی برای استفاده از آنها و ارائهی بازخورد برای هرچه بهتر شدن سیستم وجود داشته باشد.
این حلقهی بازخورد به افراد زیادی وابسته است و کاربران باید بتوانند تا حدی به این سیستم اعتماد داشته باشند … اگر کسی این اعتماد را زیر پا بگذارد، اوضاع به هم میریزد.
پس از انتشار مقاله، برای بسیاری از توسعهدهندگان کرنل لینوکس روشن شد که باید کاری در مورد دانشگاه مینهسوتا صورت بگیرد و تمام پچهای ارسالی از این دانشگاه بررسی شود؛ اما روند بازبینی این پچها در مقیاس گسترده تا سال ۲۰۲۰ محقق نشد.
روز ششم آوریل ۲۰۲۱، آدیتیا پکی با آدرس ایمیل خود آن پچ سرنوشتساز را به انجمن توسعهدهندگان کرنل لینوکس ارسال کرد.
هارتمن که از مدتها به خاطر سابقهی دانشگاه مینهسوتا در ارسال کدهای مخرب در حالت آمادهباش بود، با دیدن آدرس ایمیل پکی تصمیم گرفت همان موقع این پچ را بررسی کند. او متوجه شد پچ ارسالی چندان مفید به نظر نمیرسد. به گفتهی او، «باید خیلی تلاش کرد تا پچی طراحی کرد که به نظر درست میرسد؛ اما در عمل مخرب است. پچهای ارسالی دانشگاه مینهسوتا همه به همین شکل بودند.»
سرانجام بیستم آوریل، هارتمن تصمیم گرفت با این دانشگاه بهطور جدی برخورد کند.
او در جواب ایمیل پکی نوشت:
لطفاً از ارسال پچهای نامعتبر دست بردارید. استاد شما دارد با فرایند بازبینی بازی میکند تا به روشی عجیب و غریب، مقاله بنویسد.
به گفتهی لیان رومانوفسکی، یکی از نگهدارندگان کرنل لینوکس، هارتمن چهار مورد از پچهای پذیرفتهشدهی پکی را بررسی کرد و متوجه شد سه مورد از آنها دارای آسیبپذیری امنیتی با درجه خطر مختلفی هستند.
هارتمن امیدوار بود داستان به همینجا ختم شود؛ اما پکی با عصبانیت در پیامی شخصی به او جواب داد:
با کمال احترام، از شما میخواهم دست از تهمت واهی زدن و افترا بردارید.
هارتمن ۲۱ آوریل در جواب نوشت:
شما و تیمتان اعتراف کردید پچهای مشکلدار را به انجمن کرنل فرستادهاید تا واکنش آنها را ببینید و بعد بر اساس آن مقالهای منتشر کردید. حالا دوباره یک سری پچ که بهوضوح مشکلدار است، ارسال کردهاید. انتظار دارید من دربارهی این موضوع چه فکری کنم؟
هارتمن تا پایان آن روز، بهطور رسمی در ایمیلی به شماری از نگهدارندگان کرنل لینوکس و همچنین اعضای تیم لو اعلام کرد از این پس، پچهای ارسالی با آدرس umn.edu (ایمیل دانشگاه مینهسوتا) باید بهطور پیشفرض رد شود، مگر اینکه اعتبار آنها ثابت شود.
هارتمن ۱۹۰ پچ ارسالی از ایمیلهای وابسته به دانشگاه مینهسوتا را برگرداند. امکان برگرداندن ۶۸ پچ وجود نداشت؛ اما باید بهصورت دستی بررسی میشدند.
مشخص نیست این پچ جدید قرار بود در چه آزمایشی به کار رود. وبسایت لو به «پچهای اضافهی آدیتیا پکی برای پروژهی جدید کشف باگ» اشارهی کوچکی کرده است.
اما آنچه مشخص است این است که رفتار پکی بالاخره انجمن را بر آن داشت تا در روند بررسی پچهای این دانشگاه، هرگونه تأخیر را کنار بگذارد. توسعهدهندگان لینوکس شروع به بررسی تمام پچهایی کردند که در گذشته از ایمیلهای وابسته به دانشگاه مینهسوتا ارسال شده بودند. بهگفتهیجاناتان کوربت، بنیانگذار و سردبیر LWN.net، بعد از بازبینی، «بیشتر پچهای مشکوک، قابل قبول بودند؛ اما عالی نبودند.» از بیش از ۲۰۰ پچی که مشخص شده بود، ۴۲ مورد قرار است از هسته کنار گذاشته شوند.
خواه واکنش انجمن لینوکس به این ماجرا موجه باشد خواه نباشد، این انجمن باید دربارهی ادامهی همکاری با دانشگاه مینهسوتا تصمیمگیری کند. طبق خواستهی شفاف این انجمن، این دانشگاه باید آنها را متقاعد کند پچهای آینده قرار نیست باعث اتلاف وقت توسعهدهندگان شود؛ اما این دانشگاه برای متقاعد کردن انجمن کرنل لینوکس و بازگشت به این پروژه دقیقا باید چه کار کند؟
درست همان روزی که دانشگاه از پروژه کنار گذاشته شد، واحد علوم کامپیوتر آن اعلام کرد تحقیقات مربوط به امنیت کرنل لینوکس را متوقف کرده و در حال پیگیری روش پژوهش لو و دستیارانش است.
اما این برای بنیاد لینوکس کافی نبود. مایک دولان، معاون ارشد بنیاد لینوکس و مدیر کل پروژهها، در نامهای به دانشگاه چهار خواسته را مطرح کرد:
- دانشگاه باید تمام اطلاعات لازم برای شناسایی تمام کدهای آسیبپذیر پیشنهادی را برای کمک به روند بازبینی منتشر کند.
- مقالهی مربوط به کامیتهای فریبنده از انتشار خارج شود.
- تمام آزمایشهای آیندهی دانشگاه باید مورد بازبینی هیئت بررسی نهادی (IRB) که مسئول تأیید روشهای پژوهشی از منظر اخلاقی است، قرار گیرند.
- بازبینیهای آینده IRB باید تأیید کند شرکتکنندگان در این آزمایشها طبق قوانین معمول تحقیقات، رضایت کامل داشتهاند.
از آن روز تاکنون دو مورد از این خواستهها محقق شده است. لو مقالهی خود را پس گرفته و تمام جزئیات مربوط به مطالعهی خود را منتشر کرده است.
اما وضعیت دانشگاه در مورد دو خواستهی دیگر هنوز مشخص نیست. در نامهای که واحد علوم کامپیوتر دانشگاه به بنیاد لینوکس فرستاد، تأکید شده است که هیئت بررسی نهادی دانشگاه در مورد این قضیه کار خود را بهدرستی انجام داده است و معتقد است برداشت این بنیاد از «آزمایش انسانی» با آنچه در مقررات فدرال آمریکا آمده، متفاوت است. البته در این نامه عنوان شد دانشگاه متعهد میشود آموزشهای اخلاقی بیشتری برای اعضای هیئت علمی خود در نظر بگیرد.
از آن طرف، لو و دو دستیارش در نامهای سرگشاده از انجمن لینوکس عذرخواهی کردند و در عین حال به دفاع از کار خود پرداختند:
اشتباه ما این بود که راهی برای مشورت کردن با انجمن و اجازه گرفتن از آنها پیش از انجام آزمایش پیدا نکردیم. ما این کار را به این خاطر انجام دادیم که میدانستیم اگر از نگهدارندگان اجازه بگیریم، حواسشان به پچهای ما جمع میشود.
آنها در ادامه تکرار کردند که هیچ حفرهی امنیتی را به کرنل لینوکس وارد نکردند و پچهای دیگر آنها هیچ ارتباطی با مطالعات آنها روی کامیتهای فریبنده نداشته است.
اما هارتمن گفتههای آنها را نادیده گرفت و تأکید کرد تا زمانیکه آن دو خواستهی دیگر محقق نشده است، هیچ حرفی بین آنها باقی نمیماند.
اما در این ماجرا حق با چه کسی است؟ آیا دانشگاه مینهسوتا واقعا از خط قرمز عبور کرده یا بنیاد لینوکس در مورد این قضیه بیش از حد واکنش نشان داده است؟
از منظر پژوهشگران دانشگاه، هدف از این آزمایش «سر کار گذاشتن» کسی نبوده است. آنها فقط سعی داشتند مشکلی که در فرایند بازبینی نگهدارندگان کرنل لینوکس بود به آنها نشان بدهند. برخی توسعهدهندگان این دیدگاه دانشگاه را کاملا رد کردند و مدعی شدند اینکه فریب دادن نگهدارندگان در پروژههای متن باز ممکن است، امری کاملا بدیهی است و نیازی به آزمایش و اثبات ندارد.
برخی از توسعهدهندگان نیز معتقدند با تمام خشمی که این آزمایش برانگیخت، نکتهای که در مورد کامیتهای فریبنده نشان داد، مورد قبول افراد بسیاری واقع شده است.
این ماجرا بحثهای داغی در توییتر و فرومها در مورد سیاستهای پذیرش پچ و نحوهی برخورد نگهدارندگان با پچهای ارسالی از داوطلبان جدید برانگیخته است. بهگفتهیکریستوف هِلویگ، یکی از نگهدارنگان کرنل لینوکس:
نمایش چنین «حملهای» باید مدتها پیش صورت میگرفت و حالا بحث بسیار مهمی را شروع کرده است. به نظر من باید به آنها مدال افتخار داد.
ماجرای دانشگاه مینهسوتا اطمینان برخی توسعهدهندگان را نسبت به امنیت این سیستم عامل بیشتر کرده است
کاربری دیگر در پستی نوشت: «این پژوهش بهوضوح غیر اخلاقی بود؛ اما نشان داد مدل توسعهی سیستمهای عامل در برابر کامیتهای مخرب، آسیبپذیر است.»
کوربت هم در پستی دربارهی این حادثه خواستار بررسی بیشتر در مورد تغییرات جدید شد. «اگر ما نتوانیم فرایند دقیقتری را نهادینه کنیم، همچنان با باگهای بسیاری روبهرو خواهیم شد و اهمیتی نخواهد داشت این باگها بهطور عامدانه وارد سیستم شدهاند یا غیر عامدانه.»
برخی نیز معتقدند روشی که دانشگاه مینهسوتا برای اثبات آسیبپذیری پروژهی کرنل لینوکس به کار برد، حتی برای منتقدان سرسخت آن، نکتهی مهمی را اثبات کرد؛ البته نکتهای خلاف آنچه لو و گروهش سعی در نشان دادن آن داشتند: اینکه سیستم بازبینی این پروژه کار خود را بهدرستی انجام میدهد.
اریک مینتز که مدیریت ۲۵ سرور لینوکس را در اختیار دارد، میگوید اخراج دانشگاه مینهسوتا از پروژهی کرنل لینوکس اطمینان او را به امنیت این سیستم عامل بیشتر کرده است؛ چون این انجمن متوجه این قضیه شده و جلوی آن را گرفته است.
اسکات هم همین عقیده را دارد. از نظر او، اینکه از ادامهی آزمایشها این پژوهشگران جلوگیری شد نشاندهندهی این است که عملکرد سیستم لینوکس دقیقا همانی است که از آن انتظار میرود. «این سیستم جواب میدهد. دیدیم که روش شرکت SolarWinds که پشت آن سازمان بزرگی قرار دارد، جواب نداد؛ اما این سیستم چرا.»
اسکات به حملهی سایبری گسترده به SolarWinds، شرکت بزرگ فناوری اطلاعات آمریکایی، اشاره داشت که در آن هکرها با وارد کردن کدهای مخرب به پچهای بهروزرسانی سیستم این شرکت، ماهها فعالیتهای کارکنان این شرکت را بدون اینکه ردیابی شوند، زیر نظر داشتند.
اسکات معتقد است عذرخواهی دانشگاه مینهسوتا صادقانه نبوده و تا زمانیکه آنها واقعا از کار خود ابراز پشیمانی نکردهاند، اعتماد دوبارهای بین آنها شکل نخواهد گرفت. «برای جلب اعتماد ما راه درازی در پیش دارند. امیدوارم برای طی کردن این راه آمادگی داشته باشند.»
نظر شما کاربر زومیت در مورد این ماجرا چیست؟ آیا حق با دانشگاه مینهسوتا است و روش مطالعهی آنها در راستای بهبود امنیت پروژهی کرنل لینوکس مؤثر بوده؟ یا واکنش انجمن توسعهدهندگان لینوکس به این ماجرا کاملا موجه است؟