کالبدشکافی حملات زنجیره تامین در نرمافزارهای متنباز و راهکارهای دفاعی
نفوذ به مخازن کدهای متنباز از طریق مسمومسازی بستهها و وابستگیهای پنهان، به یکی از چالشهای اصلی امنیت سایبری تبدیل شده است. استفاده از امضاهای دیجیتال و فهرست مواد نرمافزاری (SBOM) میتواند شفافیت و امنیت این زنجیره را تضمین کند.
به قلم نیما موسوی
این خبر را به اشتراک بگذارید
بهطور خلاصه
- حملات زنجیره تامین از طریق تکنیکهایی مانند تایپواسکواتینگ و مسمومسازی بستهها، کدهای مخرب را در دل وابستگیهای نرمافزاری پنهان میکنند.
- فهرست مواد نرمافزاری (SBOM) شفافیت لازم را برای شناسایی اجزای آسیبپذیر فراهم میکند، اما به تنهایی قادر به مسدودسازی حملات نیست.
- چارچوبهایی مانند SLSA و ابزارهایی نظیر Sigstore با استفاده از امضاهای دیجیتال، یکپارچگی کدها را از مرحله توسعه تا استقرار تضمین میکنند.
در این مطلب
تیمهای امنیتی و نگهدارندگان مخازن نرمافزاری، تصمیمگیرندگان نهایی در خط مقدم توسعه سیستمهای مدرن هستند. آنها هر روز باید تعیین کنند که کدام قطعه کد خارجی اجازه ورود به زیرساختهای حیاتی را دارد و چه زمانی باید چرخه استقرار خودکار را متوقف کنند.[1]
این تصمیمگیری در اکوسیستم متنباز، جایی که میلیونها توسعهدهنده کدهای خود را به اشتراک میگذارند، به یک چالش پیچیده تبدیل شده است. توانایی واقعی این تیمها برای بررسی خط به خط کدهای وارداتی بسیار محدود است و اغلب به ابزارهای خودکار اسکن آسیبپذیری تکیه میکنند.[2]
با این حال، اسکنرهای سنتی تنها به دنبال باگهای شناختهشده میگردند و در برابر کدهایی که از ابتدا با نیت مخرب نوشته شدهاند، کور هستند. این نقطه کور، راه را برای نسل جدیدی از تهدیدات سایبری باز کرده است که مستقیماً زنجیره تامین نرمافزار را هدف قرار میدهند.[3]
در این مدل از حملات، هکرها به جای تلاش برای نفوذ مستقیم به سرورهای یک سازمان، کدهای مخرب خود را در کتابخانههای متنبازی که آن سازمان استفاده میکند، جاسازی میکنند. این روش به آنها اجازه میدهد تا با یک بار نفوذ، به هزاران هدف مختلف دسترسی پیدا کنند.[4]
توهم امنیت در کدهای رایگان
یکی از رایجترین روشهای نفوذ در این زنجیره، تکنیکی به نام «تایپواسکواتینگ» (Typosquatting) است. در این روش، مهاجمان بستههای نرمافزاری مخربی را با نامهایی بسیار شبیه به بستههای محبوب در مخازنی مانند انپیام (npm) یا پایپای (PyPI) ثبت میکنند.[4]
برای مثال، اگر یک کتابخانه پرکاربرد به نام «requests» وجود داشته باشد، مهاجم ممکن است بستهای با نام «requets» منتشر کند. توسعهدهندگانی که در هنگام تایپ نام بسته دچار اشتباه میشوند، بدون اینکه متوجه شوند، کد مخرب را دانلود و وارد پروژه خود میکنند.[4]
گزارشهای شرکت سوناتایپ (Sonatype) در سال ۲۰۲۴ نشان میدهد که تنها در یک سال گذشته، بیش از ۲۴۵ هزار بسته مخرب در مخازن متنباز شناسایی شده است. این آمار نشاندهنده رشد تصاعدی این نوع حملات و تبدیل شدن آن به یک صنعت سازمانیافته برای مجرمان سایبری است.[4]
فراتر از اشتباهات تایپی، روش پیچیدهتری به نام «مسمومسازی بسته» (Package Poisoning) وجود دارد. در این سناریو، مهاجمان موفق میشوند کنترل حساب کاربری یکی از توسعهدهندگان معتبر یک پروژه متنباز را به دست بگیرند و کدهای مخرب را مستقیماً در بهروزرسانیهای رسمی قرار دهند.[1]
این اتفاق معمولاً از طریق حملات فیشینگ، استفاده از رمزهای عبور ضعیف یا عدم فعالسازی احراز هویت دومرحلهای رخ میدهد. هنگامی که کد مخرب با امضای یک توسعهدهنده معتبر منتشر میشود، سیستمهای امنیتی سازمانها آن را به عنوان یک بهروزرسانی مشروع میپذیرند.[2]
کالبدشکافی یک نفوذ خاموش
نمونه بارز این نوع نفوذ، کشف در پشتی (Backdoor) در ابزار فشردهسازی «ایکسزد یوتیلز» (XZ Utils) در اوایل سال ۲۰۲۴ بود. در این رویداد، یک مهاجم با هویت جعلی توانست در طول دو سال اعتماد نگهدارنده اصلی پروژه را جلب کند و دسترسیهای لازم برای اعمال تغییرات را به دست آورد.[5]
این مهاجم به آرامی و با حوصله، کدهای مخربی را وارد پروژه کرد که میتوانست به او اجازه دسترسی از راه دور به میلیونها سرور لینوکسی در سراسر جهان را بدهد. این نفوذ تنها به دلیل هوشیاری یک مهندس نرمافزار که متوجه کندی ۵۰۰ میلیثانیهای در فرآیند ورود به سیستم شده بود، کشف شد.[5]
این رویداد نشان داد که تکیه صرف بر مفهوم «چشمهای بسیار» در نرمافزارهای متنباز، تضمینکننده امنیت نیست. در واقع، بسیاری از پروژههای حیاتی که زیرساختهای اینترنت را تشکیل میدهند، تنها توسط یک یا دو داوطلب بدون دریافت دستمزد نگهداری میشوند.[1]
این فشار کاری و کمبود منابع، نگهدارندگان پروژهها را در برابر مهندسی اجتماعی و پیشنهادهای کمک از سوی افراد ناشناس آسیبپذیر میکند. مهاجمان از این خستگی سوءاستفاده کرده و خود را به عنوان مشارکتکنندگان فعال و دلسوز جا میزنند.[5]
هنگامی که این افراد به سطح دسترسی لازم میرسند، تغییرات مخرب خود را در میان هزاران خط کد مشروع پنهان میکنند. این تغییرات به گونهای طراحی میشوند که در بررسیهای سطحی عادی به نظر برسند و تنها در شرایط خاصی فعال شوند.[3]
بحران وابستگیهای پنهان
چالش دیگر در زنجیره تامین نرمافزار، مسئله وابستگیهای پنهان یا غیرمستقیم است. یک برنامه مدرن ممکن است به طور مستقیم تنها از ۵۰ کتابخانه متنباز استفاده کند، اما هر یک از آن کتابخانهها خود به دهها کتابخانه دیگر وابسته هستند.[4]
این زنجیره وابستگیها میتواند به سرعت به درختی با هزاران شاخه تبدیل شود که توسعهدهنده اصلی هیچ کنترل یا دیدی نسبت به اعماق آن ندارد. اگر تنها یکی از این کتابخانههای کوچک در انتهای زنجیره آلوده شود، کل برنامه نهایی به خطر میافتد.[4]
برای مقابله با این بحران، آژانس امنیت سایبری و امنیت زیرساخت آمریکا (CISA) استفاده از «فهرست مواد نرمافزاری» (SBOM) را به عنوان یک استاندارد ضروری معرفی کرده است. این فهرست، دقیقاً مانند برچسب مواد تشکیلدهنده روی بستهبندی مواد غذایی عمل میکند.[2]
یک اسبام (SBOM) شامل لیستی جامع از تمام اجزا، کتابخانهها و وابستگیهای استفاده شده در یک نرمافزار، همراه با نسخههای دقیق آنها است. این شفافیت به سازمانها اجازه میدهد تا در زمان کشف یک آسیبپذیری جدید، به سرعت متوجه شوند که آیا نرمافزارهای آنها تحت تأثیر قرار گرفتهاند یا خیر.[2]
با این حال، بازاریابی پیرامون اسبام گاهی گمراهکننده است. برایان فاکس، مدیر ارشد فناوری در سوناتایپ، میگوید: «اسبام به تنهایی هیچ حملهای را متوقف نمیکند؛ این تنها یک نقشه راه است که به شما میگوید چه چیزی در سیستم شما وجود دارد.» اثربخشی آن کاملاً به توانایی سازمان در تحلیل این دادهها بستگی دارد.[4]
فهرست مواد نرمافزاری و محدودیتهای آن
تولید اسبام به صورت دستی غیرممکن است و نیازمند ابزارهای خودکاری است که در فرآیند ساخت نرمافزار ادغام شوند. این ابزارها باید بتوانند به صورت پویا تغییرات در وابستگیها را ردیابی کرده و فهرست را در هر بار انتشار نسخه جدید بهروزرسانی کنند.[2]
چالش اصلی زمانی آغاز میشود که سازمانها با کوهی از دادههای تولید شده توسط اسبام مواجه میشوند. بدون وجود سیستمهای هوشمند برای فیلتر کردن هشدارهای کاذب و اولویتبندی آسیبپذیریها بر اساس میزان خطر واقعی، تیمهای امنیتی به سرعت دچار خستگی هشدار میشوند.[3]
علاوه بر این، اسبام نمیتواند تضمین کند که کدهای موجود در یک کتابخانه تغییر نکردهاند. برای حل این مشکل، صنعت به سمت استفاده از امضاهای دیجیتال و چارچوبهای تأیید هویت حرکت کرده است تا یکپارچگی کدها را از لحظه نوشته شدن تا زمان اجرا تضمین کند.[1]
بنیاد امنیت متنباز (OpenSSF) در این راستا چارچوبی به نام «سطوح زنجیره تامین برای مصنوعات نرمافزاری» (SLSA) را توسعه داده است. این چارچوب مجموعهای از دستورالعملها را ارائه میدهد که به سازمانها کمک میکند تا امنیت فرآیند ساخت و انتشار نرمافزار خود را ارزیابی کنند.[1]
چارچوب سلسا (SLSA) دارای چهار سطح مختلف است که از مستندسازی اولیه فرآیند ساخت شروع شده و تا الزام به استفاده از سیستمهای ساخت ایزوله و امضاهای رمزنگاری شده برای تمام اجزای نرمافزار پیش میرود.[1]
امضاهای دیجیتال و چارچوبهای دفاعی
یکی از پروژههای کلیدی در این زمینه، «سیگاستور» (Sigstore) است که تلاش میکند فرآیند امضای دیجیتال کدها را برای توسعهدهندگان متنباز ساده و رایگان کند. این ابزار با خودکارسازی مدیریت کلیدهای رمزنگاری، یکی از بزرگترین موانع در پذیرش امضاهای دیجیتال را از بین میبرد.[1]
با استفاده از سیگاستور، توسعهدهندگان میتوانند کدهای خود را با استفاده از هویتهای موجود مانند حسابهای گیتهاب یا گوگل امضا کنند. این امضاها در یک دفتر کل شفاف و غیرقابل تغییر ثبت میشوند که به هر کسی اجازه میدهد تا اصالت یک بسته نرمافزاری را تأیید کند.[1]
مؤسسه ملی فناوری استاندارد (NIST) نیز چارچوب توسعه نرمافزار امن (SSDF) را منتشر کرده است که بر ادغام شیوههای امنیتی در تمام مراحل چرخه حیات توسعه نرمافزار تأکید دارد. این چارچوب به جای تمرکز صرف بر ابزارها، بر تغییر فرهنگ مهندسی متمرکز است.[3]
بر اساس دستورالعملهای انآیاستی (NIST)، سازمانها باید محیطهای توسعه خود را ایزوله کرده و دسترسی به کدهای منبع را به شدت محدود کنند. همچنین، تمام تغییرات در کدها باید توسط حداقل یک توسعهدهنده دیگر بررسی و تأیید شود تا خطر کدهای مخرب داخلی کاهش یابد.[3]
با وجود تمام این استانداردها، پیادهسازی آنها در دنیای واقعی با مقاومتهایی روبرو است. بسیاری از توسعهدهندگان معتقدند که الزامات امنیتی سختگیرانه، سرعت نوآوری را کاهش داده و بار کاری مضاعفی را بر دوش نگهدارندگان داوطلب پروژههای متنباز تحمیل میکند.[5]
آینده امنیت در توسعه مشارکتی
برای حل این تعارض، شرکتهای بزرگ فناوری که بیشترین سود را از نرمافزارهای متنباز میبرند، شروع به سرمایهگذاری مستقیم در امنیت این اکوسیستم کردهاند. آنها با ارائه کمکهای مالی و اختصاص مهندسان امنیتی تماموقت، تلاش میکنند تا زیرساختهای حیاتی را تقویت کنند.[4]
این تغییر رویکرد نشاندهنده بلوغ صنعت نرمافزار است. سازمانها در حال درک این واقعیت هستند که استفاده از کدهای رایگان به معنای سلب مسئولیت امنیتی نیست و آنها باید در حفظ سلامت زنجیره تامینی که به آن وابسته هستند، مشارکت فعال داشته باشند.[4]
در نهایت، امنیت زنجیره تامین نرمافزار یک مشکل کاملاً فنی نیست که تنها با ابزارهای جدید حل شود. این یک چالش سیستمی است که نیازمند همکاری بین توسعهدهندگان مستقل، شرکتهای تجاری و نهادهای قانونگذار در سطح بینالمللی است.[3]
در نهایت، امنیت زنجیره تامین نرمافزار یک مشکل کاملاً فنی نیست که تنها با ابزارهای جدید حل شود.
تا زمانی که انگیزههای اقتصادی برای مجرمان سایبری وجود دارد، حملات به مخازن متنباز ادامه خواهد یافت و پیچیدهتر خواهد شد. دفاع مؤثر در برابر این تهدیدات، نیازمند گذار از رویکرد واکنشی به یک معماری امنیتی پیشگیرانه و شفاف در تمام سطوح توسعه است.[5]
تیمهای امنیتی باید بپذیرند که هیچ کدی، حتی اگر از معتبرترین مخازن دانلود شده باشد، به طور پیشفرض قابل اعتماد نیست. معماری «اعتماد صفر» (Zero Trust) باید از سطح شبکهها فراتر رفته و در تکتک خطوط کدهایی که نرمافزارهای مدرن را میسازند، اعمال شود.[5]
این تحلیل چگونه انجام شد
- روش
- ما دادههای گزارشهای سالانه امنیت زنجیره تامین را با دستورالعملهای جدید نهادهای دولتی و چارچوبهای بنیاد متنباز تطبیق دادیم تا شکاف میان ابزارهای موجود و واقعیتهای عملیاتی نگهدارندگان داوطلب را تحلیل کنیم.
- یافته
- تحلیلها نشان میدهد که با وجود افزایش تصاعدی ابزارهای نظارتی مانند اسبام، گلوگاه اصلی امنیت زنجیره تامین، کمبود منابع انسانی در پروژههای حیاتی متنباز است؛ جایی که فشار استانداردهای جدید بدون حمایت مالی، خطر فرسودگی و نفوذ مهندسی اجتماعی را افزایش میدهد.
- دادههایی که بر پایهٔ آنها کار کردیم
- محدودیتهای این تحلیل
- این تحلیل بر اساس دادههای پروژههای عمومی انجام شده و ممکن است وضعیت امنیت در مخازن خصوصی و تجاری متفاوت باشد.
اصطلاحات کلیدی
- Typosquatting (تایپواسکواتینگ)
- ثبت نامهای مشابه با بستههای نرمافزاری محبوب برای فریب توسعهدهندگان و نصب کدهای مخرب.
- SBOM (فهرست مواد نرمافزاری)
- لیستی جامع از تمام اجزا، کتابخانهها و وابستگیهای استفاده شده در یک نرمافزار.
- SLSA (سطوح زنجیره تامین)
- چارچوبی امنیتی برای ارزیابی و تضمین یکپارچگی فرآیند ساخت و انتشار مصنوعات نرمافزاری.
- Sigstore (سیگاستور)
- ابزاری برای خودکارسازی و سادهسازی فرآیند امضای دیجیتال کدهای متنباز.
پرسشهای متداول
آیا استفاده از نرمافزارهای متنباز به معنای کاهش امنیت است؟
خیر، متنباز بودن به خودی خود یک ضعف نیست. شفافیت کدها امکان بررسی عمومی را فراهم میکند، اما نیازمند پیادهسازی فرآیندهای امنیتی دقیق و عدم اعتماد کورکورانه به بستههای خارجی است.
چگونه میتوان از حملات تایپواسکواتینگ جلوگیری کرد؟
سازمانها باید از ابزارهای خودکار برای بررسی دقیق نام بستهها، تطبیق هشهای رمزنگاری شده و استفاده از مخازن داخلی (Proxy Registries) برای تأیید بستهها پیش از ورود به شبکه استفاده کنند.
آیا تولید اسبام (SBOM) برای همه پروژهها الزامی است؟
در حال حاضر نهادهای دولتی آمریکا و اروپا ارائه اسبام را برای پیمانکاران نرمافزاری خود الزامی کردهاند و این رویه به سرعت در حال تبدیل شدن به یک استاندارد اجباری در صنایع حساس است.
بررسی عمیق دیدگاهها
توسعهدهندگان و نگهدارندگان متنباز
تمرکز بر کاهش بار کاری و جلوگیری از فرسودگی.
این گروه استدلال میکنند که تحمیل استانداردهای امنیتی پیچیده به پروژههایی که توسط داوطلبان بدون دستمزد اداره میشوند، غیرمنطقی است. آنها خواستار ابزارهای خودکارتر، رایگان و حمایت مالی مستقیم از سوی شرکتهای تجاری هستند تا بتوانند بدون کاهش سرعت نوآوری، امنیت کدها را تضمین کنند.
تیمهای امنیت سازمانی
تمرکز بر کنترل، شفافیت و معماری اعتماد صفر.
متخصصان امنیت شرکتی بر این باورند که هر کد خارجی یک تهدید بالقوه است. آنها بر لزوم استفاده اجباری از اسبام (SBOM)، امضاهای دیجیتال و قرنطینه کردن بستههای جدید پیش از استقرار در محیطهای تولیدی تأکید دارند و معتقدند سرعت توسعه نباید فدای امنیت زیرساختها شود.
نهادهای قانونگذار و دولتی
تمرکز بر استانداردهای ملی و امنیت زیرساختهای حیاتی.
آژانسهایی مانند CISA و NIST معتقدند که امنیت زنجیره تامین نرمافزار یک مسئله امنیت ملی است. آنها با تدوین چارچوبهای سختگیرانه و الزامی کردن شفافیت در قراردادهای دولتی، تلاش میکنند تا کل صنعت فناوری را به سمت اتخاذ شیوههای مهندسی امنتر سوق دهند.
- تیمهای امنیت سازمانی
- تمرکز بر کنترل، شفافیت و پیادهسازی معماری اعتماد صفر در زنجیره تامین.
- توسعهدهندگان متنباز
- تمرکز بر کاهش بار کاری و جلوگیری از فرسودگی ناشی از الزامات امنیتی پیچیده.
- نهادهای قانونگذار
- تمرکز بر تدوین استانداردهای ملی و الزام شفافیت برای حفاظت از زیرساختهای حیاتی.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان مستقل که منابع لازم برای پیادهسازی استانداردهای پیچیده را ندارند
- شرکتهای کوچک و استارتاپهایی که توانایی خرید ابزارهای گرانقیمت اسکن زنجیره تامین را ندارند
منابع
[1]OpenSSFنهادهای قانونگذارSupply-chain Levels for Software Artifacts (SLSA)
مطالعه در OpenSSF →
[2]CISAنهادهای قانونگذارSoftware Bill of Materials (SBOM)
مطالعه در CISA →
[3]NISTنهادهای قانونگذارSecure Software Development Framework (SSDF)
مطالعه در NIST →
[4]Sonatypeتیمهای امنیت سازمانی9th Annual State of the Software Supply Chain Report
مطالعه در Sonatype →
[5]تیم سردبیری کوهستانتوسعهدهندگان متنبازتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در فناوری
مشاهده همه →بلاکچین سازمانی
پیوستن سوئیفت و ولز فارگو به بنیاد لینوکس؛ نشانهای از تغییر زیرساختهای مالی به سمت متنباز
7 منبع
معماری هسته
چگونه هسته لینوکس بررسی کدها را فراتر از یک مرجع واحد گسترش میدهد
8 منبع
راهنمای گام به گام مشارکت در پروژههای متنباز: از اولین کامیت تا تبدیل شدن به یک توسعهدهنده فعال
5 منبع
اکوسیستم متنباز
چرا نرمافزارهای متنباز (Open Source) برای کاربران ایرانی حیاتی هستند؟
5 منبع
نظرات
هر زاویه. هر روز.
اخبار فناوری با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





