Как повысить безопасность Open Source-компонентов?
Экспертный комментарий Антона Бауткина, руководителя отдела обеспечения безопасной разработки и автоматизации тестирования "Аладдин Р.Д."
Популярность свободного программного обеспечения постоянно растёт. Поэтому задача повышения безопасности ПО с открытым кодом остаётся едва ли не самой актуальной, когда речь заходит о распространении Open Source во всех экосистемах. Есть ли решение у этой задачи?
Какие из проблем безопасности компонентов с открытым исходным кодом, по вашему мнению, нужно решать в первую очередь?
– Перед компаниями, которые используют в своих продуктах компоненты с открытым исходным кодом глобально, стоит задача убедиться, что в используемых компонентах нет недекларированных возможностей. Такими возможностями могут быть как банальные "зашитые" в код логин и пароль, при знании которых можно получить права администратора, так и уязвимости, например, переполнение внутреннего массива или выход за его границы.
В качестве примера компонента с открытым исходным кодом, в котором была найдена недекларированная возможность, которая повлияла, без преувеличения, на весь мир, можно привести OpenSSL с уязвимостью "Heartbleed". При эксплуатации этой уязвимости можно было получить закрытый ключ любого сайта, который впоследствии можно было использовать для расшифрования любой сессии любого пользователя, который работал с данным сайтом по зашифрованному каналу.
В ходе разработки компонентов с открытым исходным кодом фокус разработчиков смещён в сторону добавления и реализации нового функционала, а вопросы обеспечения безопасности функционирования, безопасной сборки и безопасного распространения уходят на второй план. Такая фундаментальная проблема обусловлена их спецификой, ведь основной задачей разработчиков является именно разработка функционала для демонстрации того факта, что данная технология работает и как её воплотить в код.
Таким образом, основной проблемой, которую надо решить, является смещение фокуса при разработке в сторону обеспечения всестороннего исследования безопасности данных компонентов, что можно сделать только совместными усилиями всех заинтересованных лиц.
Ваши предложения по повышению уровня защищённости Open Source-компонентов?
– Повысить уровень защищённости (качество кода) большинства Open Source-компонентов не так сложно, как может показаться. Сегодня существует довольно много инструментов для автоматизированного сканирования на недекларированные возможности.
Например, средства статического анализа в автоматизированном режиме могут исследовать проект при его сборке и подсвечивать для программиста те места, в которых, возможно, допущена ошибка, что довольно эффективно, если до этого такой вид анализа совсем не производился.
Далее можно внедрить несколько различных статических анализаторов, провести сборку проекта, используя санитайзеры, организовать фаззинг тестирование, мутационное тестирование, тестирования с использованием пользовательских данных и т. д. Все эти инструменты не сложны в освоении для программиста, но они отнимают примерно столько же времени, сколько занимает и разработка всего проекта.
Какие форматы взаимодействия ИТ-сообщества для решения данной проблемы вы считаете эффективными?
– Считаю, что основным способом для взаимодействия ИТ-сообщества в области повышения безопасности (доверия) компонентов с открытым исходным кодом, является создание и продвижение сообществ по исследованию безопасности этих компонентов. Это позволит, если не полностью сместить фокус в сторону безопасной разработки, то сделать заметный вклад в обеспечение и становление этих процессов для компонентов с открытым исходным кодом.
Оригинал статьи