Обожаемые россиянами языки программирования оказались уязвимыми для хакеров. В топе самых дырявых – Java, JavaScript и C#
Популярные в России и мире языки программирования не могут похвастаться высоким уровнем безопасности. В полной мере это касается Java, C# и JavaScript – «дыр» написанном на них ПО больше, нежели в ПО Python или Go. Они максимально уязвимы для хакеров, что негативно отражается на общей безопасности написанных на них проектов.
Любимый – не значит безопасный
Язык программирования Java, один из самых популярных в мире и горячо любимый российскими программистами, оказался в числе наиболее уязвимых для хакеров всех мастей. Об этом CNews сообщили представители ИБ-компании AppSec Solution.
Специалисты компании провели исследование, в ходе которого рассчитали общую и критическую плотность риска для семи основных языков программирования. Под плотностью риска безопасности, известной также как Security Risk Density (SRD), подразумевается в данном случае суммарное число неисправленных «дыр» в программном обеспечении на 1000 значимых строк кода программ, написанных на конкретном языке программирования, уточнили представители AppSec Solution.
Java, JavaScript и C# оказались на первых трех местах по уровню «дырявости». А вот Python, который с октября 2021 г. удерживает титул самого популярного языка программирования в мире, занял предпоследнее место в этом рейтинге. Более безопасны, чем он, оказался Go, он же Golang, созданный Google. К слову, он, как сообщал CNews, очень полюбился хакерам и вирусмейкерам за то, что позволяет надежно прятать вредоносное ПО внутри полностью легитимных программ и тем самым успешно обходить антивирусную защиту.
Как составлялся рейтинг
Основу для подготовленного экспертами AppSec Solution рейтинга составили обезличенные и анонимизированные данные нескольких компаний из самых разных сфер. Это представители топливно-энергетического комплекса, телеком-компаний, банков, ИТ-фирм, различных промышленных предприятий и пр.
При помощи инструмента сбора аналитики и контроля уязвимостей AppSec.Hub был проведен анализ около 140 млн строк кода, 8500 элементов ПО (кодовых баз, артефактов сборки, стендов) и 750 тыс. уязвимостей. Все это было исследовано с целью выявления типичных (средних и медианных) значений плотности риска безопасности языков программирования.
При расчете показателей применялся еженедельный срез данных о количестве выявленных и неисправленных уязвимостей и объеме кода для98 команд разработки разного уровня зрелости и эффективности. При этом в расчете не использовались «сведения о командах с аномально большим количеством незакрытых уязвимостей, не меняющимся в течение наблюдения», отметили в AppSec Solution. Речь в данном случае о командах, которые не разбирают и не закрывают обнаруженные уязвимости.
Результаты исследования
Согласно результатам исследования, написанное на Java и C# программное обеспечение имеет самую высокую плотность риска – вплоть до 4,58 у C#. При этом общая плотность риска колеблется от 0,5 до 1,9, а ее среднее и медианное значение составляет 1,2. В то же время плотность риска для уязвимостей высокой и критической серьезности
уменьшается от 0,49 у C# до всего лишь 0,09 у Go. Среднее и медианное значение этого параметра – 0,22.
Также исследователи составили рейтинги языков программирования по суммарному объему кода (JavaScript и TypeScript – 40%, C# - 13%, SQL – 11%, Java – 10%, PHP – 9%) и по количеству неисправленных уязвимостей (C# – 52%, Java – 22%, JavaScript – 9%, Ruby – 8%, PHP – 6%).
«Мы проверили гипотезу о связи значений метрики «Плотность риска» и размера кодовой базы. Мы предположили, что плотность риска может быть ниже в меньшем по объему кода приложении (микросервисе), и выше в большом: возможно, чем меньше приложение, тем проще исправлять выявленные уязвимости и меньше плотность риска. Гипотеза не подтвердилась ни для плотности риска в целом, ни отдельно по практикам:
размер плотности риска не связан с объемом кода приложения/команды», – сказали CNews представители AppSec Solutions
Как результат, язык Java может стать отличным подспорьем для современных киберпреступников всех мастей. «Для создания вредоносного кода злоумышленникам проще пользоваться Java за счет большего количества зависимостей при программировании, – сказал CNews cтарший управляющий директор AppSec Solutions Антон Башарин. – Представьте себе две компании, в одной из которых трудится 50 человек, а в другой – 500. В какой из них у злоумышленников будет больше возможностей найти «слабое звено»? Примерно таков же принцип работает и с языками программирования. Java и C# доступны во множестве библиотек, где можно найти решения почти под любые задачи и в то же время чрезвычайно популярны у команд разработки».