Как Закон Линуса работает с безопасностью свободного ПО?

Главная причина полюбить Linux — безопасность ПО с открытым кодом.

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

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

Стоит ли доверять открытому коду?

Есть такой стереотип, что открытый код безопаснее, чем закрытый. Тот, кто так говорит, не задумывается о неправильной логике этой фразы: открытый код не становится волшебным образом защищенным из-за своей открытости. 

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

Закон Линуса

«При достаточном количестве наблюдателей все ошибки выплывают на поверхность»

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

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

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

Некоторые считают, что если основное программное обеспечение состоит из сотен тысяч строк кода, то его невозможно проверить. Пусть это не вводит вас в заблуждение. Код сильно структурирован, и уязвимости не выглядят как одна строка среди миллиона. Уязвимости — это целые функции, которые заметить легче.

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

Некоторые указывают на такие ресурсы, как Common Vulnerabilities and Exposures (CVE), видит количество репортов там и делает вывод, что открытый код опасен, а проприетарные коды защищены.

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

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

Доверие и люди

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

  • мы знаем об уязвимости (вирус);
  • мы знаем, как предотвратить распространение (самоизоляция);
  • кто-то нарушает правила карантина и разносит вирус дальше.

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

Доверие и программное обеспечение

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

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

Открытый код по своей сути не является более безопасным, чем проприетарный, но система аудита свободного ПО работает гораздо эффективнее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *