یک توسعهدهنده از تیم مایکروسافت، در حال استراحت در زمان تعطیلات عید پاک، با کشف یک آسیبپذیری بسیار خطرناک در XZ Utils، یکی از ابزارهای فشردهسازی محبوب در سیستمعاملهای لینوکس و ویندوز، مواجه شد و به فاجعه امنیتی گستردهای جلوگیری کرد. این آسیبپذیری میتوانست منجر به حملاتی بسیار وسیع شود که سیستمهای لینوکس و ویندوز را در سراسر جهان تحت تهدید قرار دهد.
هک بزرگ لینوکس خنثی شد
به نقل از آندرس فریوند، این آسیبپذیری در هنگام بهینهسازی کامپیوتر او کشف شد و توسعهدهندگان آن متوجه بکدوری عمیق در کد XZ Utils شدند. این بکدور، که به نظر میرسد سالها در کد این ابزار وجود داشته، تنها با یک کلید خاص قابل کشف بود که از دید برنامههای ضدویروس عادی پنهان میماند.
فیلیپو والسوردا، مهندس نرمافزار، این آسیبپذیری را “یکی از بهترین حملات زنجیرهای” توصیف کرده است و تأکید کرده که اگر کشف نمیشد، میتوانست به یک فاجعه کامل تبدیل شود. این آسیبپذیری در نسخههای مجاز ابزار وجود داشت که قرار بود در کتابخانههای بسیاری از سیستمها قرار بگیرد.
شروع ماجرا؛ نجات دنیا در اضافهکاری
داستان کشف بکدور XZ اوایل صبح روز ۲۹ مارس (۱۰ فروردین) آغاز شد، زمانی که یک توسعهدهنده از مایکروسافت به نام آندرس فرویند که در سانفرانسیسکو مستقر بود، در شبکه اجتماعی Mastodon اطلاعاتی را دربارهی آن اعلام کرد و ایمیلی با موضوع «بکدور در نسخهی آپاستریم xz/liblzma که سرور ssh را در معرض خطر قرار میدهد» را به لیست پستی OpenWall ارسال کرد.
آغاز کشف بکدور XZ به صورت داوطلبانه توسط آندرس فرویند، که به نظارت بر دیتابیس لینوکسی PostgreSQL مشغول است، در چند هفتهی اخیر و هنگام انجام تستهایی برای بهینهسازی عملکرد سیستم خود، آغاز شد. او اتفاقات عجیبی را مشاهده کرد که لاگینهای رمزنگاری شده در liblzma، بخشی از کتابخانهی فشردهسازی XZ، مصرف بالایی از CPU داشتند، اما هیچ یک از نرمافزارهای تست عملکرد او این مصرف بالا را توضیح نمیدادند. این واقعه مشکوک کردنی بود و یادآوری شد که چند هفته قبل، یکی از کاربران Postgres در مورد ناتوانی Valgrind، برنامهی لینوکسی برای بررسی خطاهای حافظه، “عجیبی” شکایت کرده بود.
پس از بررسی دقیق، فرویند متوجه شد که مشکل از کجا ناشی شده است. او اعلام کرد که “مخزن آپاستریم XZ و تاربالهای XZ به بکدور آلوده شدهاند.” کد مخرب به نسخههای 5.6.0 و 5.6.1 ابزارها و کتابخانههای XZ نفوذ کرده بود.
هشدار به موقع فرویند از این موضوع جلوگیری کرد. کمی پس از دریافت ایمیل او، شرکت نرمافزار متنباز Red Hat هشدار امنیتی فوری برای کاربران Fedora Rawhide و Fedora Linux 40 ارسال کرد تا از استفاده از این دو نسخه خودداری کنند. این شرکت به نتیجه رسید که نسخهی بتای Fedora Linux 40 حاوی هر دو نسخهی آلوده از کتابخانهی XZ است. همچنین به احتمال زیاد، نسخههای Fedora Rawhide نیز یکی از این دو نسخهی آلوده را دریافت کرده بودند.
همچنین، نسخهی بتای Debian نیز حاوی پکیجهای آلوده بود، اما خوشبختانه تیم امنیتی فوراً برای بازگرداندن آن به نسخهی قبل اقدام کرد. در پیام هشدار امنیتی آمده بود که “در حال حاضر هیچ نسخهی پایدار Debian به این بکدور آلوده نشده است.”
بکدور XZ از طریق یک روش مشهور به “حمله به زنجیرهی تامین نرمافزار” کشف شد. این نوع حمله، که معمولاً از روشهای پیچیدهای مثل مهندسی اجتماعی برای تغییر کد منبع برنامه استفاده میکند، به طور مستقیم به زنجیرهی تامین محصولات نرمافزاری هدف قرار میدهد. به عنوان مثال، با دسترسی به سیستم توسعهدهنده یا با استفاده از توسعهدهندهی خرابکار، زنجیرهی تامین را آلوده میکند.
خرابکار باهوش و صبور؛ عملیات بسیار پیچیده
فرویند بعدها متوجه شد که مقصر اصلی بکدور XZ هیچ کس دیگری نبود جز Jia Tan با نام کاربری JiaT75، که طبق گزارش Ars Technica، او یکی از دو توسعهدهندهی اصلی نرمافزار XZ Utils بود.
همه چیز زیر سر یکی از دو توسعهدهندهی اصلی XZ Utils بود. فرویند در حالی که دنبال ردپای هویت هکر بود، نوشت: “با توجه به فعالیتهایی که در چند هفتهی گذشته اتفاق افتاده، آیا فرد متهم مستقیماً درگیر است یا سیستمش با یک آسیبپذیری بسیار جدی روبهرو شده است. متأسفانه احتمال دوم خیلی کمتر است، زیرا این فرد در مورد چندین برنامهی “فیکس” که در بالا اشاره شد، بحث کرده است.”
ژیا تان یک شخصیت آشنا در انجمنهای پروژههای متنباز لینوکسی بود؛ او برای مدتی با لسی کالین، توسعهدهندهی اولیهی فرمت فایل xz، همکاری نزدیکی داشت. تان کار خود را با ارسال پچهای قابل قبول به لیست پستی XZ در اکتبر ۲۰۲۱ آغاز کرد. چند ماه بعد، دو کاربر دیگر به نامهای Jagar Kumar و Dennis Enz در ایمیلهایی به کالین در مورد باگها و فرآیند کند توسعه پروژه XZ شکایت کردند.
اما نکته اینجا بود که کومار و انس در جایی به جز انجمن XZ حضور نداشتند. افرادی که پروندهی بکدور لینوکس را بررسی میکردند به این نتیجه رسیدند که این دو نام کاربری جعلی است که صرفاً برای این ایجاد شده بود تا ژیا تان بتواند به کد منبع پروژه دسترسی پیدا کند.
در پیامی به کالین، انس نوشت: “از بابت مشکلات روانیت پوزش میخواهم، اما مهم است که حد خودت را بشناسی. میفهمم که این پروژه برای تمامی مشارکتکنندگان، یک پروژه فنی مهم است، اما انجمن کاربران بیصبر منتظر تکمیل آن هستند.” همچنین، کومار در پیام دیگری نوشت: “تا زمانی که مسئول نگهداری جدیدی برای پروژه انتخاب نشود، پیشرفتی صورت نخواهد گرفت.”
در میان این نامهنگاریها، کالین اظهار کرد که “علاقهام به تکمیل پروژه از دست نرفته، اما توانم برای ادامهی پروژه به دلیل مشکلات روانی و دیگر موارد کمتر شده است.” سپس به ژیا تان پیشنهاد داد نقش مهمتری در تکمیل پروژه را بپذیرد. در پایان، او اشاره کرد که “این پروژه صرفاً برای سرگرمی است و درآمدی ندارد.”
ایمیلها از سوی کومار و انس ادامه یافت تا زمانی که در اواخر سال، ژیا تان به عنوان مسئول نگهداری پروژه انتخاب شد. حالا او میتوانست تغییراتی در کد منبع اعمال کند و بستهی بکدور را با اعتبار بیشتری به توزیعهای لینوکس منتقل کند.
عملیات بکدور XZ با حرفهایترین روشها و به طور کاملاً محاسبه شده انجام شد و کد مخرب نیز به اندازه کافی پیچیده طراحی شده بود که هدف و کاربرد دقیق آن هنوز در حال بررسی است.
بهگفتهی مدیر فناوری اطلاعات شرکت حقوق دیجیتال Electronic Frontier Foundation، “تلاش برای پنهان کردن بکدور در فایلهای تست باینری و همچنین صبر طولانی برای بهدست آوردن اعتبار در پروژهی متنباز تا زمانی که بتوان آن را دستکاری کرد، بهطرقی عجیب و پیچیده است. اما هنوز مشخص نیست که این عملیات از سوی یک دولت خاص، یک گروه هکری، یک توسعهدهنده تنها یا ترکیبی از این سه مورد بوده است.”
زشتی و زیبایی پروژههای متنباز
ماجرای بکدور XZ نمونهای روشن از زیبایی و همزمان آسیبپذیریهای وحشتناک زیرساختهای اینترنت است.
در جهان متنباز، همکاری بین برنامهنویسان از طریق گروههای ایمیل و مخازن کد صورت میگیرد. تان پستی در listserv ارسال کرد، با کالین چت کرد و تغییرات کد را در مخزن کد گیتهاب که به مایکروسافت تعلق داشت، اعمال کرد. از سوی دیگر، چندین کاربر دیگر برای انتخاب تان بهعنوان مسئول نگهداری پروژه دست به پافشاری زدند و گروه دیگری در listserv مخصوص توزیع Debian برای قرارگرفتن نسخهی آلودهی XZ Utils در این توزیع تلاش کردند.
احتمالاً فرد یا افراد پشت این عملیات کاملاً عامدانه از تکنیک پیچیدهی مهندسی اجتماعی برای آلوده کردن XZ Utils به بکدور استفاده کردند؛ اما این امر همچنین ممکن است صرفاً تصادفی باشد.
در این میان، توسعهدهندهی یکی از پکیجهای رسانهای متنباز معروف به نام FFmpeg در یک توییت نگرانی خود را ابراز کرد: “فاجعهی xz به ما نشان داد که چطور متکیبودن به توسعهدهندگانی که به طور داوطلبانه و رایگان روی پروژهای کار میکنند، میتواند مشکلات بزرگی به بار آورد. شرکتهای بزرگ از توسعهدهندگان داوطلب انتظار کار رایگان و سریع دارند.” این توسعهدهنده بهواضح به مایکروسافت اشاره کرد که چگونه برای باگی که در ابزار FFmpeg برای تیمهای مایکروسافت پیدا شده بود، برچسب “اولویت بالا” زده و انتظار دارد توسعهدهندگان داوطلب در اسرع وقت این باگ را برطرف کنند و بجای حقوق ثابت، فقط چند هزار دلار برای این پروژه دریافت کنند.
جزئیات مربوط به اینکه دقیقاً چه کسی پشت نام کاربری JiaT75 است، چطور توانسته است این عملیات را اجرا کند و میزان آسیب وارده همچنان توسط یک ا
رتش از توسعهدهندگان و متخصصان امنیت سایبری در حال بررسی است؛ اما حتی این بررسیها هم بدون حمایت مالی مستقیم بسیاری از شرکتها و سازمانها صورت میگیرد که امنیت نرمافزارهای متنباز برای آنها اولویت است.
شاید فکر کنید احتمال بروز آسیبپذیریهای اینچنینی فقط به پروژههای متنباز مربوط شود، اما واقعیت این است که این ماجرا میتواند در هر شرایط دیگری رخ دهد. همچنین، فراموش نکنید که توسعهدهندهای مانند آندرس فریوند توانست در وقت استراحت خود و قبل از توزیع نرمافزار آلوده، این بکدور فاجعهآمیز را کشف کند، که فقط به لطف ماهیت متنباز پروژه بود.
از کجا مطمئن شویم سیستم ما به بکدور XZ آلوده نشده است؟
برای اطمینان از سلامت سیستم خود، به صفحهی شرکت امنیت سایبری Binarly مراجعه کنید. این شرکت امکان آپلود یک فایل با فرمت ELF را فراهم کرده است تا آلودگی به بکدور XZ بهطور خودکار تشخیص داده شود. همچنین، میتوانید از پروژهی xzbot در گیتبات استفاده کنید.
نظرات کاربران