نجات دنیا در تعطیلات؛ چگونه بزرگترین هک لینوکس خنثی شد؟

فروند، که داوطلب نظارت بر پایگاه داده لینوکس PostgreSQL است، در چند هفته گذشته هنگام اجرای یک سری آزمایش برای بهبود عملکرد سیستم خود متوجه چیز عجیبی شد. او متوجه شد که لاگین های رمزگذاری شده در liblzma، که بخشی از کتابخانه فشرده XZ است، CPU زیادی مصرف می کند، اما هیچ یک از برنامه های تست عملکرد او دلیل مصرف CPU را نشان نداد. او بلافاصله به این مشکوک شد و به یاد آورد که چند هفته پیش یکی از کاربران Postgres یک “شکایت عجیب” داشت که Valgrind، یک برنامه لینوکس که خطاهای حافظه را بررسی می کند، کار نمی کرد.

پس از بررسی دقیق، فروند سرانجام متوجه شد که در کجا به زمین می خورد. او در ایمیل خود نوشت: “مخزن بالادست XZ و توپ های XZ تار در پشتی آلوده شده اند.” این کد مخرب به نسخه های 5.6.0 و 5.6.1 XZ Tools and Libraries راه پیدا کرد.

هشدار به موقع فروند از یک فاجعه بزرگ جلوگیری کرد

مدت کوتاهی پس از دریافت ایمیل فروند، شرکت نرم‌افزار متن‌باز Red Hat یک هشدار امنیتی اضطراری به کاربران Fedora Rawhide و Fedora Linux 40 صادر کرد تا از استفاده برای استفاده تجاری و شخصی خودداری کنند. این شرکت به این نتیجه رسید که فدورا لینوکس 40 بتا حاوی هر دو نسخه آلوده کتابخانه XZ است. بیلدهای Fedora Rawhide نیز احتمالاً یکی از این دو نسخه تحت تأثیر را دریافت کرده اند.

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

درب پشتی XZ از طریق یک حمله به اصطلاح زنجیره تامین نرم افزار راه خود را به XZ Utils پیدا کرد. این مدل حمله که مستقیماً زنجیره تأمین محصول نرم افزار را هدف قرار می دهد، اغلب از روش های پیچیده ای مانند مهندسی اجتماعی برای تغییر کد منبع برنامه استفاده می کند. به عنوان مثال، دسترسی غیرمجاز به سیستم توسعه‌دهنده یا دسترسی کاملاً مجاز از طریق زنجیره تأمین یک توسعه‌دهنده مخرب، منبع را آلوده می‌کنند.

فروند بعداً مقصر اصلی درب عقب XZ را شناسایی کرد. به گفته Ars Technica، این شخص خود را Jia Tan با نام کاربری JiaT75 می نامد. این شخص در واقع یکی از توسعه دهندگان اصلی نرم افزار XZ Utils بود.

همه اینها تحت نظارت یکی از توسعه دهندگان اصلی XZ Utils بود

فروند در جستجوی شواهدی برای شناسایی هکر نوشت: «با قضاوت بر اساس فعالیت‌هایی که در چند هفته گذشته رخ داده است، یا شخص اشتباهی مستقیماً درگیر است یا سیستم او با یک آسیب‌پذیری امنیتی بسیار جدی مواجه شده است.» متأسفانه، دومی به احتمال بسیار کمتر، همانطور که او صحبت کرد این شخص در مورد “اصلاحات” ذکر شده در بالا در چندین لیست است.

جیا تان این نام آشنا در میان جوامع پروژه منبع باز لینوکس است. با بود لیسی کالن، توسعه دهنده اصلی فرمت فایل xz. این یک همکاری نزدیک بود. Tan در اکتبر 2021 شروع به ارسال وصله‌های ظاهرا معتبر به لیست پستی XZ کرد. چند ماه بعد، دو کاربر دیگر به نام‌های Jaigar Kumar و Dennis Enes شروع به شکایت در مورد اشکالات و توسعه کند پروژه XZ در ایمیل‌هایی به Colin کردند. اما نکته مهم این است که کومار و انس در جای دیگری جز انجمن XZ حضور نداشتند. افرادی که فایل Backdoor لینوکس را بررسی کردند به این نتیجه رسیدند که این دو نام کاربری جعلی هستند و فقط برای اجازه دسترسی جیا تان به کد منبع پروژه ایجاد شده اند.

دو نام کاربری جعلی باعث شد توسعه دهنده اصلی جیا تان را انتخاب کند

انس در نامه ای به کولین نوشت: «برای مشکلات روحی شما متاسفم، اما مهم است که محدودیت های خود را بدانید. من متوجه هستم که این یک پروژه چالش برانگیز برای همه ذینفعان است، اما جامعه کاربران مشتاقانه منتظر تکمیل آن هستند.”

