Код на 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.

Критическая уязвимость в TLP позволяет обойти защиту Linux

В популярной утилите TLP, которую многие владельцы ноутбуков на Linux используют для управления энергопотреблением, обнаружили критическую уязвимость. Причём проблема нашлась во время обычной проверки пакета командой SUSE Security Team и располагается во вполне штатном коде.

Брешь получила идентификатор CVE-2025-67859 и затрагивает версию TLP 1.9.0, где появился новый profiles daemon.

Этот демон работает с root-правами и управляет профилями питания через D-Bus. Задумка хорошая, но реализация подвела: в механизме аутентификации Polkit нашлась логическая ошибка, которая фактически позволяет обойти проверку прав.

Как объясняют исследователи, демон должен был строго проверять, кто именно отправляет команды. Но из-за ошибки любой локальный пользователь мог взаимодействовать с ним без должной аутентификации — а значит, менять системные настройки питания от имени root.

На этом сюрпризы не закончились. В ходе анализа специалисты SUSE нашли ещё несколько проблем, уже связанных с исчерпанием ресурсов. В частности, механизм profile hold, который позволяет временно «зафиксировать» профиль питания, оказался совершенно без валидации. Локальный пользователь мог создавать неограниченное количество таких блокировок, причём без прав администратора.

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

Любопытно, что SUSE вспомнила похожую историю с демоном управления питанием в GNOME: аналогичную проблему находили ещё несколько лет назад. Отдельно исследователи отметили вопросы к механизму «куки», которыми отслеживаются profile hold. Формально речь шла о предсказуемости значений, но в сочетании с отсутствием лимитов это лишь расширяло поверхность атаки.

К счастью, реакция была быстрой. SUSE сообщила об уязвимостях разработчикам ещё в декабре, и в версии TLP 1.9.1 проблема уже закрыта. В частности, число одновременных profile hold теперь жёстко ограничено числом 16, что убирает риск истощения ресурсов.

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