Руслан Рахметов, Security Vision
Импортозамещение часто ассоциируют с переходом не только на отечественный софт, но и на Open Source решения, при этом компании сталкиваются с выбором между свободным и проприетарным ПО, между различными типами лицензий и моделями предоставления ПО. Существуют полярные мнения: некоторые считают, что проприетарное ПО в силу закрытости кода более надежно, а коммерческий платный софт более надежен, чем свободно распространяемое ПО, но энтузиасты Open Source уверены ровно в противоположном. Специалистам по кибербезопасности часто приходится управлять соответствующими юридическими рисками и рисками информационных систем и делать выбор между различными типами ПО и видами лицензий, учитывая долгосрочное влияние этого выбора на ИТ-инфраструктуру и поверхность атаки компании. В данной статье мы обсудим различные типы ПО и лицензий, а также оценим их влияние на кибербезопасность.
Начнем с базовой классификации типов ПО по назначению:
-
Системное (общее) ПО: управляет взаимодействием прикладного программного обеспечения с аппаратным обеспечением устройства и обеспечивает работу прикладного ПО. Примерами системного ПО будут операционные системы (ОС), драйверы устройств, утилиты ОС, микропрограммы (прошивки) устройства, системы управления базами данных (СУБД), средства разработки ПО, а также средства защиты информации.
-
Прикладное (специальное) ПО: выполняет бизнес-задачи посредством взаимодействия с пользователями. Примерами прикладного ПО будут различные офисные приложения (почтовые клиенты, редакторы документов и таблиц), средства совместной работы, мессенджеры, браузеры, бизнес-приложения (ERP, HRM, CRM системы и т.д.).
По способу приобретения, использования и распространения ПО можно разделить на следующие типы:
1. Свободное и открытое программное обеспечение (англ. FOSS, Free and open-source software)
1.1. Свободное ПО
Свободное ПО - это софт, который распространяется на условиях, позволяющих пользователям эксплуатировать его в любых целях. В английской интерпретации такой тип ПО называется Free software или Libre software - второе название подчеркивает не бесплатное его распространение, а именно свободу пользователя распоряжаться своей копией как угодно, вне зависимости от цены, которую он заплатил за такое ПО. Программа считается свободной, если она буквально "уважает" свободы пользователя, а именно предоставляет ему 4 права:
-
Исполнять (запускать) программу в любых целях;
-
Изучать работу программы и изменять (модифицировать) её так, чтобы она соответствовала специфическим требованиям пользователя;
-
Распространять копии исходной программы;
-
Распространять копии модифицированной пользователем программы.
Идеология свободного ПО подразумевает, что оно может быть коммерческим, поддерживается и стремление коммерческих компаний по оказанию платной профессиональной технической поддержки свободного ПО. Продажа свободного ПО (и исходного, и модифицированного) также поддерживается, при этом подчеркивается, что если лицензия на ПО запрещает пользователям делать копии программы и продавать их, то такая лицензия (и программа) не является свободной. При работе со свободным ПО важно учитывать и юридические правила: была разработана концепция «копилефт» (англ. Copyleft, буквально «авторское лево») в противовес привычного всем «копирайта» (англ. Copyright, авторское право), которая подразумевает, что разработчик программы официально признаёт её свободной и требует, чтобы все модифицированные и расширенные её версии также были свободными. Кроме копилефт-лицензий есть и более либеральные системы лицензирования - например, «разрешительная лицензия» (permissive software license) не требует, чтобы модифицированные версии программы были свободными, при этом должна сохранятся информация о разработчике оригинала с указанием авторских прав, а лицензия типа «общественное достояние» (public domain) не предусматривает оформление и защиту авторских прав вообще.
Американская некоммерческая организация «Фонд свободного программного обеспечения» (англ. Free Software Foundation, сокращенно FSF), основанная в 1985 году идеологом свободного софта Ричардом Столлманом, подчеркивает, что у авторов свободных программ есть юридические способы защиты от попыток недобросовестных игроков сделать его программу закрытой - фактически, присвоить себе программу, например, с целью дальнейшей продажи без указания авторства. Одним из таких способов является использование лицензии GPL (GNU General Public License) версии 3 - это копилефт-лицензия, которая юридически защищает свободное ПО от попыток наложить дополнительные ограничения на программу и превратить её в проприетарную. Версия GPL v3 была выпущена в 2007 году, а Ричард Столлман указывал, что с её выходом будет урегулирована некорректная практика использования ПО с лицензией GPL старых версий в некоторых устройствах, разработчики которых запрещают пользователям изменять и запускать модифицированные версии ПО. Члены FSF до сих пор внимательно относятся к свободам пользователей конечных устройств - например, недавно был анонсирован проект Librephone, в рамках которого планируется разработать ОС для смартфонов на базе Linux, которую будет поддерживать сообщество свободного ПО.
1.2. Открытое ПО
Открытое программное обеспечение (англ. Open Source) поставляется вместе с исходными текстами программ и должно соответствовать ряду критериев:
-
распространение и продажа программ не ограничивается;
-
программа должна включать в себя исходный код, должно поддерживаться распространение программы как в скомпилированном виде, так и в виде исходного кода для самостоятельной компиляции пользователями;
-
разрешается распространение модифицированных версий программы с сохранением условий Open Source-лицензии оригинальной версии программы;
-
запрещается дискриминация людей, групп, отраслей и направлений бизнеса, права на программу в соответствии с Open Source-лицензией передаются вместе с передачей программы, а лицензия не должна быть привязана к конкретной реализации, не должна запрещать совместное использование с программами с другими типами лицензий и должна быть технологически-нейтральной.
Таким образом, открытое ПО имеет много общего со свободным ПО - например, концепция свободного ПО требует, чтобы программу можно было изменять и распространять её модифицированные копии, для чего требуется доступ к исходному коду, поэтому большинство Open Source программ являются также и свободными программами. Однако у данных двух подходов есть определенные идеологические отличия, которые подчеркивает Ричард Столлман.
Open Source Initiative является американской коммерческой организацией, основанной в 1998 году для поддержки разработчиков и продвижения открытого ПО. На сайте Open Source Initiative приведен список различных типов Open Source-лицензий - в частности, там присутствуют такие популярные лицензии, как:
-
Apache License, Version 2.0 (Apache-2.0)
-
GNU Affero General Public License version 3 (AGPL-3.0-only)
-
GNU General Public License version 3 (GPL-3.0-only)
-
GNU Lesser General Public License version 3 (LGPL-3.0-only)
-
Mozilla Public License 2.0 (MPL-2.0)
-
The 3-Clause BSD License (BSD-3-Clause)
-
The MIT License (MIT)
2. Проприетарное ПО
Противоположностью свободному ПО является проприетарное ПО, в котором правообладатель (автор, разработчик) сохраняет за собой все права на ПО и запрещает конечным пользователям распространять и модифицировать его. У проприетарного ПО может быть как закрытый исходный код (closed-source software), так и доступный исходный код (source-available software), что, однако, не делает его софтом с открытым исходным кодом (Open Source). Кроме того, проприетарное ПО может быть как платным (коммерческим), так и бесплатным (freeware).
Примерами моделей монетизации платного ПО могут быть:
-
коммерческое ПО (COTS/MOTS, поговорим о нём далее);
-
Adware - программа бесплатна, но пользователи видят рекламу, доход от показа которой идёт разработчику;
-
Donationware - программа бесплатна, но разработчик предлагает пользователям сделать ему добровольное пожертвование (донат);
-
Shareware - условно-бесплатное ПО, которое либо работает в течение определенного времени (trial, триал), а потом требует приобретения, либо отображает пользователю навязчивые сообщения (nags, наги) о необходимости купить программу. Сюда же можно отнести ПО, распространяемое по модели Freemium, в котором бесплатен только базовый функционал, а продвинутые возможности доступны уже после оплаты.
3. Готовое коммерческое программное обеспечение (англ. COTS, Commercial-off-the-Shelf)
Коммерческое ПО, доступное для покупки широкому кругу бизнес-пользователей, подразумевает «коробочное» исполнение (без кастомных модулей), внедрять и настраивать которое может либо сам покупатель, либо интегратор (партнер производителя), при этом для ПО обеспечивается техническая поддержка от производителя. Большинство программных продуктов на рынке - это именно COTS-решения, однако, если речь идёт о разработке или доработке решения на заказ (кастомизация от производителя), то будет использоваться уже другой термин - MOTS (Modified Off-The-Shelf, модифицированное производителем ПО), иногда встречается термин bespoke software (буквально - сделанное на заказ ПО).
Рассматривая различные типы ПО и СЗИ, которые планируется внедрять в компании, специалисту по ИБ нужно учитывать ряд аспектов:
1) Обязательно нужно следить за лицензионной чистотой используемого ПО и СЗИ. Например, лицензия может запрещать использование ПО/СЗИ в интересах третьих лиц, поэтому в холдинговой структуре будет юридически некорректно использовать продукт (скажем, SIEM) для защиты дочерних компаний. Аналогичные сложности могут возникнуть и в случае необходимости установки какого-либо ПО на устройство, которое не принадлежит компании - скажем, на личный смартфон руководителя или на ноутбук, стоящий на балансе другого юридического лица.
2) Сложившееся мнение о высокой безопасности Open Source решений по сравнению с проприетарным ПО связано с распространенностью программ этих типов. Например, Microsoft выпускает массу многофункциональных коммерческих решений, которые эксплуатируются в крупных компаниях по всему миру и этим привлекают злоумышленников, регулярно находящих опасные уязвимости в них; с другой стороны ОС семейства BSD (FreeBSD, NetBSD, OpenBSD) достаточно компактны и выполняют базовый набор функций, а их относительно небольшая распространенность (по сравнению с теми же ОС Windows) снижает интерес атакующих к ним. Несмотря на то, что уязвимостей в продуктах Microsoft было найдено на порядки больше, чем в BSD, сложно однозначно утверждать, что BSD ОС лучше написаны и более безопасны - если они станут такими же популярными, как Windows, то станут такой же мишенью для хакеров.
3) Доступность исходного кода помогает в том случае, когда у проекта есть большое число заинтересованных пользователей, которые смогут выявить уязвимости и ошибки в коде и сообщить о них разработчикам - они, в свою очередь, должны будут оперативно отреагировать на сообщения. Если же проект заброшен, но им пользуется целевая компания-жертва, то злоумышленники, вероятно, найдут потенциальные уязвимости в опубликованном исходном коде, а разработчик вряд ли сможет быстро выпустить обновление. Показателем надежности ПО может стать успешный доскональный аудит безопасности кода и продуктов, проведенный известной ИБ-компанией.
4) Управление уязвимостями может быть нетривиальным при работе с Open Source: необходимость следить за уязвимостями в upstream-пакетах, различные модули и компоненты, многообразие версий и типов ОС, высокие требования к экспертизе Linux-администраторов могут осложнить оперативное выявление и устранение уязвимостей и ошибок.
5) Зависимость крупномасштабных Open Source продуктов от кода, который пишут никем не контролируемые энтузиасты, также является вызовом. С одной стороны, многие атакующие нацелены на популярные GitHub-проекты, получив доступ к которым можно внести широкомасштабные вредоносные изменения - для этого взламывают аккаунты разработчиков или пытаются получить права на внесение изменений за счет социальной инженерии (например, представляясь готовым помочь энтузиастом). С другой стороны, сами разработчики могут нарушить правила Open Source сообщества об отсутствии дискриминации и внедрить деструктивные возможности в проект из-за хактивизма - так случилось в 2022 году с популярным npm-пакетом node-ipc, в который автор внес деструктивный функционал, атаковавший российских и белорусских пользователей.
6) Злоумышленники пользуются неразберихой и быстрыми изменениями в Open Source сообществе - например, используют технику typosquatting для создания поддельных вредоносных пакетов, имена которых похожи на оригинальные, и атакуют пользователей, допускающих опечатки при поиске.
7) Атаки на цепочки поставок стали большой сложностью в мире ИБ, и Open Source страдает от них в большой степени. Например, в 2024 году атакующие внедрили бэкдор в утилиту для сжатия данных XZ, которая входит в состав большинства дистрибутивов Linux - их действия были обнаружены, но в случае успеха атаки они получили бы несанкционированный удаленный доступ к миллионам инсталляций.
8) Отсутствие технической поддержки некоторых Open Source продуктов тоже может отпугнуть те компании, у которых в штате нет сильного Linux-администратора, который способен самостоятельно решить проблему. С учетом дефицита опытных специалистов, возможны сложности с поиском и удержанием такого эксперта.
9) Вместе с описанными особенностями решений класса Open Source нельзя забывать и про недостатки некоторых проприетарных решений с закрытым кодом, разработчики которых оперируют ложным принципом «Безопасность через неясность» (англ. Security through obscurity) и надеются, что закрытый исходный код поможет защитить продукт от эксплуатации уязвимостей в нём.