Linux, Tor и Chromium «дырявые» насквозь. Взломать могут каждого. Виноваты разработчики

Программное обеспечение с открытым кодом являет собой кладезь «дыр» и уязвимостей, показало исcледование CISA. Его пишут на так называемых «небезопасных» языках, которые не умеют правильно защищать память. Linux на 95% состоит из небезопасного кода, Tor – на 93%, и даже браузер Chromium, основа «Яндекс браузера» – на 51%. Вина лежит на разработчиках, которые не спешат отказываться от устаревших, но привычных им языков программирования.

Свобода не гарантирует безопасность

ПО с открытым исходным кодом – это самый настоящий рассадник уязвимостей, как показало исследование американского Агентства по кибербезопасности и защите инфраструктуры (Cybersecurity and Infrastructure Security Agency, CISA). Профильный портал Bleeping Computer пишет, что весь наиболее востребованный свободный софт содержит множество потенциальных «дыр» по причине неправильного выбора разработчиками языка программирования.

Аналитики условно поделили все языки программирования на две группы – безопасные и небезопасные для памяти. К первым относятся языки, в которых по умолчанию есть инструменты для предотвращения распространенных ошибок при работе ПО с памятью компьютера, и, следовательно, для защиты от эксплуатации этих ошибок злоумышленниками. Речь в первую очередь об ошибке переполнения буфера (buffer overflow) и использования после высвобождения памяти.

Bleeping Computer пишет, что с точки зрения CISA безопасные языки умеют в автоматическом режиме управлять памятью. Таким умением располагает, например, Rust (в нем реализована система устранения так называемой «гонки данных», Data Race). Также к безопасным в CISA отнесли любимый россиянами Java, Go, Python (самый популярный язык программирования в мире) и C# - эти языки «контролируют память ПК методом «сборки мусора» (Garbage Collection)», указывает Bleeping Computer. По всей видимости, в эту категорию можно отнести и новый язык Zig – в нем тоже используется данный метод, а еще он, как сообщал CNews, позволяет программистам зарабатывать сотни тысяч рублей ежемесячно.

Использование свободного ПО надежно защищает от правообладателей. Но совершенно не защищает от хакеров

Согласно отчету CISA, языки С и С++, а также Objective-C, Assembly и ряд других отнесены к категории небезопасных языков. В них «нет штатных алгоритмов управления памяти», пишет Bleeping Computer, и разработчикам приходится придумывать их самостоятельно, а это повышает риски.

Не ПО, а швейцарский сыр

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

Результаты исследования крайне неутешительны. В них сказано, что из всех критически важных проектов Open Source 52% содержат код, для написания которого использовались языки из группы небезопасных.

И это еще даже не рекорд. К примеру, если просуммировать все строки кода в этом ПО, то 55% строк будут написаны на небезопасных языках.

При этом популярность проекта вовсе не означает, что он будет безопасен – тут, судя по всему, обратная зависимость. Например в Linux коэффициент небезопасного для памяти кода достигает 95%, а в браузере Tor этот показатель равен 93%. В топ-10 входит браузер Chromium, основа большинства самых популярных обозревателей, включая Vivaldi и «Яндекс Браузер». Его результат 51%.

Хуже Chromium выступили СУБД MySQL Server (84%), библиотека для С glibc (85%), СУБД Redis (85%), и SystemD, подсистема инициализации и управления службами в Linux (65%). Наилучший (среди худших) результат у открытого фреймворка Electron – 47%.

Программистам пора развиваться

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

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

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

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