فهرست مواد نرمافزاری (SBOM) چیست و چگونه امنیت زنجیره تأمین را تضمین میکند؟
فهرست مواد نرمافزاری (SBOM) به عنوان یک لیست شفاف از اجزای سازنده کدها، به سازمانها کمک میکند تا آسیبپذیریهای پنهان را به سرعت شناسایی کنند. با الزامات جدید دولتی و استانداردهایی مانند SPDX و CycloneDX، این مفهوم اکنون به پایه اصلی امنیت نرمافزار تبدیل شده است.
به قلم کاوه کردی
این خبر را به اشتراک بگذارید
بهطور خلاصه
- فرمان اجرایی ۱۴۰۲۸ آمریکا، مفهوم SBOM را از یک ایده نظری به یک الزام قانونی و استاندارد امنیتی برای زنجیره تأمین نرمافزار تبدیل کرد.
- تولید دقیق SBOM در زمان ساخت (Build-time) برای شناسایی وابستگیهای پنهان ضروری است و از تحلیلهای پسینی که خطای بالایی دارند، معتبرتر است.
- استانداردهای SPDX (با تمرکز بر مجوزهای حقوقی) و CycloneDX (با تمرکز بر ردیابی آسیبپذیریها) دو قالب اصلی برای تولید این اسناد ماشینخوان هستند.
در ۱۲ مه ۲۰۲۱، پس از حملات گسترده به شبکههای سولارویندز و خط لوله کلونیال، فرمان اجرایی ۱۴۰۲۸ در ایالات متحده صادر شد. این فرمان تاریخی، نهادهای فدرال را موظف کرد تا برای تمام نرمافزارهای خریداریشده، یک «فهرست مواد نرمافزاری» (SBOM) دریافت کنند.[1]
این الزام قانونی، مفهوم SBOM را از یک ایده نظری در محافل امنیتی، به یک استاندارد اجباری و عملیاتی برای شرکتها تبدیل کرد. پیش از صدور این فرمان، بسیاری از سازمانهای بزرگ حتی نمیدانستند چه اجزای متنبازی در نرمافزارهایشان در حال اجراست.[3]
در سالهای پس از آن، این استانداردهای اولیه به سرعت تکامل یافتهاند. در ژوئیه ۲۰۲۶، آژانس امنیت سایبری و امنیت زیرساخت آمریکا (CISA) نسخه جدیدی از «حداقل عناصر مورد نیاز» برای یک SBOM را منتشر کرد تا با فناوریهای روز همگام شود.[2]
این بهروزرسانی جدید، عناصری حیاتی مانند الگوریتم هش، مجوزهای نرمافزاری و نام ابزار تولیدکننده را به الزامات قبلی اضافه کرد. هدف از این تغییرات سختگیرانه، ایجاد یک تصویر شفافتر و قابلاتکاتر از زنجیره تأمین نرمافزار برای خریداران است.[2]
فهرست مواد نرمافزاری دقیقاً چیست؟
فهرست مواد نرمافزاری یا SBOM، در واقع یک لیست مواد اولیه دقیق برای کدهای کامپیوتری است. همانطور که برچسب روی مواد غذایی نشان میدهد چه ترکیباتی در آن وجود دارد، این فهرست نیز تمام اجزای سازنده یک بسته نرمافزاری را مشخص میکند.[3]
این فهرست جامع شامل کتابخانههای متنباز، وابستگیهای شخص ثالث، نسخههای دقیق آنها و روابط ساختاری بین این اجزا است. این دادهها باید در یک قالب استاندارد و قابل خواندن توسط ماشین ارائه شوند تا ابزارهای خودکار بتوانند آنها را به سرعت پردازش کنند.[3]
یکی از مهمترین قابلیتهای عملیاتی SBOM، شناسایی وابستگیهای پنهان یا همان «وابستگیهای انتقالی» است. توسعهدهندگان معمولاً چند کتابخانه اصلی را به پروژه خود اضافه میکنند، اما آن کتابخانهها نیز به نوبه خود از دهها کتابخانه فرعی دیگر استفاده میکنند.
بدون یک فهرست دقیق و ماشینخوان، این لایههای پنهان کد از دید تیمهای امنیتی کاملاً مخفی میمانند. در زمان بروز یک بحران امنیتی گسترده، همین وابستگیهای ناشناخته هستند که بیشترین آسیبپذیری و نقاط نفوذ را برای سیستمها ایجاد میکنند.[2]
با وجود یک SBOM دقیق، سازمانها میتوانند به جای حدس و گمان، دقیقاً بدانند که آیا یک قطعه کد آسیبپذیر در محصولاتشان وجود دارد یا خیر. این سطح از شفافیت، پایه و اساس مدیریت ریسک در دنیای مدرن توسعه نرمافزار محسوب میشود.[2]
واکنش سریع به آسیبپذیریها
ارزش واقعی و کاربردی SBOM دقیقاً در زمان انتشار یک آسیبپذیری بحرانی و روز صفر مشخص میشود. زمانی که نقص امنیتی معروفی مانند Log4Shell کشف شد، سازمانهایی که فاقد این فهرست بودند، هفتهها زمان ارزشمند خود را صرف بررسی دستی کدهایشان کردند.[3]
در مقابل، تیمهای مهندسی که SBOM ماشینخوان در اختیار داشتند، توانستند در عرض چند دقیقه تمام سیستمهای تحت تأثیر را شناسایی کنند. آنها به سادگی پایگاه داده یکپارچه خود را برای یافتن نسخه آسیبپذیر آن کتابخانه خاص جستجو کردند.[3]
با این حال، داشتن این فهرست به تنهایی یک راهکار جادویی نیست، برخلاف آنچه فروشندگان ابزارهای امنیتی در تبلیغات خود ادعا میکنند. اگر دادههای درون آن قدیمی یا ناقص باشند، خروجی ابزارهای امنیتی نیز پر از خطاهای مثبت کاذب خواهد بود که تنها باعث اتلاف وقت میشود.
به همین دلیل، نهادهای نظارتی اکنون بر تولید این فهرستها در زمان ساخت (Build-time) تأکید فراوانی دارند. فهرستی که دقیقاً در حین کامپایل شدن کد ایجاد میشود، معتبرترین و دقیقترین تصویر را از آنچه واقعاً در نرمافزار نهایی قرار گرفته، ارائه میدهد.
تولید فهرست پس از پایان کار و از طریق تحلیل کدهای باینری کامپایلشده، اغلب با خطا و کاستیهای فراوان همراه است. این روشهای پسینی بیشتر شبیه به حدس زدن مواد تشکیلدهنده یک کیک پختهشده هستند تا خواندن دستور پخت اصلی و دقیق آن.[3]
نبرد استانداردها: SPDX در برابر CycloneDX
در دنیای پیچیده SBOM، دو استاندارد اصلی برای قالببندی دادهها وجود دارد که هر کدام با هدف کاملاً متفاوتی طراحی شدهاند. اولین مورد استاندارد SPDX است که توسط بنیاد لینوکس توسعه یافته و یک استاندارد بینالمللی معتبر (ISO/IEC) محسوب میشود.
استاندارد SPDX در ابتدا منحصراً برای مدیریت انطباق و بررسی مجوزهای کدهای متنباز طراحی و بهینهسازی شد. تیمهای حقوقی از این قالب استفاده میکنند تا مطمئن شوند هیچ کد دارای مجوز محدودکنندهای به اشتباه وارد محصولات تجاری شرکت نشده است.
در سوی دیگر این رقابت، استاندارد CycloneDX قرار دارد که توسط پروژه امنیتی OWASP ایجاد و پشتیبانی میشود. این قالب از ابتدا با تمرکز ویژه بر امنیت برنامهها و مدیریت آسیبپذیریها توسعه یافته و ساختار بسیار سادهتری برای پیادهسازی دارد.
قالب CycloneDX به طور بومی از دادههای آسیبپذیری پشتیبانی میکند و در ابزارهای ردیابی امنیتی نفوذ بسیار بیشتری دارد. در حالی که نسخه ۳.۰ از SPDX نیز قابلیتهای امنیتی خود را ارتقا داده، اما CycloneDX همچنان انتخاب اول و بیچونوچرای تیمهای امنیتی است.
انتخاب نهایی بین این دو استاندارد مستقیماً به نیاز اصلی و ساختار سازمان بستگی دارد. اگر دغدغه اصلی بررسی لایسنسها باشد، SPDX گزینه بهتری است، اما برای ردیابی سریع آسیبپذیریها، CycloneDX کارایی و سرعت بالاتری از خود نشان میدهد.
آینده شفافیت نرمافزاری و VEX
با گسترش استفاده از SBOM در صنعت، چالش جدیدی به نام «خستگی ناشی از هشدارها» در میان تیمهای امنیتی پدیدار شده است. یک فهرست دقیق ممکن است هزاران آسیبپذیری را نشان دهد که در واقعیت، بسیاری از آنها در بستر آن نرمافزار خاص اصلاً قابل سوءاستفاده نیستند.
برای حل این مشکل اساسی، مفهوم جدیدی به نام VEX (تبادل قابلیت سوءاستفاده از آسیبپذیری) به اکوسیستم امنیتی معرفی شده است. این سند به عنوان مکملی حیاتی برای SBOM عمل میکند و وضعیت واقعی و عملیاتی یک آسیبپذیری را در یک محصول خاص توضیح میدهد.
سند VEX به صراحت و با زبان ماشین اعلام میکند که آیا یک آسیبپذیری شناختهشده، واقعاً میتواند سیستم را به خطر بیندازد یا خیر. گاهی اوقات به دلیل نحوه خاص استفاده از یک قطعه کد، آن آسیبپذیری در عمل هیچ خطری ایجاد نمیکند.
ترکیب هوشمندانه SBOM و VEX به تیمهای امنیتی اجازه میدهد تا تمرکز خود را تنها بر روی تهدیدات واقعی و فوری معطوف کنند. این رویکرد عملیاتی، از اتلاف وقت ارزشمند مهندسان برای وصله کردن آسیبپذیریهای بیاثر و غیرقابل دسترس جلوگیری میکند.[3]
در نهایت، شفافیت زنجیره تأمین نرمافزار دیگر یک انتخاب فانتزی نیست، بلکه یک الزام تجاری و قانونی غیرقابل انکار است. با ورود قوانین سختگیرانه جدید، ارائه این فهرستها به زودی برای فروش هر نرمافزاری در بازارهای جهانی کاملاً اجباری خواهد شد.[3]
چالشهای پیادهسازی و تولید دقیق
یکی از بزرگترین چالشهای عملیاتی در پیادهسازی این فهرستها، حفظ دقت آنها در چرخههای توسعه بسیار سریع امروزی است. در محیطهای مدرن که روزانه دهها بار کد جدید منتشر میشود، تولید دستی و نگهداری این اسناد کاملاً غیرممکن و منسوخ است.
ابزارهای خودکار تولید SBOM باید مستقیماً در مسیر یکپارچهسازی و استقرار مداوم (CI/CD) تیمهای توسعه ادغام شوند. تنها در این صورت است که هر نسخه جدید از نرمافزار، با یک فهرست مواد کاملاً بهروز، معتبر و قابل استناد همراه خواهد بود.
علاوه بر این، نامگذاری یکپارچه قطعات نرمافزاری هنوز یک چالش بزرگ در این اکوسیستم است. اگر یک ابزار امنیتی نام یک کتابخانه را متفاوت از پایگاه داده آسیبپذیریها ثبت کند، تطبیق خودکار آنها با شکست مواجه شده و آسیبپذیریها پنهان میمانند.[3]
برای رفع این مشکل ساختاری، استفاده از شناسههای یکتای جهانی مانند PURL (آدرس بسته نرمافزاری) به عنوان یک استاندارد قطعی در حال فراگیری است. این شناسهها ابهام در نامگذاری را کاملاً از بین میبرند و دقت اسکنهای خودکار امنیتی را به شدت افزایش میدهند.[3]
برای رفع این مشکل ساختاری، استفاده از شناسههای یکتای جهانی مانند PURL (آدرس بسته نرمافزاری) به عنوان یک استاندارد قطعی در حال فراگیری است.
در نهایت، کیفیت یک SBOM مستقیماً به ابزاری بستگی دارد که آن را در خط لوله توسعه تولید میکند. بسیاری از شرکتها تنها برای رفع تکلیف قانونی، فایلهایی تولید میکنند که از نظر ساختاری معتبرند اما تمام فیلدهای آنها با عبارت «نامشخص» پر شده است؛ این نوع اسناد هیچ ارزش امنیتی واقعی ندارند.
اصطلاحات کلیدی
- فهرست مواد نرمافزاری (SBOM)
- یک لیست جامع و ماشینخوان از تمام اجزا، کتابخانهها و وابستگیهای به کار رفته در ساخت یک نرمافزار.
- وابستگی انتقالی (Transitive Dependency)
- کتابخانهها یا کدهایی که توسعهدهنده مستقیماً به پروژه اضافه نکرده، بلکه توسط کتابخانههای اصلی مورد استفاده قرار گرفتهاند.
- استاندارد SPDX
- یک قالب استاندارد توسعهیافته توسط بنیاد لینوکس که تمرکز اصلی آن بر روی شفافیت مجوزهای متنباز و انطباق حقوقی است.
- استاندارد CycloneDX
- یک قالب امنیتی توسعهیافته توسط OWASP که برای ردیابی دقیق آسیبپذیریها و تحلیل زنجیره تأمین طراحی شده است.
- سند VEX
- یک سند امنیتی مکمل که مشخص میکند آیا یک آسیبپذیری شناختهشده در یک نرمافزار خاص، واقعاً قابل سوءاستفاده هست یا خیر.
پرسشهای متداول
آیا تولید SBOM برای تمام نرمافزارها الزامی است؟
در حال حاضر برای فروش نرمافزار به نهادهای فدرال آمریکا (طبق فرمان ۱۴۰۲۸) الزامی است و با اجرایی شدن قانون CRA اروپا، به زودی برای تمام نرمافزارهای تجاری در اروپا نیز اجباری خواهد شد.
تفاوت اصلی بین SPDX و CycloneDX چیست؟
استاندارد SPDX بیشتر بر روی انطباق مجوزهای حقوقی تمرکز دارد، در حالی که CycloneDX از ابتدا برای ردیابی آسیبپذیریهای امنیتی و یکپارچگی با ابزارهای تحلیل کد طراحی شده است.
چرا تولید SBOM در زمان ساخت (Build-time) اهمیت دارد؟
تولید فهرست در زمان کامپایل کد، دقیقترین تصویر را از وابستگیهای واقعی ارائه میدهد، در حالی که تحلیل پس از ساخت ممکن است برخی از اجزای پنهان یا تغییر یافته را نادیده بگیرد.
سند VEX چه کمکی به تیمهای امنیتی میکند؟
این سند با فیلتر کردن آسیبپذیریهایی که در عمل قابل سوءاستفاده نیستند، از «خستگی ناشی از هشدارها» جلوگیری کرده و به مهندسان کمک میکند تا روی تهدیدات واقعی تمرکز کنند.
بررسی عمیق دیدگاهها
توسعهدهندگان و مهندسان امنیت
تمرکز بر روی اتوماسیون، دقت دادهها و کاهش هشدارهای کاذب در فرآیند توسعه.
مهندسان امنیت معتقدند که یک SBOM تنها زمانی ارزش دارد که مستقیماً در خطوط لوله CI/CD ادغام شده و در زمان ساخت (Build-time) تولید شود. آنها به شدت منتقد ابزارهایی هستند که صرفاً برای رفع تکلیف قانونی، فایلهای ناقص تولید میکنند. از دیدگاه این گروه، استاندارد CycloneDX به دلیل پشتیبانی بومی از دادههای آسیبپذیری و یکپارچگی بهتر با ابزارهای امنیتی، انتخاب ارجح است. آنها همچنین بر اهمیت اسناد VEX برای کاهش هشدارهای امنیتی بیمورد تأکید دارند.
تیمهای حقوقی و انطباق
تمرکز بر روی شفافیت مجوزهای متنباز و جلوگیری از خطرات حقوقی ناشی از کدهای شخص ثالث.
برای تیمهای حقوقی، بزرگترین خطر در زنجیره تأمین نرمافزار، استفاده ناخواسته از کدهایی با مجوزهای محدودکننده (مانند GPL) در محصولات تجاری است. این گروه به شدت از استاندارد SPDX حمایت میکنند، زیرا این قالب از ابتدا برای مستندسازی دقیق لایسنسها در سطح فایل و حتی قطعهکد طراحی شده است. از نگاه آنها، SBOM ابزاری است که پیش از تبدیل شدن یک وابستگی متنباز به یک بحران حقوقی، آن را شناسایی و مدیریت میکند.
نهادهای نظارتی و دولتی
تمرکز بر روی امنیت ملی، استانداردسازی و ایجاد شفافیت در زیرساختهای حیاتی.
نهادهایی مانند CISA در آمریکا، SBOM را به عنوان یک زیرساخت حیاتی برای امنیت ملی میبینند. دیدگاه نظارتی بر این اصل استوار است که خریداران نرمافزار حق دارند دقیقاً بدانند چه چیزی را وارد شبکههای خود میکنند. این نهادها با صدور دستورالعملهایی مانند «حداقل عناصر مورد نیاز»، تلاش میکنند تا بازار را از راهحلهای نمایشی به سمت شفافیت واقعی سوق دهند و استانداردی واحد برای ارزیابی ریسک در سطح کلان ایجاد کنند.
- توسعهدهندگان و مهندسان امنیت
- تمرکز بر روی اتوماسیون، دقت دادهها و کاهش هشدارهای کاذب در فرآیند توسعه.
- تیمهای حقوقی و انطباق
- تمرکز بر روی شفافیت مجوزهای متنباز و جلوگیری از خطرات حقوقی ناشی از کدهای شخص ثالث.
- نهادهای نظارتی و دولتی
- تمرکز بر روی امنیت ملی، استانداردسازی و ایجاد شفافیت در زیرساختهای حیاتی.
دیدگاههایی که این گزارش پوشش نداده
- توسعهدهندگان پروژههای متنباز مستقل که منابع کافی برای پیادهسازی این استانداردها ندارند
منابع
[1]GovInfoنهادهای نظارتی و دولتیExecutive Order 14028: Improving the Nation's Cybersecurity
مطالعه در GovInfo →
[2]CISAنهادهای نظارتی و دولتیSoftware Bill of Materials (SBOM)
[3]GitHub Documentationتوسعهدهندگان و مهندسان امنیتSoftware Bill of Materials (SBOM)
مطالعه در GitHub Documentation →
[4]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در فناوری
مشاهده همه →امنیت ایمیل
هشدار درباره بهرهبرداری فعال از آسیبپذیری تزریق SQL پیش از احراز هویت در Roundcube Webmail
3 منبع
راهنمای گام به گام مشارکت در پروژههای متنباز: از اولین کامیت تا تبدیل شدن به یک توسعهدهنده فعال
5 منبع
امنیت زنجیره تأمین
کرم میازما چگونه با سوءاستفاده از ابزارهای کدنویسی هوش مصنوعی، ۷۳ مخزن گیتهاب مایکروسافت را به خطر انداخت؟
6 منبع
مدیریت وابستگیها
حل معمای انپی-کامل در وابستگیهای نرمافزاری؛ الگوریتم پابگراب چگونه بنبست پکیجمنیجرها را شکست؟
7 منبع
نظرات
هر زاویه. هر روز.
اخبار فناوری با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





