Безопасность через неясность работает в некоторых редких ситуациях: например, указать нестандартный порт SSH для защиты от брута или закамуфлировать критически важный объект, как сова на фотографии (см. приёмы обфускации кода). Да, есть такие экзотические методы. Но обычно наилучшую защиту обеспечивает максимальная открытость кода.
Чем меньше секретов в коде программы — тем безопаснее.
Насколько справедливо это парадоксальное утверждение? Посмотрим на статистику.
Статистика Project Zero за 2019–2021 годы говорит сама за себя. В таблице указаны 0day, то есть самые опасные уязвимости, найденные специалистами Project Zero:
Вендор | Всего багов | Исправлено за 90 дней | Исправлено в льготный период | Просрочили все сроки | Среднее время исправления (дней) |
---|---|---|---|---|---|
Apple | 84 | 73 (87%) | 7 (8%) | 4 (5%) | 69 |
Microsoft | 80 | 61 (76%) | 15 (19%) | 4 (5%) | 83 |
56 | 53 (95%) | 2 (4%) | 1 (2%) | 44 | |
Linux | 25 | 24 (96%) | 0 (0%) | 1 (4%) | 25 |
Adobe | 19 | 15 (79%) | 4 (21%) | 0 (0%) | 65 |
Mozilla | 10 | 9 (90%) | 1 (10%) | 0 (0%) | 46 |
Samsung | 10 | 8 (80%) | 2 (20%) | 0 (0%) | 72 |
Oracle | 7 | 3 (43%) | 0 (0%) | 4 (57%) | 109 |
Другие* | 55 | 48 (87%) | 3 (5%) | 4 (7%) | 44 |
ВСЕГО | 346 | 294 (84%) | 34 (10%) | 18 (5%) | 61 |
Project Zero — это группа вайтхэтов, то есть этичных хакеров, которых спонсирует Google. Они ищут 0day-уязвимости во всех продуктах, после чего дают разработчикам стандартные 90 дней (+ещё 14) на закрытие уязвимости, прежде чем обнародовать её в открытом доступе.
Важно заметить, что информация в открытом доступе публикуется даже в том случае, если баг ещё не закрыт. Так что этой уязвимостью могут воспользоваться все желающие без исключения, в том числе блэкхеты.
Это очень важный психологический и воспитательный момент, который заставляет компании более оперативно реагировать на сигналы от хакеров.
Как видим, тезис о безопасности опенсорса имеет под собой основания. В опенсорсе действительно меньше уязвимостей, а каждую из них быстрее устраняют, чем в проприетарных системах вроде Windows, macOS и iOS.
К сожалению, в бочке мёда есть ложка дёгтя.
Абсолютной надёжности не бывает
В последние годы произошло несколько неприятных историй, которые больно ударили по всем. Наверное, самые громкие уязвимости в опенсорсных проектах:
-
Heartbleed (библиотека OpenSSL), CVE-2014-0160
- Log4Shell (библиотека Log4j), CVE-2021-44228
Они поставили под сомнение тезис о надёжности опенсорса, снова подняв проблему выгорания мейнтейнеров, которые бескорыстно несут на себе тяжкий груз.
Посторонний человек может даже сделать вывод, что безопасность опенсорса — это какой-то миф. Дело в том, что тезис об абсолютной надёжности был неправильным изначально. Своей относительно высокой безопасностью Open Source заслужил слишком высокую репутацию, которая далека от реальности.
Преимущество свободного софта стали настолько очевидными для всех, что этот факт принимался как данность. Однако абсолютной надёжности и полной безопасности не существует, по определению.
Эшелонированная оборона
На самом деле баги есть везде. Речь идёт только о том, что в опенсорсе их гораздо меньше, чем в закрытом коде. И они быстрее закрываются.
Самая опасная вещь — смартфон
Больше всего уязвимостей находят в мобильных системах. При этом уязвимости в смартфонах закрываются медленнее всего.
Примечание. На первый взгляд кажется, что в iOS находят гораздо больше уязвимостей, чем в Android. На самом деле статистика сильно искажена из-за методики выпуска обновлений безопасности Apple, которая выпускает патчи для приложений iMessage, Facetime и Safari/WebKit в виде обновлений iOS. То есть уязвимости в отдельных приложениях записыаваются в статистику уязвимостей iOS.
Вендор | Всего багов | Среднее время исправления |
---|---|---|
iOS |
76 |
70 |
Android (Samsung) |
10 |
72 |
Android (Pixel) |
6 |
72 |
Ситуация усугубляется тем, что даже после выпуска патчей значительная часть пользователей не обновляет смарфтоны, потому что производитель уже прекратил их поддержку.
Пользователи Android могут рутануть смарфон и поставить свободную прошивку LineageOS (продолжение известного проекта CyanogenMod), см. инструкцию на Хабре и дополнение к ней. Естественно, код прошивки LineageOS открыт для изучения.
Что ж, сторонники свободного ПО часто говорят, что открытый код безопаснее. Благодаря непрерывному аудиту в нём меньше закладок и опасных багов. Судя по статистике Project Zero, так оно и есть.
Комментарии (10)
funca
04.03.2022 00:52+5Скорее больше ищут там, кто больше платит. Поэтому и больше находят.
Пропиетарные приложения часто используют библиотеки с открытым кодом. Вполне вероятно, что часть уязвимостей может быть из-за них. Какая доля фиксов отдается потом сообществу, а какая остаётся внутри компаний, скажем для сохранения конкурентных преимуществ, или просто экономии ресурсов - хороший вопрос.
Iv38
04.03.2022 05:05+10Я вообще не понял как сделан вывод, вынесенный в заголовок. Это кликбейт просто? В таблице есть единственный опенсорсный продукт - Linux. Ядро? При этом он конкурирует с компаниями. Я не понимаю как. У Гугла есть куча свободого софта, и у Майкрософта. И эти компании вносят существенный вклад в ядро Линукса.
Числа в целом настолько невелики, что искать там статистическую значимость трудно.
Если абсолютно, то у Самсунга меньше багов и все закрыты в срок. Так может у Самсунга меньше уязвимостей и это надо вынести в заголовок?
saipr
04.03.2022 10:25В последние годы произошло несколько неприятных историй, которые больно ударили по всем.
Странная статья и странные выводы!
saboteur_kiev
04.03.2022 16:24Один из важнейших факторов опенсорса - что можно свободно исследовать исходники. А в этом случае искать баги гораздо проще.
А дальше - зависит от того, насколько популярен конкретный опенсорс проект, и как много разработчиков вокруг него крутится.
Iv38
05.03.2022 04:59Считается, что это один из важных факторов. На деле, крупные продукты настолько сложны, что без приложения специальных усилий нахождение в них уязвимостей и даже специально заложенных бэкдоров является нетривиальной задачей.
d1gital_love
04.03.2022 17:37В Linux из-за PID reuse (PID wraparound) можно дел наворосить.
Linux это крайне ненадёжная система. В суперкомпьютерах она относительно успешно используется только из-за физического ограничения кластеров от всего остального.
Особенно PID reuse (PID wraparound) касается любителей клепать всё через короткоживущие процессы и UNIX shell.
Sulerad
04.03.2022 21:05+1Замечу, что в современном Linux PID использует 64 бита. 2^64 наносекунд это 584 года, причём создание процесса — относительно дорогая операция.
d1gital_love
05.03.2022 06:39А как же pid_max? Документнация по pid_max.
cat /proc/sys/kernel/pid_max
32768
uname --kernel-release
5.4.0-100-genericPID_MAX_DEFAULT на GitHub
unsignedchar
05.03.2022 22:34/* * A maximum of 4 million PIDs should be enough for a while. * [NOTE: PID/TIDs are limited to 2^30 ~= 1 billion, see FUTEX_TID_MASK.] */
napa3um
Важно понимать, что роялит не сам аспект открытости софта напрямую, а количество и качество программистов, привлечённых к его развитию (и количество критичных пользователей). Открытие исходников - лишь один из путей достижения этих очевидных целей (и даже лишь первый шаг на этом пути) :). Удивительно, но качество софта возрастает и с наращиванием количества тестировщиков :).