Уязвимости в проектах 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.

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

Обнаружен баг в Electron: Signal, Slack и 1Password оказались уязвимы

Исследователи обнаружили опасную уязвимость в популярном фреймворке Electron, на котором работают такие приложения, как Signal, 1Password, Slack и даже Google Chrome. Баг получил идентификатор CVE-2025-55305 и позволяет внедрять вредоносный код в приложения, обходя встроенные проверки целостности.

Как выяснили в Trail of Bits, проблема связана с так называемыми V8 heap snapshots — это механизм оптимизации, унаследованный из Chromium.

Он хранит заранее подготовленное состояние JavaScript, чтобы приложения запускались быстрее. Но именно эти «снимки» оказались за пределами стандартных проверок целостности.

Получается, что если злоумышленник получил доступ к папке установки программы (а на Windows это часто %AppData%\Local, доступный для записи, на macOS — /Applications), он может подменить снапшот-файл. После этого при запуске приложение проглотит вредоносный код ещё до того, как включатся защитные механизмы.

 

Исследователь под псевдонимом Shadow показал, что можно заменить даже встроенные функции, например Array.isArray, и вставить туда выполнение произвольного кода. В тестах Slack просто падал, но для доказательства работоспособности были собраны и полноценные бэкдоры.

  • В Slack внедрили кейлоггер в окна чата.
  • В Signal и 1Password атака позволяла воровать переписку и данные из хранилища.

Хорошая новость: разработчики отреагировали быстро. В 1Password уязвимость закрыли в версии 8.11.8-40, Slack и Signal тоже выпустили обновления.

Однако исследователи предупреждают: уязвимость касается не только Electron-приложений. Похожие техники можно применить к Chromium-браузерам, включая Chrome, если они установлены в папку, куда есть запись у обычного пользователя. И это особенно опасно — ведь такие бэкдоры проходят даже проверку цифровой подписи.

Что делать? Пользователям — обновить Signal, Slack, 1Password и все прочие Electron-программы как можно скорее. Разработчикам — расширить проверки целостности на снапшот-файлы или перенести их в каталоги, недоступные для записи.

Этот случай ещё раз показывает: в защите приложений важно учитывать даже «скрытые» механизмы ускорения работы, иначе они могут стать лазейкой для атак.

AM LiveПодписывайтесь на канал "AM Live" в Telegram, чтобы первыми узнавать о главных событиях и предстоящих мероприятиях по информационной безопасности.

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