Анализ состава программного обеспечения
Разработка программного обеспечения с использованием различных компонентов является обычной практикой разработки программного обеспечения. [1] Использование программных компонентов разделяет сложность более крупных элементов на более мелкие фрагменты кода и повышает гибкость, позволяя упростить повторное использование компонентов для удовлетворения новых требований. [2] Эта практика широко распространилась с конца 1990-х годов благодаря популяризации программного обеспечения с открытым исходным кодом (OSS), которое помогает ускорить процесс разработки программного обеспечения и сократить время выхода на рынок. [3]
Однако использование программного обеспечения с открытым исходным кодом создает множество рисков для разрабатываемых программных приложений. Эти риски можно разделить на 5 категорий: [4]
- Контроль версий OSS: риски изменений, вносимых новыми версиями
- Безопасность: риски уязвимостей в компонентах — Common Vulnerabilities & Exposures (или CVE)
- Лицензия: риски, связанные с требованиями законодательства в области интеллектуальной собственности (ИС)
- Разработка: риски совместимости существующей кодовой базы и программного обеспечения с открытым исходным кодом.
- Поддержка: риск плохой документации и устаревших программных компонентов.
Вскоре после основания Open Source Initiative в феврале 1998 г. [5] были подняты риски, связанные с OSS [6] и организации пытались управлять этим, используя электронные таблицы и документы для отслеживания всех компонентов с открытым исходным кодом, используемых их разработчиками. [7]
Организациям, широко использующим компоненты с открытым исходным кодом, возникла необходимость помочь автоматизировать анализ и управление рисками с открытым исходным кодом. В результате появилась новая категория программных продуктов под названием «Анализ состава программного обеспечения» (SCA), которая помогает организациям управлять рисками с открытым исходным кодом.SCA стремится обнаружить все сторонние компоненты, используемые в программном приложении, чтобы снизить риски, связанные с уязвимостями безопасности, требованиями IP-лицензии и устареванием используемых компонентов.
Обзор [ править ]
Анализ состава программного обеспечения (SCA) — это практика в области информационных технологий и разработки программного обеспечения, предназначенная для анализа специально созданных программных приложений с целью обнаружения встроенного программного обеспечения с открытым исходным кодом и определения того, являются ли они актуальными, содержат ли они недостатки безопасности или имеют ли они лицензию. требования. [8]
Продукты SCA обычно работают следующим образом: [9]
- Механизм сканирует исходный код программного обеспечения и связанные с ним артефакты, используемые для компиляции программного приложения.
- Механизм идентифицирует компоненты OSS и их версии и обычно сохраняет эту информацию в базе данных, создавая каталог OSS, используемый в сканируемом приложении.
- Затем этот каталог сравнивается с базами данных, в которых указаны известные уязвимости безопасности для каждого компонента, лицензионные требования для использования компонента и исторические версии компонента. [ нужна ссылка ] Для обнаружения уязвимостей безопасности это сравнение обычно проводится с известными уязвимостями безопасности (CVE), которые отслеживаются в Национальной базе данных уязвимостей (NVD). Некоторые продукты используют дополнительную собственную базу уязвимостей. Для обеспечения соответствия требованиям интеллектуальной собственности и законодательства продукты SCA извлекают и оценивают тип лицензирования, используемый для компонента OSS. [10] Версии компонентов извлекаются из популярных репозиториев с открытым исходным кодом, таких как GitHub , Maven , PyPi , NuGet и многих других.
- Результаты затем предоставляются конечным пользователям в различных цифровых форматах. Содержание и формат зависят от продукта SCA и могут включать руководство по оценке и интерпретации риска, а также рекомендации, особенно когда это касается юридических требований к компонентам с открытым исходным кодом, таких как лицензирование с сильным или слабым авторским левом . Выходные данные также могут содержать спецификацию программного обеспечения (SBOM), в которой подробно описываются все компоненты с открытым исходным кодом и связанные атрибуты, используемые в программном приложении. [11]
Использование [ править ]
Поскольку SCA влияет на различные функции в организациях, разные команды могут использовать данные в зависимости от размера и структуры корпорации. ИТ-отдел часто использует SCA для внедрения и внедрения технологии совместно с общими заинтересованными сторонами, включая директора по информационным технологиям (CIO), главного технического директора (CTO) и главных архитекторов предприятия (EA). [12] Данные о безопасности и лицензиях часто используются такими должностями, как директора по информационной безопасности (CISO) для рисков безопасности и директор по интеллектуальной собственности/соответствию для управления рисками интеллектуальной собственности. [13]
(IDE) разработчика, В зависимости от возможностей продукта SCA он может быть реализован непосредственно в интегрированной среде разработки который использует и интегрирует компоненты OSS, или может быть реализован как отдельный этап процесса контроля качества программного обеспечения . [14] [15]
Продукты SCA, и особенно их способность генерировать SBOM, необходимы в некоторых странах, например в США, для обеспечения безопасности программного обеспечения, поставляемого поставщиком в одно из их агентств. [16]
Еще одним распространенным вариантом использования SCA является комплексная проверка технологий . Перед сделкой по слиянию и поглощению (M&A) консультационные фирмы анализируют риски, связанные с программным обеспечением целевой фирмы. [17]
SCA стороны Сильные
Автоматический характер продуктов SCA является их основным преимуществом. Разработчикам не нужно вручную выполнять дополнительную работу при использовании и интеграции компонентов OSS. [18] Автоматизация также применяется к косвенным ссылкам на другие компоненты OSS в коде и артефактах. [19]
SCA стороны Слабые
И наоборот, некоторые ключевые недостатки текущих продуктов SCA могут включать в себя:
- Сложное и трудоемкое развертывание, полное введение которого в эксплуатацию может занять месяцы. [20]
- Каждый продукт использует собственную базу данных компонентов OSS, которые могут существенно различаться по размеру и охвату. [21]
- Ограничение данных об уязвимостях отчетами только об уязвимостях, официально зарегистрированных в NVD (это может быть через несколько месяцев после первоначального обнаружения уязвимости). [22]
- Отсутствие автоматизированных указаний о действиях, которые необходимо предпринять на основе отчетов и данных SCA. [23]
- Отсутствие указаний о юридических требованиях к обнаруженным лицензиям OSS. [24]
См. также [ править ]
- Тестирование безопасности
- Программное обеспечение с открытым исходным кодом
- Распространенные уязвимости и риски
- Лицензия с открытым исходным кодом
- Программный интеллект
Ссылки [ править ]
- ^ Ньерстраз, Оскар; Мейлер, Тео Дирк (1995). «Направления исследований в области композиции программного обеспечения» . Обзоры вычислительной техники ACM . 27 (2). АКМ: 262–264. дои : 10.1145/210376.210389 . S2CID 17612128 .
- ^ Ньерстраз, Оскар; Дами, Лоран (январь 1995 г.). Объектно-ориентированная композиция программного обеспечения . Prentice Hall International (UK) Ltd., стр. 3–28. CiteSeerX 10.1.1.90.8174 .
- ^ Де Хун, Мишель Дж.Л.; Имото, Сейя; Нолан, Джон; Мияно, Сатору (февраль 2004 г.). «Программное обеспечение для кластеризации с открытым исходным кодом». Биоинформатика . Издательство Оксфордского университета: 1453–1454. CiteSeerX 10.1.1.114.3335 .
- ^ Дык Линь, Нгуен; Дуй Хунг, Фан; Дипе, Ву Ту (2019). «Управление рисками в проектах на основе открытого программного обеспечения» . Материалы 8-й Международной конференции по программному обеспечению и компьютерным приложениям 2019 года . стр. 178–183. дои : 10.1145/3316615.3316648 . ISBN 9781450365734 . S2CID 153314145 .
- ^ «История ОСИ» . Opensource.org. 19 сентября 2006 г.
- ^ Пейн, Кристиан (2002). «О безопасности программного обеспечения с открытым исходным кодом» (PDF) . Журнал информационных систем . 12 : 61–78. дои : 10.1046/j.1365-2575.2002.00118.x . S2CID 8123076 .
- ^ Каур, Сумандип (апрель 2020 г.). «Проблемы безопасности в программном обеспечении с открытым исходным кодом» (PDF) . Международный журнал компьютерных наук и коммуникаций : 47–51.
- ^ Прана, Геде Артха Азриади; Шарма, Абхишек; Шар, Львин Кхин; Фу, Дариус; Сантоса, Эндрю Э; Шарма, Асанхая; Ло, Дэвид (июль 2021 г.). «С глаз долой, из головы? Как уязвимые зависимости влияют на проекты с открытым исходным кодом» . Эмпирическая программная инженерия . 26 (4). Спрингер: 1–34. дои : 10.1007/s10664-021-09959-3 . S2CID 197679660 .
- ^ Омбреданн, Филипп (октябрь 2020 г.). «Соответствие лицензии на бесплатное и открытое программное обеспечение: инструменты для анализа состава программного обеспечения» . Компьютер . 53 (10). ИИЭР: 262–264. дои : 10.1109/MC.2020.3011082 . S2CID 222232127 .
- ^ Дуань, Руян; Биджлани, Ашиш; Сюй, Мэн; Ким, Тэсу; Ли, Венке (2017). «Выявление нарушений лицензии на ПО с открытым исходным кодом и однодневных угроз безопасности в больших масштабах» . Материалы конференции ACM SIGSAC 2017 по компьютерной и коммуникационной безопасности . АКМ. стр. 2169–2185. дои : 10.1145/3133956.3134048 . ISBN 9781450349468 . S2CID 7402387 .
- ^ Арора, Аруши; Райт, Вирджиния; Гарман, Кристина (2022). «Усиление безопасности эксплуатационных технологий: понимание современной спецификации материалов» (PDF) . JCIP, Журнал политики критической инфраструктуры : 111.
- ^ Бейли, Т.; Грейс, Дж.; Уоттерс, М.; Велле, Дж. (19 сентября 2022 г.). «Спецификация программного обеспечения: Управление рисками кибербезопасности программного обеспечения» . МакКинси и компания . Проверено 6 января 2024 г.
- ^ Попп, Карл Майкл (30 октября 2019 г.). Лучшие практики коммерческого использования программного обеспечения с открытым исходным кодом . Совет директоров – Книги по запросу, 2019. с. 10. ISBN 9783750403093 .
- ^ Имтиаз, Насиф; Торн, Сивер; Уильямс, Лори (октябрь 2021 г.). «Сравнительное исследование отчетов об уязвимостях с помощью инструментов анализа состава программного обеспечения» . Материалы 15-го Международного симпозиума ACM / IEEE по эмпирической разработке программного обеспечения и измерениям (ESEM) . АКМ. стр. 1–11. arXiv : 2108.12078 . дои : 10.1145/3475716.3475769 . ISBN 9781450386654 . S2CID 237346987 .
- ^ Сунь, Сяохань; Ченг, Юньчан; Цюй, Сяоцзе; Ли, Ханг (июнь 2021 г.). «Проектирование и реализация конвейера тестирования безопасности на основе DevSecOps» . 2021 г. 4-я конференция IEEE по расширенному управлению информацией, коммуникациям, электронному и автоматическому управлению (IMCEC) . Том. 4. ИИЭР. стр. 532–535. дои : 10.1109/IMCEC51613.2021.9482270 . ISBN 978-1-7281-8535-4 . S2CID 236193144 .
- ^ «Элементы и соображения спецификации программного обеспечения» . Федеральный реестр . 6 февраля 2021 г. Проверено 6 января 2024 г.
- ^ Серафини, Даниэле; Закчироли, Стефано (сентябрь 2022 г.). «Эффективная идентификация предыдущих публикаций открытого исходного кода» . 18-й Международный симпозиум по открытому сотрудничеству . Том. 4. АКМ. стр. 1–8. arXiv : 2207.11057 . дои : 10.1145/3555051.3555068 . ISBN 9781450398459 . S2CID 251018650 .
- ^ Чен, Ян; Сантоса, Эндрю Э; Шарма, Асанхая; Ло, Дэвид (сентябрь 2020 г.). «Автоматическая идентификация библиотек по данным об уязвимостях» . Материалы 42-й Международной конференции ACM/IEEE по программной инженерии: программная инженерия на практике . стр. 90–99. дои : 10.1145/3377813.3381360 . ISBN 9781450371230 . S2CID 211167417 .
- ^ Кенго Ока, Деннис (2021). «Анализ состава программного обеспечения в автомобильной промышленности» . Создание безопасных автомобилей: обеспечение жизненного цикла разработки автомобильного программного обеспечения . Уайли: 91–110. дои : 10.1002/9781119710783 . ISBN 9781119710783 . S2CID 233582862 .
- ^ Раджапаксе, Рошан Намаль; Захеди, Мансура; Бабар, Мухаммед Али (2021). «Эмпирический анализ взглядов практиков на интеграцию инструментов безопасности в DevOps» . Материалы 15-го Международного симпозиума ACM / IEEE по эмпирической разработке программного обеспечения и измерениям (ESEM) . стр. 1–12. arXiv : 2107.02096 . дои : 10.1145/3475716.3475776 . ISBN 9781450386654 . S2CID 235731939 .
- ^ Имтиаз, Насиф; Торн, Сивер; Уильямс, Лори (2021). «Сравнительное исследование отчетов об уязвимостях с помощью инструментов анализа состава программного обеспечения» . Материалы 15-го Международного симпозиума ACM / IEEE по эмпирической разработке программного обеспечения и измерениям (ESEM) . стр. 1–11. arXiv : 2108.12078 . дои : 10.1145/3475716.3475769 . ISBN 9781450386654 . S2CID 237346987 .
- ^ «Компонентный анализ» . owasp.org .
- ^ Фу, Дариус; Чуа, Хенди; Да, Джейсон; Анг, Мин Йи; Шарма, Асанхая (2018). «Эффективная статическая проверка обновлений библиотеки» . Материалы 26-й совместной встречи ACM по Европейской конференции по разработке программного обеспечения и симпозиума по основам программной инженерии в 2018 году . стр. 791–796. дои : 10.1145/3236024.3275535 . ISBN 9781450355735 . S2CID 53079466 .
- ^ Миллар, Стюарт (ноябрь 2017 г.). «Обнаружение уязвимостей в программном обеспечении с открытым исходным кодом: лечение и причина» (PDF) . Королевский университет Белфаста .