Новый отчет Linux Foundation «Census III of Free and Open Source Software» выявил критические зависимости и растущие проблемы безопасности в ПО с открытым исходным кодом, сообщает портал ITPro Today.

В знаковом исследовании, подчеркивающем всепроникающую роль свободного и открытого ПО (FOSS) в современной цифровой экономике, показано, что Open Source-компоненты присутствуют почти во всех современных приложениях, при этом пакеты для облачных вычислений демонстрируют значительный рост такого присутствия, а традиционные модели разработки также быстро эволюционируют в этом плане.

Отчет подготовлен исследователями из Гарвардской школы бизнеса и Лаборатории инновационных наук Гарварда (LISH) в партнерстве с Linux Foundation Research и Open Source Security Foundation (OpenSSF). Исследование основывается на двух предыдущих отчетах, но выходит за рамки библиотек операционных систем и изучает компоненты уровня приложений, которые формируют строительные блоки современного ПО.

В новом отчете проанализировано более 12 млн. наблюдений за использованием FOSS в более чем 10 тыс. компаний. Исследовательская группа сотрудничала с ведущими компаниями по анализу состава ПО (SCA), включая FOSSA, Snyk, Sonatype и Synopsis, объединяя анонимизированные данные с различных платформ. Анализ включал как автоматическое сканирование производственных кодовых баз, так и тщательный аудит программных компонентов человеком, что позволило получить представление как о прямом использовании пакетов FOSS, так и об их косвенных зависимостях в цепочке поставок ПО.

Основные результаты исследования включают:

  • Компоненты с открытым исходным кодом присутствуют в 96% кодовых баз.
  • Наблюдается резкий рост использования пакетов, специфичных для облачных сервисов.
  • По-прежнему используется устаревший Python 2, что подвергает системы рискам безопасности.
  • С момента проведения исследования «Census II» число пользователей Rust выросло на 500%, что свидетельствует о переходе к программированию с защитой памяти (memory-safe programming language — язык программирования, безопасный для памяти; включает в себя функции, гарантирующие, что программа не сможет получить доступ к памяти, которая не была выделена или уже освобождена).
  • Отсутствие стандартизированных имен для программных компонентов повышает риски безопасности.
  • Крупными проектами FOSS управляет небольшая группа разработчиков, что создает проблемы с устойчивостью.

«Самым большим сюрпризом стало значительное увеличение использования библиотек OSS для доступа к облачным сервисам», — говорит Дэвид Уилер, директор Open Source Supply Chain Security в OpenSSF. Он отмечает, что если на момент проведения предыдущего анализа «Census II» использование облачных сервисов «не было чем-то новым», то в «Census III» зафиксирован «весьма значительный» рост их использования. По его мнению, это говорит о том, что раньше при развертывании облаков часто использовался подход «lift-and-shift» — простой перенос существующих программных приложений без модификации, — а теперь ПО все чаще разрабатывается специально для работы в облаке и для использования конкретных сервисов, доступных в нем.

Риск проектов с одним мейнтейнером

В отчете говорится, что в 40% ведущих FOSS-проектов более 80% вклада приходится на одного или двух разработчиков. Такая концентрация представляет собой потенциальную угрозу безопасности.

В 2024 г. была обнаружена атака на цепочку поставок, которая использовала социальную инженерию для злонамеренного внедрения бэкдора в популярный Open Source-пакет XZ Utils. Атака включала в себя запуск кампании давления на единственного мейнтейнера проекта с целью добавления второго сопровождающего, который впоследствии и внедрил бэкдор. Этот инцидент служит подтверждением одного из ключевых выводов отчета о риске концентрации ответственности в FOSS-проектах и последствиях для безопасности, связанных с тем, что проекты поддерживаются очень маленькими командами.

«В некоторых проектах работает один или всего несколько разработчиков, а мы хотели бы видеть в широко используемых проектах много разработчиков, поскольку наличие их большого числа может служить сдерживающим фактором для других», — говорит Уилер.

По его словам, что атака на XZ Utils также иллюстрирует проблему, над решением которой работает OpenSSF: обеспечение того, чтобы используемый людьми исходный код соответствовал тому, что проходит проверку. «Большое преимущество открытого ПО заключается в том, что его можно широко проверять на предмет непреднамеренных или преднамеренных уязвимостей», — поясняет он.

При этом Уилер отмечает, что проверка не поможет, если то, что проверяется, не используется для создания конечного продукта. Проекты OpenSSF, такие как SLSA и Sigstore, работают над улучшением процесса сборки и распространения, чтобы гарантировать, что код, который запускают люди, создан из исходного кода, прошедшего проверку.

Почему спустя 16 лет после выхода Python 3 все еще используется Python 2

Еще один ключевой вывод отчета — распространенность старых языков кодирования, которые представляют собой потенциальный риск для безопасности. В частности, отмечается, что, несмотря на то что Python 3 был выпущен 16 лет назад, переход на него до сих пор не завершен, и в некоторых секторах на 20-30% используется Python 2.

У Уилера есть соображения относительно того, как Open Source-разработчики могут улучшить ситуацию. «Урок прост: делайте обновление до новых версий очень простым, — говорит он. — Почти во всех случаях новые версии должны быть полностью обратно совместимы со старыми версиями — особенно с предыдущей версией. Обеспечение обратной совместимости может требовать дополнительных усилий разработчиков, но это почти всегда правильный подход».