Безопасность через неясность работает в некоторых редких ситуациях: например, указать нестандартный порт 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, так оно и есть.