Уязвимости в проектах open-source годами остаются незамеченными

Уязвимости в проектах open-source годами остаются незамеченными

Уязвимости в проектах open-source годами остаются незамеченными

Создавая программы для бизнеса, разработчики все больше полагаются на компоненты с открытым исходным кодом. Проведенное в GitHub исследование показало, что современные приложения могут на 80% состоять из зависимостей, поэтому безопасность последних особенно важна. К сожалению, уязвимости в кодах, связанных зависимостью, выявляются в основном случайно и могут просуществовать без внимания более четырех лет.

Инструментарий на GitHub позволяет быстро оповещать разработчиков о новых брешах в проектах open-source и наличии патчей, но проблема детектирования таких нарушений безопасности сильно тревожит операторов сервиса. Чтобы определить масштабы бедствия, исследователи изучили (PDF) содержимое 45 тыс. открытых репозиториев, активных как минимум два года — с октября 2018-го по сентябрь текущего.

Найденные связные компоненты были разделены на пять групп в зависимости от языка, на котором они написаны (PHP, Java, JavaScript, .NET, Python и Ruby). Как оказалось, чаще всего разработчики используют сторонние библиотеки JavaScript (94% приложений), Ruby и .NET (по 90%).

Темпы латания брешей в пакетах open-source оказались приемлемыми: участники сообщества закрывают их в течение месяца, и пользователи, получив извещение, обычно успевают за неделю внести исправления в свой продукт. Однако далеко не все оповещения GitHub заслуживают пристального внимания — в 83% случаев предметом алерта оказалась ошибка, не составляющая угрозу безопасности. Остальные предупреждения были оправданными: в open-source объявилась уязвимость (или бэкдор). К сожалению, такие проблемы в основном находят в заброшенных или редко используемых проектах.

Исправить ситуацию, по мнению исследователей, можно лишь объединенными усилиями разработчиков, операторов хранилищ и пользователей. Все они должны регулярно проверять зависимости в коде на уязвимость, а также расширять использование средств автоматизации оповещений и патчинга связных кодов — по данным GitHub, это поможет ускорить латание дыр в приложениях в 1,4 раза.

Из брешей, зафиксированных в 2020 году, наиболее опасными исследователи сочли Curveball (CVE-2020-0601), SMBGhost (CVE-2020-0796) и Zerologon (CVE-2020-1472). Эти уязвимости затронули большое количество разработок и поставили под угрозу множество оконечных устройств и корпоративных сетей.

С точки зрения патчинга весьма неприятна также CVE-2020-8203 в npm-пакете lodash, которая позволяет внести нежелательные изменения в прототип объекта JavaScript. Исследование показало, что сценарий lodash пользуется большой популярностью у разработчиков бизнес-программ, и появление CVE-2020-8203 вызвало более пяти млн алертов, запущенных с помощью бота GitHub.

Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

70% opensource-проектов редко фиксятся или заброшены

Согласно результатам исследования, проведенного в ИБ-компании Lineaje, 95% уязвимостей в приложениях возникают по вине подключаемых компонентов с открытым кодом. В половине случаев ситуацию невозможно исправить из-за отсутствия патча.

Более того, 70% opensource-проектов, на которые полагается рабочий софт, уже не поддерживаются либо находятся в неудовлетворительном состоянии. Статистика получена на основе анализа более 7 млн пакетов с открытым исходным кодом.

Примечательно, что проекты, за состоянием которых хорошо следят, оказались в 1,8 раза более уязвимыми, чем заброшенные, — видимо, частые изменения повышают риск привнесения ошибок.

Подобная опасность также выше, когда над проектом работают менее 10 или более 50 человек. В первом случае риск просмотреть проблему безопасности на 330% превышает показатель для команды средней величины, во втором — на 40%.

Проблему усугубляет тот факт, что зависимость может содержать до 60 слоев разнородных компонентов с открытым кодом, объединенных в одну структуру — как лего. В этом случае сложно не только оценить риски, но и принять меры для смягчения последствий эксплойта.

Исследование также показало, что 15% opensource-компонентов в приложениях с зависимостями имеют множество версий, что тоже затрудняет латание дыр. Софт средней величины в ходе работы может подтягивать 1,4 млн строк кода, написанного на 139 языках, в том числе небезопасных по памяти.

Треть подключаемых пакетов (34%) имеют американское происхождение, 13% — российское. В 20% случаев разработчик из США — аноним; для России этот показатель вдвое ниже.

Anti-Malware Яндекс ДзенПодписывайтесь на канал "Anti-Malware" в Telegram, чтобы первыми узнавать о новостях и наших эксклюзивных материалах по информационной безопасности.

RSS: Новости на портале Anti-Malware.ru