Код на C/С++ оказался самым опасным по количеству уязвимостей

Код на C/С++ оказался самым опасным по количеству уязвимостей

Код на C/С++ оказался самым опасным по количеству уязвимостей

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

Среди таких источников была база National Vulnerability Database (NVD), а также трекеры проблем безопасности на GitHub.

В итоге были проанализированы проекты на следующих языках: C, Java, JavaScript, Python, Ruby, PHP, и C++. Именно они, по данным компании, являются самыми популярными языками за последние несколько лет.

Для многих экспертов не стало сюрпризом, что самым проблемным языком программирования оказался C. Он лидирует с большим отрывом — почти 50% проанализированных уязвимостей оказались в проектах, написанных на нем.

«Это не говорит о том, что C — наименее защищенный из всех проанализированных языков. Множество уязвимостей в проектах конкретно на этом языке можно объяснить несколькими факторами», — отмечет команда WhiteSource.

«Во-первых, язык C используется дольше всех остальных языков, которые участвовали в нашем исследовании. Следовательно, на нем написано гораздо больше кода. C также является одним из языков, которые стоят за такими крупными проектами, как OpenSSL и ядро Linux».

Открытый код на другом языке — C++ — удостоился «чести» занять первое место по количеству уязвимостей, обнаруженных за последние пять лет. А JavaScript столкнулся с постоянно растущим числом брешей за последние 10 лет.

А вот самым защищенным кодом, исходя из исследования WhiteSource, оказался код на Python.

Инструмент для Linux-гейминга оказался дырой с root-доступом

Инструмент InputPlumber, который используется для объединения устройств ввода в Linux-системах (в том числе в SteamOS), оказался небезопасным. Специалисты SUSE обнаружили в нём критические уязвимости, позволяющие локальному злоумышленнику перехватывать пользовательские сессии, подсовывать нажатия клавиш и даже читать файлы с правами root.

Речь идёт о двух уязвимостях — CVE-2025-66005 и CVE-2025-14338. Обе связаны с тем, что InputPlumber практически не проверял, кто именно обращается к его D-Bus-сервису. А это особенно неприятно, учитывая, что сервис работает с правами root.

Как выяснилось в ходе плановой проверки пакетов, ранние версии InputPlumber вообще не содержали никакой аутентификации клиентов.

«Первая версия InputPlumber, которую мы проверяли, полностью игнорировала аутентификацию, из-за чего мы сразу её забраковали», — пишут эксперты SUSE в отчёте SUSE.

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

Более того, даже при включённом Polkit обнаружилась состояние гонки (race condition) — классическая проблема, связанная с небезопасным использованием unix-process в Polkit (CVE-2025-14338).

По сути, любой пользователь системы получал доступ ко всем D-Bus-методам InputPlumber. А это открывало довольно опасные вектора атаки.

Например, через метод CreateTargetDevice можно было создать виртуальную клавиатуру и начать «нажимать» клавиши в чужой активной сессии — будь то рабочий стол или экран входа в систему.

Проще говоря, один пользователь мог незаметно управлять вводом другого и потенциально добиться выполнения произвольного кода от его имени.

Другой метод — CreateCompositeDevice — позволял использовать конфигурационные файлы для сторонних целей. С его помощью исследователи смогли определить существование привилегированных файлов и даже частично утёкшие данные, включая содержимое /root/.bash_history, которое «подсвечивалось» через сообщения об ошибках.

После раскрытия информации разработчики InputPlumber устранили проблемы. В версии v0.69.0 Polkit-аутентификация включена по умолчанию, а небезопасный механизм проверки заменён на корректный.

Обновления уже добрались и до SteamOS — компания выпустила новые образы SteamOS 3.7.20, в которых уязвимости закрыты.

Пользователям, у которых InputPlumber установлен в системе, настоятельно рекомендуется обновиться как можно скорее. Даже если вы используете его «только для игр», root-сервисы без нормальной аутентификации — это всегда плохая идея.

RSS: Новости на портале Anti-Malware.ru