Почему многие безопасники избегают Open Source?

Open Source (модель разработки ПО, при которой исходный код продукта доступен для изучения, изменения и распространения) всё чаще используется в корпоративном технологическом стеке.

Однако, несмотря на удобство, открытый исходный код, с моей точки зрения, имеет существенные недостатки, которые делают его использование неприемлемым для решений в сфере информационной безопасности.

Почему многие безопасники избегают Open Source?

Стоит ли открывать исходный код защитных инструментов?

По данным экспертов AppSec Solutions, число уязвимостей в ПО с открытым исходным кодом показывает резкий рост по сравнению с предыдущим годом. При этом российское ПО находится под особым прицелом. И случае, если исправления безопасности не применяются своевременно, у злоумышленников есть огромное окно возможностей для своих атак.

Отравленный код

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

Оценка ПО хороша настолько, насколько хорошо сообщество

А действительно ли сообщество энтузиастов тратят время на доскональное изучение исходного кода? По большей части, они не эксперты по безопасности и маловероятно что они найдут уязвимости, даже если изучат код.

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

Скомпрометированная система обнаружения угроз

Или допустим, специалист по безопасности находит уязвимость нулевого дня или проводит обратную разработку исправления уязвимости и выявляет слабость. Если они выставляют ее публично, то, по сути, создают условия гонки, в которых хакеры спешат воспользоваться слабостью до того, как исправление будет выпущено и развернуто. Что, если злоумышленник точно знает, какую логику использует организация для обнаружения вредоносного поведения? Это может позволить ему находить пробелы и выбирать методы, которые обходят обнаружение.

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

Шаги атаки на Open Source продукт

Давайте рассмотрим один из примеров того, как злоумышленник может использовать открытый исходный код в своих целях.

Шаг 1. Поиск Open Source продукта

Начнем с выбора популярного Open Source проекта. Например, возьмем проект, который активно используется в веб-разработке, такой как Express.js — популярный фреймворк для Node.js.

Шаг 2. Анализ зависимостей

Используем инструмент для анализа зависимостей, например, npm audit или npm ls, чтобы получить список всех зависимостей проекта. Мы ищем менее популярные библиотеки, которые могут быть менее защищены и имеют меньше внимания со стороны сообщества. Например, библиотека some-less-popular-lib.

Шаг 3. Выбор цели

Выбираем библиотеку some-less-popular-lib, которая используется в проекте, но не имеет большого количества звезд или форков на GitHub, что может указывать на меньшую активность сообщества.

Шаг 4. Поиск репозитория и внесение изменений

  • Поиск репозитория: Находим репозиторий библиотеки на GitHub или другом хостинге исходного кода. Обычно это можно сделать через package.json проекта, где указана ссылка на репозиторий.
  • Форк репозитория: Создаем форк репозитория на своей учетной записи GitHub.
  • Внесение изменений: Вносим изменения в код библиотеки. Например, добавляем улучшения, которые могут быть полезны для сообщества, но также внедряем бэкдор. Это может быть скрытая функция, использующая eval для выполнения произвольного кода, или скрытая отправка данных на удаленный сервер.

// Пример внедрения бэкдора

function backdoor(input) {

eval(input); // Опасная практика, позволяющая выполнить произвольный код

}

Из соображений безопасности не будем приводить более подробный пример во избежание потенциального злоупотребления этой информацией и для защиты пользователей от возможных угроз.

  • Создание pull request: Создаем pull request с нашими изменениями, объясняя, как они улучшают библиотеку. Важно, чтобы изменения выглядели легитимно и полезно.

Шаг 5. Ожидание публикации

Ждем, когда авторы библиотеки примут наш pull request и выпустят новую версию библиотеки. Это может занять некоторое время, в зависимости от активности авторов.

Шаг 6. Получение доступа

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

Этот сценарий подчеркивает важность тщательной проверки и мониторинга зависимостей в Open Source проектах. Разработчики должны регулярно проверять обновления зависимостей и использовать инструменты для анализа безопасности, такие как npm audit, чтобы минимизировать риски.

Почему мы не используем OSS в менеджере паролей ОдинКлюч?

Открытый исходный код помогает значительно снизить затраты на разработку ПО и повысить его прозрачность. Однако, если пользователи слепо верят что open source = security не анализируя все «за» и «против», то тем самым создают себе лишь ложное чувство безопасности.

В свое время, при разработке корпоративного менеджера паролей ОдинКлюч, у нас тоже был соблазн, как и многих других разработчиков подобных решений, пойти по пути оупенсорса, однако в процессе мы все же решили поставить в приоритет уровень безопасности.

Заключение

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

1
2 комментария

Как вы относитесь к решениям на основе Open Source с точки зрения информационной безопасности?

В целом OpenSource это неплохо, но согласен с тем, что когда проект "боевой" и выходит на рынок, то не очень хочется, чтобы все знали, что у него "под капотом". Для любого предпринимателя, клиента, да в целом любого человека, важна безопасность и конфиденциальность его данных, а когда код в открытом доступе, то "добрые ребята" захотят вам "помочь"