Спецпроекты

ПО Свободное ПО Безопасность Стратегия безопасности Маркет

В Open Source-проектах взрывной рост числа уязвимостей. На чем пишут самое «дырявое» ПО

Количество уязвимостей в проектах с открытым исходным кодом всего за год увеличилось на 50%. Бреши присутствуют в ПО, написанном на самых разных языках, но чаще всего они находятся в проектах, созданных на C, PHP и Java.

«Дырявое» ПО

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

К такому выводу пришли специалисты компании WhiteSource Software, занимающейся, в том числе, разработкой одноименной системы управления лицензиями, рассчитанной в первую очередь на продукты с открытым исходным кодом. Проведя анализ рынка такого ПО, они выяснили, что в 2019 г. было выявлено более 6000 уязвимостей, тогда как в 2018 г. их количество едва превышало 4000.

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

Зависимость от языка программирования

Наличие или отсутствие уязвимостей в том или ином ПО не зависит от того, какой язык использовался для их написания, но может быть связан с популярностью и распространением самого языка. Так, по статистике WhiteSource, написанные на языке С программы и иные проекты в 2019 г. содержали наибольший процент уязвимостей в сравнении с другими языками – 30%. При этом в период с 2009 по 2018 гг. этот процент был еще выше – 47%.

Язык C лидирует в рейтинге WhiteSource, но в данном случае его это не красит

Второе место занял PHP с результатом 27% (15% в 2009-2018 гг.), на третьем месте находится Java – 15% в 2019 г. и 11% в 2009-2018 гг. Всего в рейтинге WhiteSource представлено семь языков, и на четвертом месте находится JavaScript (10% с 2009 по 2019 гг.).

Пятую строчку занял C# (9% в 2019 г., 6% в 2009-2018 гг.). За ним следуют Python (5% и 6%) и Ruby (4% и 5%).

Самые распространенные уязвимости

Все уязвимости, приведенные в статистике WhiteSource, имеют индекс CWE и различный номер. Это означает, что они внесены в единую систему классификации ошибок, приводящих к уязвимостям – Common Weakness Enumeration или CWE.

kod602.jpg
CWE-79 - самая часто встречающаяся уязвимость в 2019 году

Наиболее распространенны классом уязвимости по итогам 2019 г. стал CWE-79 (Cross-site Scripting, межсайтовое выполнение сценариев). За ним следуют класс CWE-20 (Improper Input Validation, некорректная проверка входных данных) и CWE-119 (Buffer Errors, выполнение операций за пределами буфера памяти).

kod603.jpg
На шесть языков приходятся столько же самых "популярных" уязвимостей

Четвертое и пятое место в рейтинге занимают CWE-125 (Out-of-bounds Read, чтение за пределами буфера) и CWE-200 (Information Exposure раскрытие информации) соответственно. В 2018 г. картина была схожей (лишь CWE-20 и CWE-119 поменялись местами), чего нельзя сказать про 2017 г. По его итогам места с первого по пятое заняли: CWE-79, CWE-125, снова CWE-79 (не исключена ошибка в отчете WhiteSource), CWE-200 и CWE-20. в период с 2014 по 2016 гг. включительно в лидерах оказывались и другие уязвимости: CWE-264 (Permissions, Privileges, and Access Controls; Разрешения, привилегии и средства управления доступом), CWE-284 (Некорректное управление доступом, Improper Access Control) и CWE-399 (Ошибки управления ресурсами, Resource Management Errors).

Статистика по уязвимостям в Open Source за последние шесть лет

В программах на языке C в 2019 г. чаще всего встречались уязвимости CWE-119, CWE-125, а также CWE-476 – NULL Pointer Dereference (Разыменование нулевого указателя). В ПО на оставшихся языках из списка лидерами стали CWE-79, CWE-20 и CWE-200.

Масштабы проблемы

Компоненты с открытым исходным кодом используются во многих современных программах, написанных под различные платформы. Статистику за 2019 г. WhiteSource не приводит, но, по ее данным, в начале 2013 г. открытые программные компоненты использовались приблизительно в 67% программных проектов. Из них около 85% содержали в себе устаревшие Open Source-компоненты, для которых было доказано наличие тех или иных угроз безопасности.

Эльяс Касми

Короткая ссылка