Исследователи из Гарвардской школы бизнеса и Лаборатории инновационных наук Гарварда в партнёрстве с Linux Foundation Research и OpenSSF подготовили отчёт Census III of Free and Open Source Software. В нём говорится, что компоненты с открытым исходным кодом присутствуют практически во всех современных приложениях, причём пакеты, ориентированные на облако, демонстрируют резкий рост, а традиционные модели разработки быстро развиваются.
Исследование основывается на двух предыдущих переписях, выходя за рамки библиотек операционных систем и изучая компоненты уровня приложений.
В отчёте проанализировали более 12 млн случаев использования FOSS в более чем 10 тыс. компаний. Исследовательская группа сотрудничала с ведущими компаниями по анализу состава программного обеспечения (SCA), включая FOSSA, Snyk, Sonatype и Synopsis, объединяя анонимные данные с нескольких платформ. Анализ включал как автоматизированное сканирование производственных кодовых баз, так и человеческий аудит компонентов программного обеспечения, что позволило получить представление как о прямом использовании пакетов FOSS, так и об их косвенных зависимостях по всей цепочке поставок программного обеспечения.
Ключевые выводы:
компоненты с открытым исходным кодом присутствуют в 96% кодовых баз;
наблюдается резкий рост использования пакетов, специфичных для облачных сервисов;
зависимость от устаревшего Python 2 сохраняется, что подвергает системы рискам безопасности;
внедрение Rust выросло на 500% после Census II, что свидетельствует о переходе к программированию с безопасным доступом к памяти;
отсутствие стандартизированного наименования для компонентов программного обеспечения увеличивает риски безопасности;
небольшая группа участников управляет крупными проектами FOSS, что вызывает опасения по поводу устойчивости.
«Самым большим сюрпризом стало значительное увеличение использования библиотек OSS для доступа к облачным сервисам», — сказал Дэвид Уилер, директор по безопасности цепочки поставок с открытым исходным кодом в OpenSSF.
Он отметил, что, хотя использование облачных сервисов не было чем-то новым, когда проводился предыдущий анализ Census II, этот рост можно назвать драматичным. По его мнению, это говорит о том, что ранние развёртывания в облаке часто использовали подход с перемещением существующих программных приложений — в то время как сейчас программное обеспечение всё чаще разрабатывается специально для работы в облаке и использования определённых сервисов, доступных там.
В отчёте указывается, что в 40% лучших проектов принадлежат одному или двум разработчикам, на долю которых приходилось более 80% вкладов. Такая концентрация сопровождающих представляет потенциальную проблему безопасности.
В 2024 году была обнаружена атака на цепочку поставок, которая опиралась на социальную инженерию для вредоносного внедрения бэкдора в популярный пакет с открытым исходным кодом XZ Utils. Атака включала запуск кампании давления на единственного сопровождающего проекта с целью добавления второго сопровождающего, который и внедрил бэкдор.
«В некоторых проектах есть один или всего несколько разработчиков, и мы хотели бы видеть больше сопровождающих в широко используемых проектах, поскольку они могут проверять друг друга», — сказал Уилер.
Он подчеркнул, что атака на XZ Utils также иллюстрирует проблему, над решением которой работает OpenSSF: обеспечение того, чтобы проверяемый исходный код соответствовал запускаемому.
«Большим преимуществом программного обеспечения с открытым исходным кодом является то, что его можно широко проверять для поиска непреднамеренных или преднамеренных уязвимостей», — сказал эксперт.
Проекты OpenSSF, такие как SLSA и Sigstore, работают над укреплением процесса сборки и распространения кода, чтобы гарантировать его проверку перед запуском.
Другой важный вывод отчёта — о распространённости старых языков программирования, которые представляют потенциальные риски безопасности.
Несмотря на то, что Python 3 вышел 16 лет назад, на некоторых секторах число случаев использования Python 2 достигает 20-30%. «Урок прост: сделайте обновление до новых версий максимально простым. Почти во всех случаях новые версии должны быть полностью обратно совместимы со старыми — особенно с предыдущей. Обеспечение обратной совместимости может потребовать дополнительных усилий со стороны разработчиков, но это почти всегда правильный подход», — считает Уилер.
Летом специалисты агентства кибербезопасности и безопасности инфраструктуры США (CISA) опубликовали исследование с подробным анализом 172 ключевых Open Source проектов на предмет уязвимости исходного кода различных языков программирования к ошибкам памяти. Согласно отчёту, 52% критически популярных проектов с открытым исходным кодом содержат код, написанный на небезопасных для памяти языках, а 55% от общего числа строк кода (LoC) в популярных и ключевых проектах написаны на небезопасных для памяти языках.