Действительно ли открытый исходный код более безопасен?

Опубликовано: 14 Апреля, 2023

Споры о том, что лучше, программное обеспечение с открытым исходным кодом (часто бесплатное) или коммерческое программное обеспечение с закрытым исходным кодом, продолжают бушевать. Сторонники открытого исходного кода утверждают, что он не только экономит деньги, но и по своей сути более безопасен. Первое утверждение может показаться само собой разумеющимся (хотя если принять во внимание кривую обучения, административные расходы и поддержку — или ее отсутствие — «бесплатное» программное обеспечение не всегда имеет такое большое преимущество в совокупной стоимости владения, как может показаться). Второе утверждение — это то, что мы обсудим в этой статье. Действительно ли открытый исходный код по своей сути более безопасен, чем коммерческое программное обеспечение с закрытым исходным кодом? Если да, то почему? А если нет, то почему у многих такое восприятие?


Что такое открытый исходный код?


Прежде чем мы сможем разумно обсудить различия между программным обеспечением с открытым исходным кодом и проприетарным программным обеспечением, нам необходимо уточнить, что на самом деле означает этот термин. Многие люди приравнивают «открытый исходный код» к «бесплатному», но это не обязательно так. Открытый исходный код может быть — и является — основой для таких продуктов, как RedHat и десятков других коммерческих дистрибутивов Linux, стоимость которых варьируется от нескольких долларов до нескольких тысяч (премиум-версия RedHat Enterprise Linux стоит 2499 долларов за Intel x86 и выше). до 18 000 долларов за IBM S/390).


«Открытый исходный код» также не означает «нелицензионный». На самом деле существует множество лицензий, по которым распространяется программное обеспечение с открытым исходным кодом. Некоторые из самых популярных включают GPL (общедоступная лицензия GNU), BSD и общественная лицензия Mozilla. Некоммерческая организация Open Source Initiative (OSI) разработала процесс сертификации лицензий. Вы можете увидеть список лицензий с открытым исходным кодом, одобренных OSI, по адресу http://opensource.org/licenses/.


Само название говорит само за себя: программное обеспечение с открытым исходным кодом означает, что исходный код (программа, часто написанная на C, C++ или даже языке ассемблера) доступен любому желающему и может быть изучен, изменен и использован для написания дополнительных программ. Это отличается от «закрытого» или проприетарного программного обеспечения, такого как Microsoft Windows, для которого исходный код является строго охраняемой коммерческой тайной (за исключением случаев, когда он становится достоянием общественности).


Когда закрытый код становится открытым


Что подводит нас к недавним событиям: в начале февраля сообщалось, что часть исходного кода Windows NT 4.0 и Windows 2000 просочилась в Интернет. Файлы, содержащие код, были размещены на ряде P2P-сайтов и активно скачивались. Доступный код составлял лишь небольшую часть всей кодовой базы для операционных систем, но инцидент вызвал большой ужас как в Редмонде, так и в ИТ-сообществе.


Microsoft по понятным причинам беспокоилась о своих правах на интеллектуальную собственность, но ИТ-эксперты подыгрывали аспекту безопасности. Приводились цитаты многих неназванных (и некоторых именных) «экспертов по безопасности», заявивших, что утечка исходного кода представляет собой серьезную проблему безопасности и что хакеры могут использовать эту информацию для запуска новых и улучшенных атак на операционные системы Windows.


Означает ли это, что открытый исходный код менее безопасен?


Эти утверждения должны сбивать с толку тех, кто прислушивался к сторонникам открытого исходного кода, которые годами говорили нам, что их программное обеспечение более безопасно именно потому, что исходный код легко доступен для всех. Если наличие кода «где-то там» делает Linux более безопасным, почему то же самое делает Windows менее безопасной?


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


Кто тогда прав? Помимо всех других вопросов, каковы преимущества и недостатки безопасности программного обеспечения с открытым исходным кодом по сравнению с проприетарным? Давайте взглянем.


Безопасность через неизвестность


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


Сторонники открытого исходного кода возражают, что это всего лишь форма «безопасности через неизвестность», концепция, которая обычно отвергается ИТ-сообществом как неэффективная. И, конечно же, само по себе оно не защитит вас как домовладельца или поставщика программного обеспечения. Простое молчание о своем имуществе может уменьшить вероятность того, что воры нападут на вас, но было бы глупо оставлять свои двери незапертыми на ночь только потому, что вы не распространяли информацию о том, что у вас есть.


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


Говоря о высоком уровне атак на Windows, разработчики открытого исходного кода часто указывают на это как на «доказательство» того, что их программное обеспечение более безопасно. Однако количество атак ничего не доказывает, кроме того, что Windows является более популярной целью. Если 90 % жителей района хранят свои ценности в сейфах определенной марки, умный грабитель потратит свое время на то, чтобы научиться взламывать сейфы этого типа. Остальные 10% могут использовать бренд такого же или более низкого качества, но они могут подвергаться успешным атакам реже просто потому, что продукт, который они используют, не так распространен.


Если бы вы были хакером, и большинство систем, с которыми вы сталкивались, работали под управлением Windows, а меньшее количество — под другой ОС, для какой из них вы бы предпочли разрабатывать атаки и вирусы? Сторонники открытого исходного кода любят «факты», свидетельствующие о том, что больше компьютеров с Windows скомпрометировано, больше веб-сайтов на базе Windows испорчено и т. д. неизвестность.


Преимущества и недостатки безопасности открытого исходного кода


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


Сторонники другой стороны утверждают, что закрытая система, в которой только доверенные инсайдеры отлаживают код, снижает вероятность того, что обнаруженные уязвимости будут использованы до того, как они будут исправлены.


Они также отмечают, что существует множество причин (помимо доли рынка), не связанных с технической безопасностью программного обеспечения, но которые могут объяснить большее количество атак на проприетарное программное обеспечение. Во-первых, это природа «войны операционных систем»: поскольку программное обеспечение с открытым исходным кодом традиционно было более сложным в использовании, те, кто тяготеет к нему, как правило, более технически подкованы. Большее количество самопровозглашенных хакеров, выступающих за открытый исходный код и выступающих против Microsoft, означает, что существует больше людей с мотивом и средствами для написания вредоносного кода, нацеленного на системы Windows.


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


Какой ответ?


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


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