Безопасность через неясность работает в некоторых редких ситуациях: например, указать нестандартный порт 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
Google 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
*Apache, ASWF, Avast, AWS, c-ares, Canonical, F5, Facebook, git, Github, glibc, gnupg, gnutls, gstreamer, haproxy, Hashicorp, insidesecure, Intel, Kubernetes, libseccomp, libx264, Logmein, Node.js, opencontainers, QT, Qualcomm, RedHat, Reliance, SCTPLabs, Signal, systemd, Tencent, Tor, udisks, usrsctp, Vandyke, VietTel, webrtc, Zoom

Project Zero — это группа вайтхэтов, то есть этичных хакеров, которых спонсирует Google. Они ищут 0day-уязвимости во всех продуктах, после чего дают разработчикам стандартные 90 дней (+ещё 14) на закрытие уязвимости, прежде чем обнародовать её в открытом доступе.

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

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

Как видим, тезис о безопасности опенсорса имеет под собой основания. В опенсорсе действительно меньше уязвимостей, а каждую из них быстрее устраняют, чем в проприетарных системах вроде Windows, macOS и iOS.

К сожалению, в бочке мёда есть ложка дёгтя.

Абсолютной надёжности не бывает


В последние годы произошло несколько неприятных историй, которые больно ударили по всем. Наверное, самые громкие уязвимости в опенсорсных проектах:


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

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

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


Эшелонированная оборона

На самом деле баги есть везде. Речь идёт только о том, что в опенсорсе их гораздо меньше, чем в закрытом коде. И они быстрее закрываются.

Самая опасная вещь — смартфон


Больше всего уязвимостей находят в мобильных системах. При этом уязвимости в смартфонах закрываются медленнее всего.

Примечание. На первый взгляд кажется, что в iOS находят гораздо больше уязвимостей, чем в Android. На самом деле статистика сильно искажена из-за методики выпуска обновлений безопасности Apple, которая выпускает патчи для приложений iMessage, Facetime и Safari/WebKit в виде обновлений iOS. То есть уязвимости в отдельных приложениях записыаваются в статистику уязвимостей iOS.

Вендор Всего багов Среднее время исправления

iOS

76

70

Android (Samsung)

10

72

Android (Pixel)

6

72

В эту статистику попала и последний 0day для iOS, который эксплуатировался несколько лет и был закрыт только 13 сентября 2021 года в iOS 14.8 (CVE-2021-30860). В данном случае зловред устанавливается через скрытые сообщения iMessage незаметно для пользователей. Для взлома достаточно знать только телефонный номер жертвы и AppleID. Подробнее см. технический отчёт Project Zero.

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

Пользователи Android могут рутануть смарфон и поставить свободную прошивку LineageOS (продолжение известного проекта CyanogenMod), см. инструкцию на Хабре и дополнение к ней. Естественно, код прошивки LineageOS открыт для изучения.

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

Комментарии (10)


  1. napa3um
    03.03.2022 23:01
    +8

    Важно понимать, что роялит не сам аспект открытости софта напрямую, а количество и качество программистов, привлечённых к его развитию (и количество критичных пользователей). Открытие исходников - лишь один из путей достижения этих очевидных целей (и даже лишь первый шаг на этом пути) :). Удивительно, но качество софта возрастает и с наращиванием количества тестировщиков :).


  1. funca
    04.03.2022 00:52
    +5

    Скорее больше ищут там, кто больше платит. Поэтому и больше находят.

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


  1. Iv38
    04.03.2022 05:05
    +10

    Я вообще не понял как сделан вывод, вынесенный в заголовок. Это кликбейт просто? В таблице есть единственный опенсорсный продукт - Linux. Ядро? При этом он конкурирует с компаниями. Я не понимаю как. У Гугла есть куча свободого софта, и у Майкрософта. И эти компании вносят существенный вклад в ядро Линукса.

    Числа в целом настолько невелики, что искать там статистическую значимость трудно.

    Если абсолютно, то у Самсунга меньше багов и все закрыты в срок. Так может у Самсунга меньше уязвимостей и это надо вынести в заголовок?


  1. saipr
    04.03.2022 10:25

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

    Странная статья и странные выводы!


  1. saboteur_kiev
    04.03.2022 16:24

    Один из важнейших факторов опенсорса - что можно свободно исследовать исходники. А в этом случае искать баги гораздо проще.

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


    1. Iv38
      05.03.2022 04:59

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


  1. d1gital_love
    04.03.2022 17:37

    В Linux из-за PID reuse (PID wraparound) можно дел наворосить.

    Linux это крайне ненадёжная система. В суперкомпьютерах она относительно успешно используется только из-за физического ограничения кластеров от всего остального.

    Особенно PID reuse (PID wraparound) касается любителей клепать всё через короткоживущие процессы и UNIX shell.


    1. Sulerad
      04.03.2022 21:05
      +1

      Замечу, что в современном Linux PID использует 64 бита. 2^64 наносекунд это 584 года, причём создание процесса — относительно дорогая операция.


      1. 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-generic

        PID_MAX_DEFAULT на GitHub


        1. 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.] */