Автор: Андрей Михалюк, CEO CoreWin
Одним из ключевых вопросов в современном цифровом мире является безопасность программного обеспечения, а также данных и систем. Софт отличается технологиями использованными в его написании, но кроме технологий есть еще одно извечное отличие — является ли код открытым, бесплатным. Поскольку технологии меняются, а природа интеллектуальной собственности остается неизменной, спор длится десятилетиями как среди специалистов, так и среди академиков: что безопаснее, открытый или закрытый код?
Сначала опровергнем 3 основных мифа об открытом коде:
- Любой может прочитать открытый код и воспользоваться уязвимостью.
Хоть открытый исходный код в принципе можно прочесть и скомпрометировать, на практике ситуация намного сложнее. Во-первых, людям, которые взламывают программное обеспечение, на самом деле не нужно смотреть в исходный код. Для опытного хакера нет необходимости копаться в тысячах строк кода, чтобы обнаружить уязвимость. Злоумышленники скорее сосредотачиваются на том, что выполняет программа, а не на том, как она написана. Во-вторых, тот факт, что кто-либо имеет доступ к коду, на самом деле увеличивает шансы найти ошибки и уязвимости.
- Отсутствие денежных стимулов означает отсутствие мотивации для обеспечения безопасности FOSS.
На самом деле многие успешные продукты с открытым кодом стали прибыльными для создающих их команд. К примеру, Mozilla получает значительную часть дохода от Firefox за клики пользователей на объявлениях на страницах поиска. А Wazuh зарабатывает на поддержке, платных настройках и обучениях. Большинство проектов такого калибра имеют свои группы реагирования на безопасность, которые занимаются исправлением уязвимостей.
- Закрытое программное обеспечение по своей сути более безопасно, чем программное обеспечение с открытым кодом.
Этот миф берет начало от многих предубеждений. Но закрытость кода (или его открытость) не гарантирует отсутствие недостатков в нем. В отличие от проприетарного программного обеспечения, объект с открытым кодом является прозрачным касательно потенциальных уязвимостей. С платным софтом контроль за обнаружением и исправлением ошибок осуществляет команда разработчика. С помощью FOSS можно также принять участие в проверке кода, а затем либо остаться с предыдущей версией, выпустить собственный патч или даже выключить определенные функции.
Ключевые элементы повышения безопасности
Поскольку открытый и проприетарный код, пакеты и системы нуждаются в одинаковых технических и организационных средствах защиты, обычно государственное регулирование их безопасности не отличается. Хотя особенности каждого инцидента кибербезопасности могут быть разными, их предметная сущность неизменна – от атак цепи поставки до инфицирования вредоносным кодом. Сообщество кибербезопасности регулярно обновляет рекомендованные лучшие практики на основе новой информации, что требует постоянной бдительности, анализа и проверки имеющегося кода и компонентов. Исходя из этого, сообщество все больше склоняется к такому консенсусу: не столь важно, решение имеет открытый или закрытый код, важно какие работы выполнены для повышения безопасности. Эти усилия можно разделить на два ключевых элемента:
- Работа над безопасностью команды разработки, контроля качества и поддержки. То есть не только наличие ресурсов и нормальной скорости исправления уязвимостей, но и наличие эффективной команды поддержки и контроля качества, которая выявляет недостатки.
- Работа над безопасностью конкретной системы и конкретного внедрения. Поскольку не бывает теоретической системы в вакууме и все информационные системы работают только во взаимодействии с другими системами и пользователями, это требует контроля безопасности на уровне каждого конкретного внедрения.
Возможные риски
Погружаясь глубже в тему, бесплатные системы с открытым кодом (FOSS) имеют ключевую особенность: активное сообщество, предупреждающее и исправляющее уязвимости. Однако часто сообщество, сопровождающее код, не работает по контракту и не получает оплату за свою работу. Это несет определенный риск в двух аспектах:
- Использование FOSS системы как компонента собственной инфраструктуры, например, SIEM с открытым кодом. Здесь следует изучить вопросы и выявить есть ли у этой системы ядро разработчиков и команда, которая работает платно и профессионально над этим решением. Это будет говорить о том, что есть контроль качества и политики проверки безопасности и приоритетности в их устранении. Примером таких команд могут служить Wazuh или RedHat. Если же это решение написал студент, его подхватили ничем не связанные люди и работают над ним непрофессионально и бесплатно – рискованность использования такого софта резко возрастает.
- Бесплатные компоненты и библиотеки. В решениях с закрытым кодом используются как бесплатные, так и платные посторонние компоненты и библиотеки. Писать все программное обеспечение с нуля коммерчески неэффективно, ведь выгоднее сосредоточиться на инновациях и использовать достижения других организаций. Выбрав FOSS, вы сможете открыто провести анализ, инвентаризацию всех посторонних компонентов. Эти решения открыты. Их компоненты просматривают и основная команда, и сообщество, и пользователи.
Вывод
Вывод, вытекающий из последнего тезиса, — решения с открытым и закрытым кодом более связаны, чем кажется на первый взгляд.
К этому также пришли исследователи из сообщества DevSecOps. Их дополнительный вывод: секретность кода программы напрямую не влияет на количество уязвимостей, а его открытость не повышает его рискованность. То есть очевидно, что закрытость или открытость кода не влияет прямо на количество ошибок в нем, решающим фактором является лишь приложенные усилия и их эффективность.
Joe Brockmeier в своей статье «Миф о безопасности с открытым кодом» приходит к следующему выводу: «Безопасно ли программное обеспечение с открытым кодом? В абсолютном выражении ни одно программное обеспечение не должно считаться свободным от уязвимостей. Но, если говорить относительно, я бы сказал, что да».
Мы видим, что границы между открытым и закрытым кодом стираются. С одной стороны компании, владеющие закрытым кодом, все больше пытаются найти компромисс и получить преимущества решений FOSS, к примеру, все технологические гиганты имеют bug hunting политику. А решения FOSS перестали быть студенческими проектами, их поддерживают полноценные компании и команды. Некоторые стартапы сразу же решают открыть свой код и работать в этой модели.
Крайне важным в современном мире является эффективное использование ресурсов, как интеллектуальных, так и финансовых. Поэтому из описанного выше можно сделать следующий вывод. Бесплатного программного обеспечения не существует, есть только с открытым кодом. В любом случае систему нужно настраивать, проверять, дорабатывать. Поэтому обязательно нужно обращать внимание на:
- Имеющиеся функции.
- Уровень поддержки.
Стоимость лицензии сама по себе не является полезной стоимостью, имеет значение сколько поддержки и какие функции вы получите с покупкой лицензии.