در میان این مکاتبات، کالین نوشت: “علاقه ام به تکمیل پروژه را از دست نداده ام، اما توانایی من برای ادامه پروژه به دلیل مشکلات روحی و عوامل دیگر کاهش یافته است.” بعداً او به جیا تان پیشنهاد کرد که نقش برجسته تری در تکمیل پروژه داشته باشد. وی در پایان خاطرنشان کرد: این طرح صرفا جنبه تفریحی دارد و درآمدزایی ندارد.

بخوانید  تریلر داستان بازی Starfield در رویداد Xbox

ایمیل های کومار و انس ادامه یافت تا اینکه جیا تان در اواخر همان سال به عنوان سرپرست پروژه منصوب شد. اکنون می تواند تغییراتی در کد منبع ایجاد کند و بسته درب پشتی را با اطمینان بیشتری به توزیع های لینوکس منتقل کند.

عملیات درب پشتی XZ بسیار حرفه ای و کاملاً محاسبه شده بود و کد مخرب آنقدر پیچیده طراحی شده بود که هدف و کاربرد آن هنوز در دست بررسی است.

به گفته یکی از مدیران فناوری اطلاعات در شرکت حقوق دیجیتال Electronic Frontier Foundation، «تلاشی که برای پنهان کردن درب پشتی در فایل‌های باینری آزمایشی انجام شد، و همچنین زمان طولانی برای به دست آوردن اعتبار در یک پروژه منبع باز قبل از دستکاری آن». . این به طرز مضحکی پیچیده است.» اما هنوز مشخص نیست که آیا این عملیات از سوی یک دولت خاص، یک گروه هکر، یک توسعه دهنده یا ترکیبی از هر سه بوده است.

زشتی و زیبایی پروژه های متن باز

داستان Backdoor XZ نمونه خوبی از زیبایی پروژه های متن باز و در عین حال آسیب پذیری وحشتناک زیرساخت اینترنت است.

در دنیای برنامه نویسی متن باز لینوکس و البته در توسعه XZ Utils، همکاری بین توسعه دهندگان از طریق گروه های ایمیل و مخازن کد صورت می گیرد. تان به listserv پست کرد، با کالین صحبت کرد و تغییراتی در کد در مخزن کد GitHub متعلق به مایکروسافت ایجاد کرد. از سوی دیگر، چند کاربر دیگر بر انتخاب Tan به عنوان ناظر پروژه اصرار داشتند و گروهی دیگر در لیست سرورهای دبیان اصرار داشتند که نسخه آلوده XZ Utils در این توزیع قرار گیرد.

به احتمال زیاد این فرآیند نوعی مهندسی اجتماعی بوده و کاملا حساب شده بوده است

در همین حال، توسعه دهنده یک بسته رسانه ای منبع باز محبوب به نام FFmpeg در مورد مشکل پروژه های منبع باز در توییت او نوشت: “تخریب xz به ما نشان داد که چگونه تکیه بر توسعه دهندگانی که داوطلبانه روی یک پروژه به صورت رایگان کار می کنند، می تواند مشکلات بزرگی ایجاد کند.” “شرکت های بزرگ چند تریلیون دلاری انتظار کار رایگان و سریع از توسعه دهندگان داوطلب دارند.” تصمیم گرفتیم باگ موجود در ابزار FFmpeg را برای تیم های مایکروسافت به عنوان “اولویت بالا” طبقه بندی کنیم و از توسعه دهندگان داوطلب انتظار داشته باشیم که این اشکال را در سریع ترین زمان ممکن و به جای دستمزد ثابت، فقط برای این پروژه برطرف کنند. چند هزار دلار دریافت کنید.

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

البته ممکن است فکر کنید که احتمال وجود چنین آسیب پذیری های مهم نرم افزاری فقط مربوط به پروژه های متن باز است، اما حقیقت این است که این داستان در هر شرایط دیگری می تواند اتفاق بیفتد. همچنین فراموش نکنیم که توسعه‌دهنده‌ای مانند Anders Freund توانست در اوقات فراغت خود و قبل از توزیع نرم‌افزار آلوده، متوجه این درب پشتی فاجعه‌بار شود، تنها به لطف منبع باز بودن پروژه.

چگونه می توانیم مطمئن شویم که سیستم ما توسط یک درب پشتی XZ آلوده نشده است؟

برای بررسی سلامت سیستم خود، می توانید به صفحه شرکت امنیت سایبری Binarly مراجعه کنید تا با آپلود یک فایل ELF به طور خودکار عفونت باطن XZ را شناسایی کنید. همچنین می توانید از پروژه xzbot در Gitbot استفاده کنید.


تحریریه مجله بازی یک گیمر